_ZN7llvm_ks7APFloat6getInfERKNS_12fltSemanticsEb:
  225|    602|  static APFloat getInf(const fltSemantics &Sem, bool Negative = false) {
  226|    602|    APFloat Val(Sem, uninitialized);
  227|    602|    Val.makeInf(Negative);
  228|    602|    return Val;
  229|    602|  }
_ZN7llvm_ks7APFloat6getNaNERKNS_12fltSemanticsEbj:
  237|    286|                        unsigned type = 0) {
  238|    286|    if (type) {
  ------------------
  |  Branch (238:9): [True: 286, False: 0]
  ------------------
  239|    286|      APInt fill(64, type);
  240|    286|      return getQNaN(Sem, Negative, &fill);
  241|    286|    } else {
  242|      0|      return getQNaN(Sem, Negative, nullptr);
  243|      0|    }
  244|    286|  }
_ZN7llvm_ks7APFloat7getQNaNERKNS_12fltSemanticsEbPKNS_5APIntE:
  248|    286|                         const APInt *payload = nullptr) {
  249|    286|    return makeNaN(Sem, false, Negative, payload);
  250|    286|  }
_ZNK7llvm_ks7APFloat12needsCleanupEv:
  208|   194k|  bool needsCleanup() const { return partCount() > 1; }
_ZN7llvm_ks7APFloat7getZeroERKNS_12fltSemanticsEb:
  216|  60.6k|  static APFloat getZero(const fltSemantics &Sem, bool Negative = false) {
  217|  60.6k|    APFloat Val(Sem, uninitialized);
  218|  60.6k|    Val.makeZero(Negative);
  219|  60.6k|    return Val;
  220|  60.6k|  }
_ZNK7llvm_ks7APFloat8isFiniteEv:
  414|   319k|  bool isFinite() const { return !isNaN() && !isInfinity(); }
  ------------------
  |  Branch (414:34): [True: 319k, False: 287]
  |  Branch (414:46): [True: 317k, False: 2.11k]
  ------------------
_ZNK7llvm_ks7APFloat6isZeroEv:
  417|   317k|  bool isZero() const { return category == fcZero; }
_ZNK7llvm_ks7APFloat10isInfinityEv:
  424|   319k|  bool isInfinity() const { return category == fcInfinity; }
_ZNK7llvm_ks7APFloat5isNaNEv:
  427|   319k|  bool isNaN() const { return category == fcNaN; }
_ZNK7llvm_ks7APFloat15isFiniteNonZeroEv:
  440|   319k|  bool isFiniteNonZero() const { return isFinite() && !isZero(); }
  ------------------
  |  Branch (440:41): [True: 317k, False: 2.40k]
  |  Branch (440:55): [True: 312k, False: 4.84k]
  ------------------

_ZN7llvm_ks5APIntC2EPmj:
   98|  1.56M|  APInt(uint64_t *val, unsigned bits) : BitWidth(bits), pVal(val) {}
_ZNK7llvm_ks5APInt12isSingleWordEv:
  103|  72.7M|  bool isSingleWord() const { return BitWidth <= APINT_BITS_PER_WORD; }
_ZN7llvm_ks5APInt15clearUnusedBitsEv:
  136|  18.0M|  APInt &clearUnusedBits() {
  137|       |    // Compute how many bits are used in the final word
  138|  18.0M|    unsigned wordBits = BitWidth % APINT_BITS_PER_WORD;
  139|  18.0M|    if (wordBits == 0)
  ------------------
  |  Branch (139:9): [True: 17.9M, False: 175k]
  ------------------
  140|       |      // If all bits are used, we want to leave the value alone. This also
  141|       |      // avoids the undefined behavior of >> when the shift is the same size as
  142|       |      // the word size (64).
  143|  17.9M|      return *this;
  144|       |
  145|       |    // Mask out the high bits.
  146|   175k|    uint64_t mask = ~uint64_t(0ULL) >> (APINT_BITS_PER_WORD - wordBits);
  147|   175k|    if (isSingleWord())
  ------------------
  |  Branch (147:9): [True: 10.0k, False: 165k]
  ------------------
  148|  10.0k|      VAL &= mask;
  149|   165k|    else
  150|   165k|      pVal[getNumWords() - 1] &= mask;
  151|   175k|    return *this;
  152|  18.0M|  }
_ZN7llvm_ks5APIntC2Ejmb:
  237|  15.8M|      : BitWidth(numBits), VAL(0) {
  238|  15.8M|    assert(BitWidth && "bitwidth too small");
  ------------------
  |  Branch (238:5): [True: 15.8M, False: 0]
  |  Branch (238:5): [True: 15.8M, Folded]
  |  Branch (238:5): [True: 15.8M, False: 0]
  ------------------
  239|  15.8M|    if (isSingleWord())
  ------------------
  |  Branch (239:9): [True: 15.0M, False: 799k]
  ------------------
  240|  15.0M|      VAL = val;
  241|   799k|    else
  242|   799k|      initSlowCase(numBits, val, isSigned);
  243|  15.8M|    clearUnusedBits();
  244|  15.8M|  }
_ZN7llvm_ks5APIntC2ERKS0_:
  279|  7.68M|  APInt(const APInt &that) : BitWidth(that.BitWidth), VAL(0) {
  280|  7.68M|    if (isSingleWord())
  ------------------
  |  Branch (280:9): [True: 6.35M, False: 1.32M]
  ------------------
  281|  6.35M|      VAL = that.VAL;
  282|  1.32M|    else
  283|  1.32M|      initSlowCase(that);
  284|  7.68M|  }
_ZN7llvm_ks5APIntC2EOS0_:
  287|  15.5M|  APInt(APInt &&that) : BitWidth(that.BitWidth), VAL(that.VAL) {
  288|  15.5M|    that.BitWidth = 0;
  289|  15.5M|  }
_ZN7llvm_ks5APIntD2Ev:
  292|  42.0M|  ~APInt() {
  293|  42.0M|    if (needsCleanup())
  ------------------
  |  Branch (293:9): [True: 1.97M, False: 40.0M]
  ------------------
  294|  1.97M|      delete[] pVal;
  295|  42.0M|  }
_ZN7llvm_ks5APIntC2Ev:
  302|  1.30M|  explicit APInt() : BitWidth(1), VAL(0) {}
_ZNK7llvm_ks5APInt12needsCleanupEv:
  305|  42.0M|  bool needsCleanup() const { return !isSingleWord(); }
_ZNK7llvm_ks5APInt6isIntNEj:
  373|   798k|  bool isIntN(unsigned N) const {
  374|   798k|    assert(N && "N == 0 ???");
  ------------------
  |  Branch (374:5): [True: 798k, False: 0]
  |  Branch (374:5): [True: 798k, Folded]
  |  Branch (374:5): [True: 798k, False: 0]
  ------------------
  375|   798k|    return getActiveBits() <= N;
  376|   798k|  }
_ZNK7llvm_ks5APInt15getLimitedValueEm:
  405|  8.61k|  uint64_t getLimitedValue(uint64_t Limit = ~0ULL) const {
  406|  8.61k|    return (getActiveBits() > 64 || getZExtValue() > Limit) ? Limit
  ------------------
  |  Branch (406:13): [True: 0, False: 8.61k]
  |  Branch (406:37): [True: 0, False: 8.61k]
  ------------------
  407|  8.61k|                                                            : getZExtValue();
  408|  8.61k|  }
_ZNK7llvm_ks5APInt10getRawDataEv:
  574|  6.33k|  const uint64_t *getRawData() const {
  575|  6.33k|    if (isSingleWord())
  ------------------
  |  Branch (575:9): [True: 458, False: 5.87k]
  ------------------
  576|    458|      return &VAL;
  577|  5.87k|    return &pVal[0];
  578|  6.33k|  }
_ZN7llvm_ks5APIntaSERKS0_:
  652|  35.7k|  APInt &operator=(const APInt &RHS) {
  653|       |    // If the bitwidths are the same, we can avoid mucking with memory
  654|  35.7k|    if (isSingleWord() && RHS.isSingleWord()) {
  ------------------
  |  Branch (654:9): [True: 35.0k, False: 695]
  |  Branch (654:27): [True: 32.7k, False: 2.27k]
  ------------------
  655|  32.7k|      VAL = RHS.VAL;
  656|  32.7k|      BitWidth = RHS.BitWidth;
  657|  32.7k|      return clearUnusedBits();
  658|  32.7k|    }
  659|       |
  660|  2.97k|    return AssignSlowCase(RHS);
  661|  35.7k|  }
_ZN7llvm_ks5APIntaSEOS0_:
  664|  1.72M|  APInt &operator=(APInt &&that) {
  665|  1.72M|    if (!isSingleWord()) {
  ------------------
  |  Branch (665:9): [True: 1.72M, False: 0]
  ------------------
  666|       |      // The MSVC STL shipped in 2013 requires that self move assignment be a
  667|       |      // no-op.  Otherwise algorithms like stable_sort will produce answers
  668|       |      // where half of the output is left in a moved-from state.
  669|  1.72M|      if (this == &that)
  ------------------
  |  Branch (669:11): [True: 0, False: 1.72M]
  ------------------
  670|      0|        return *this;
  671|  1.72M|      delete[] pVal;
  672|  1.72M|    }
  673|       |
  674|       |    // Use memcpy so that type based alias analysis sees both VAL and pVal
  675|       |    // as modified.
  676|  1.72M|    memcpy(&VAL, &that.VAL, sizeof(uint64_t));
  677|       |
  678|       |    // If 'this == &that', avoid zeroing our own bitwidth by storing to 'that'
  679|       |    // first.
  680|  1.72M|    unsigned ThatBitWidth = that.BitWidth;
  681|  1.72M|    that.BitWidth = 0;
  682|  1.72M|    BitWidth = ThatBitWidth;
  683|       |
  684|  1.72M|    return *this;
  685|  1.72M|  }
_ZN7llvm_ks5APIntoREm:
  717|  1.56M|  APInt &operator|=(uint64_t RHS) {
  718|  1.56M|    if (isSingleWord()) {
  ------------------
  |  Branch (718:9): [True: 0, False: 1.56M]
  ------------------
  719|      0|      VAL |= RHS;
  720|      0|      clearUnusedBits();
  721|  1.56M|    } else {
  722|  1.56M|      pVal[0] |= RHS;
  723|  1.56M|    }
  724|  1.56M|    return *this;
  725|  1.56M|  }
_ZN7llvm_ks5APIntlSEj:
  761|  1.56M|  APInt &operator<<=(unsigned shiftAmt) {
  762|  1.56M|    *this = shl(shiftAmt);
  763|  1.56M|    return *this;
  764|  1.56M|  }
_ZNK7llvm_ks5APInt3shlEj:
  869|  1.56M|  APInt LLVM_ATTRIBUTE_UNUSED_RESULT shl(unsigned shiftAmt) const {
  870|  1.56M|    assert(shiftAmt <= BitWidth && "Invalid shift amount");
  ------------------
  |  Branch (870:5): [True: 1.56M, False: 0]
  |  Branch (870:5): [True: 1.56M, Folded]
  |  Branch (870:5): [True: 1.56M, False: 0]
  ------------------
  871|  1.56M|    if (isSingleWord()) {
  ------------------
  |  Branch (871:9): [True: 0, False: 1.56M]
  ------------------
  872|      0|      if (shiftAmt >= BitWidth)
  ------------------
  |  Branch (872:11): [True: 0, False: 0]
  ------------------
  873|      0|        return APInt(BitWidth, 0); // avoid undefined shift results
  874|      0|      return APInt(BitWidth, VAL << shiftAmt);
  875|      0|    }
  876|  1.56M|    return shlSlowCase(shiftAmt);
  877|  1.56M|  }
_ZNK7llvm_ks5APInt11getBitWidthEv:
 1274|  1.29M|  unsigned getBitWidth() const { return BitWidth; }
_ZNK7llvm_ks5APInt11getNumWordsEv:
 1281|  18.6M|  unsigned getNumWords() const { return getNumWords(BitWidth); }
_ZN7llvm_ks5APInt11getNumWordsEj:
 1289|  18.6M|  static unsigned getNumWords(unsigned BitWidth) {
 1290|  18.6M|    return ((uint64_t)BitWidth + APINT_BITS_PER_WORD - 1) / APINT_BITS_PER_WORD;
 1291|  18.6M|  }
_ZNK7llvm_ks5APInt13getActiveBitsEv:
 1298|  1.01M|  unsigned getActiveBits() const { return BitWidth - countLeadingZeros(); }
_ZNK7llvm_ks5APInt12getZExtValueEv:
 1328|   394k|  uint64_t getZExtValue() const {
 1329|   394k|    if (isSingleWord())
  ------------------
  |  Branch (1329:9): [True: 190k, False: 204k]
  ------------------
 1330|   190k|      return VAL;
 1331|   394k|    assert(getActiveBits() <= 64 && "Too many bits for uint64_t");
  ------------------
  |  Branch (1331:5): [True: 204k, False: 0]
  |  Branch (1331:5): [True: 204k, Folded]
  |  Branch (1331:5): [True: 204k, False: 0]
  ------------------
 1332|   204k|    return pVal[0];
 1333|   204k|  }
_ZNK7llvm_ks5APInt12getSExtValueEv:
 1340|    323|  int64_t getSExtValue() const {
 1341|    323|    if (isSingleWord())
  ------------------
  |  Branch (1341:9): [True: 323, False: 0]
  ------------------
 1342|    323|      return int64_t(VAL << (APINT_BITS_PER_WORD - BitWidth)) >>
 1343|    323|             (APINT_BITS_PER_WORD - BitWidth);
 1344|    323|    assert(getMinSignedBits() <= 64 && "Too many bits for int64_t");
  ------------------
  |  Branch (1344:5): [True: 0, False: 0]
  |  Branch (1344:5): [True: 0, Folded]
  |  Branch (1344:5): [True: 0, False: 0]
  ------------------
 1345|      0|    return int64_t(pVal[0]);
 1346|      0|  }
_ZNK7llvm_ks5APInt17countLeadingZerosEv:
 1362|  1.01M|  unsigned countLeadingZeros() const {
 1363|  1.01M|    if (isSingleWord()) {
  ------------------
  |  Branch (1363:9): [True: 166k, False: 845k]
  ------------------
 1364|   166k|      unsigned unusedBits = APINT_BITS_PER_WORD - BitWidth;
 1365|   166k|      return llvm_ks::countLeadingZeros(VAL) - unusedBits;
 1366|   166k|    }
 1367|   845k|    return countLeadingZerosSlowCase();
 1368|  1.01M|  }
_ZN7llvm_ks5APInt11floatToBitsEf:
 1508|    172|  static APInt LLVM_ATTRIBUTE_UNUSED_RESULT floatToBits(float V) {
 1509|    172|    union {
 1510|    172|      unsigned I;
 1511|    172|      float F;
 1512|    172|    } T;
 1513|    172|    T.F = V;
 1514|       |    return APInt(sizeof T * CHAR_BIT, T.I);
 1515|    172|  }
_ZN7llvm_ks8APIntOps4lshrERKNS_5APIntEj:
 1841|    586|inline APInt lshr(const APInt &LHS, unsigned shiftAmt) {
 1842|    586|  return LHS.lshr(shiftAmt);
 1843|    586|}
_ZN7llvm_ks8APIntOps3shlERKNS_5APIntEj:
 1848|    293|inline APInt shl(const APInt &LHS, unsigned shiftAmt) {
 1849|    293|  return LHS.shl(shiftAmt);
 1850|    293|}

_ZNK7llvm_ks8ArrayRefINS_18SubtargetFeatureKVEE5beginEv:
  123|  1.62M|    iterator begin() const { return Data; }
_ZNK7llvm_ks8ArrayRefINS_18SubtargetFeatureKVEE3endEv:
  124|  1.71M|    iterator end() const { return Data + Length; }
_ZN7llvm_ks8ArrayRefINS_7SMRangeEEC2ENS_8NoneTypeE:
   54|  80.5k|    /*implicit*/ ArrayRef(NoneType) : Data(nullptr), Length(0) {}
_ZN7llvm_ks8ArrayRefINS_7SMFixItEEC2ENS_8NoneTypeE:
   54|  82.8k|    /*implicit*/ ArrayRef(NoneType) : Data(nullptr), Length(0) {}
_ZN7llvm_ks8ArrayRefINSt3__14pairIjjEEEC2INS1_9allocatorIS3_EEEERKNS1_6vectorIS3_T_EE:
   79|  2.31k|      : Data(Vec.data()), Length(Vec.size()) {}
_ZN7llvm_ks15MutableArrayRefINS_8AsmTokenEEC2ERS1_:
  233|  15.4k|    /*implicit*/ MutableArrayRef(T &OneElt) : ArrayRef<T>(OneElt) {}
_ZN7llvm_ks8ArrayRefINS_8AsmTokenEEC2ERKS1_:
   58|  15.4k|      : Data(&OneElt), Length(1) {}
AsmParser.cpp:_ZNK7llvm_ks8ArrayRefIN12_GLOBAL__N_119MCAsmMacroParameterEE4sizeEv:
  135|  42.4M|    size_t size() const { return Length; }
AsmParser.cpp:_ZNK7llvm_ks8ArrayRefIN12_GLOBAL__N_119MCAsmMacroParameterEE4backEv:
  144|  51.0k|    const T &back() const {
  145|  51.0k|      assert(!empty());
  ------------------
  |  Branch (145:7): [True: 51.0k, False: 0]
  ------------------
  146|  51.0k|      return Data[Length-1];
  147|  51.0k|    }
AsmParser.cpp:_ZNK7llvm_ks8ArrayRefIN12_GLOBAL__N_119MCAsmMacroParameterEE5emptyEv:
  130|  51.0k|    bool empty() const { return Length == 0; }
_ZNK7llvm_ks8ArrayRefINSt3__16vectorINS_8AsmTokenENS1_9allocatorIS3_EEEEE4sizeEv:
  135|   151k|    size_t size() const { return Length; }
_ZNK7llvm_ks8ArrayRefINSt3__16vectorINS_8AsmTokenENS1_9allocatorIS3_EEEEEixEm:
  185|  1.97k|    const T &operator[](size_t Index) const {
  186|  1.97k|      assert(Index < Length && "Invalid index!");
  ------------------
  |  Branch (186:7): [True: 1.97k, False: 0]
  |  Branch (186:7): [True: 1.97k, Folded]
  |  Branch (186:7): [True: 1.97k, False: 0]
  ------------------
  187|  1.97k|      return Data[Index];
  188|  1.97k|    }
AsmParser.cpp:_ZNK7llvm_ks8ArrayRefIN12_GLOBAL__N_119MCAsmMacroParameterEEixEm:
  185|  30.3k|    const T &operator[](size_t Index) const {
  186|  30.3k|      assert(Index < Length && "Invalid index!");
  ------------------
  |  Branch (186:7): [True: 30.3k, False: 0]
  |  Branch (186:7): [True: 30.3k, Folded]
  |  Branch (186:7): [True: 30.3k, False: 0]
  ------------------
  187|  30.3k|      return Data[Index];
  188|  30.3k|    }
AsmParser.cpp:_ZN7llvm_ks8ArrayRefIN12_GLOBAL__N_119MCAsmMacroParameterEEC2INSt3__19allocatorIS2_EEEERKNS5_6vectorIS2_T_EE:
   79|  48.8k|      : Data(Vec.data()), Length(Vec.size()) {}
_ZN7llvm_ks8ArrayRefINSt3__16vectorINS_8AsmTokenENS1_9allocatorIS3_EEEEEC2INS4_IS6_EEEERKNS2_IS6_T_EE:
   79|  48.2k|      : Data(Vec.data()), Length(Vec.size()) {}
AsmParser.cpp:_ZN7llvm_ks8ArrayRefIN12_GLOBAL__N_119MCAsmMacroParameterEEC2ENS_8NoneTypeE:
   54|  42.3M|    /*implicit*/ ArrayRef(NoneType) : Data(nullptr), Length(0) {}
_ZN7llvm_ks8ArrayRefINSt3__16vectorINS_8AsmTokenENS1_9allocatorIS3_EEEEEC2ENS_8NoneTypeE:
   54|  42.3M|    /*implicit*/ ArrayRef(NoneType) : Data(nullptr), Length(0) {}
AsmParser.cpp:_ZN7llvm_ks8ArrayRefIN12_GLOBAL__N_119MCAsmMacroParameterEEC2ERKS2_:
   58|  49.5k|      : Data(&OneElt), Length(1) {}
_ZN7llvm_ks8ArrayRefINSt3__16vectorINS_8AsmTokenENS1_9allocatorIS3_EEEEEC2ERKS6_:
   58|  49.5k|      : Data(&OneElt), Length(1) {}
_ZN7llvm_ks8ArrayRefINS_7SMRangeEEC2ERKS1_:
   58|     10|      : Data(&OneElt), Length(1) {}
_ZNK7llvm_ks8ArrayRefINS_7SMFixItEE5emptyEv:
  130|  72.8k|    bool empty() const { return Length == 0; }
_ZN7llvm_ks8ArrayRefINS_7SMFixItEEC2IvEERKNS_25SmallVectorTemplateCommonIS1_T_EE:
   73|  72.8k|      : Data(Vec.data()), Length(Vec.size()) {
   74|  72.8k|    }
_ZNK7llvm_ks8ArrayRefINS_7SMRangeEE4sizeEv:
  135|  80.5k|    size_t size() const { return Length; }
_ZNK7llvm_ks8ArrayRefINS_7SMRangeEEixEm:
  185|     10|    const T &operator[](size_t Index) const {
  186|     10|      assert(Index < Length && "Invalid index!");
  ------------------
  |  Branch (186:7): [True: 10, False: 0]
  |  Branch (186:7): [True: 10, Folded]
  |  Branch (186:7): [True: 10, False: 0]
  ------------------
  187|     10|      return Data[Index];
  188|     10|    }
_ZN7llvm_ks8ArrayRefINSt3__14pairIjjEEEC2IvEERKNS_25SmallVectorTemplateCommonIS3_T_EE:
   73|  80.5k|      : Data(Vec.data()), Length(Vec.size()) {
   74|  80.5k|    }
_ZNK7llvm_ks8ArrayRefINSt3__14pairIjjEEE3vecEv:
  193|  82.8k|    std::vector<T> vec() const {
  194|  82.8k|      return std::vector<T>(Data, Data+Length);
  195|  82.8k|    }
_ZNK7llvm_ks8ArrayRefINS_7SMFixItEE5beginEv:
  123|  82.8k|    iterator begin() const { return Data; }
_ZNK7llvm_ks8ArrayRefINS_7SMFixItEE3endEv:
  124|  82.8k|    iterator end() const { return Data + Length; }
_ZN7llvm_ks12makeArrayRefIcEENS_8ArrayRefIT_EEPKS2_m:
  313|  72.8k|  ArrayRef<T> makeArrayRef(const T *data, size_t length) {
  314|  72.8k|    return ArrayRef<T>(data, length);
  315|  72.8k|  }
_ZN7llvm_ks8ArrayRefIcEC2EPKcm:
   62|  72.8k|      : Data(data), Length(length) {}
_ZNK7llvm_ks8ArrayRefIcE4sizeEv:
  135|  24.6k|    size_t size() const { return Length; }
_ZN7llvm_ks8ArrayRefINS_18SubtargetFeatureKVEEC2ILm104EEERAT__KS1_:
   84|  41.9k|      : Data(Arr), Length(N) {}
_ZN7llvm_ks8ArrayRefINS_18SubtargetFeatureKVEEC2ILm65EEERAT__KS1_:
   84|  41.9k|      : Data(Arr), Length(N) {}
_ZN7llvm_ks8ArrayRefINS_7MCFixupEEC2Ev:
   51|  10.7k|    /*implicit*/ ArrayRef() : Data(nullptr), Length(0) {}
_ZN7llvm_ks15MutableArrayRefIcEC2Ev:
  227|  10.7k|    /*implicit*/ MutableArrayRef() : ArrayRef<T>() {}
_ZN7llvm_ks8ArrayRefIcEC2Ev:
   51|  10.7k|    /*implicit*/ ArrayRef() : Data(nullptr), Length(0) {}
_ZN7llvm_ks8ArrayRefINS_7MCFixupEEC2IvEERKNS_25SmallVectorTemplateCommonIS1_T_EE:
   73|  10.7k|      : Data(Vec.data()), Length(Vec.size()) {
   74|  10.7k|    }
_ZN7llvm_ks15MutableArrayRefIcEC2ERNS_15SmallVectorImplIcEE:
  244|  10.7k|    : ArrayRef<T>(Vec) {}
_ZN7llvm_ks8ArrayRefIcEC2IvEERKNS_25SmallVectorTemplateCommonIcT_EE:
   73|  10.7k|      : Data(Vec.data()), Length(Vec.size()) {
   74|  10.7k|    }
_ZNK7llvm_ks8ArrayRefINS_7MCFixupEE5beginEv:
  123|  10.7k|    iterator begin() const { return Data; }
_ZNK7llvm_ks8ArrayRefINS_7MCFixupEE3endEv:
  124|  10.7k|    iterator end() const { return Data + Length; }
_ZNK7llvm_ks15MutableArrayRefIcE4dataEv:
  255|  24.6k|    T *data() const { return const_cast<T*>(ArrayRef<T>::data()); }
_ZNK7llvm_ks8ArrayRefIcE4dataEv:
  132|  24.6k|    const T *data() const { return Data; }
_ZNK7llvm_ks8ArrayRefINS_8AsmTokenEE4sizeEv:
  135|  46.3k|    size_t size() const { return Length; }
_ZNK7llvm_ks15MutableArrayRefINS_8AsmTokenEEixEm:
  296|  15.4k|    T &operator[](size_t Index) const {
  297|  15.4k|      assert(Index < this->size() && "Invalid index!");
  ------------------
  |  Branch (297:7): [True: 15.4k, False: 0]
  |  Branch (297:7): [True: 15.4k, Folded]
  |  Branch (297:7): [True: 15.4k, False: 0]
  ------------------
  298|  15.4k|      return data()[Index];
  299|  15.4k|    }
_ZNK7llvm_ks15MutableArrayRefINS_8AsmTokenEE4dataEv:
  255|  15.4k|    T *data() const { return const_cast<T*>(ArrayRef<T>::data()); }
_ZNK7llvm_ks8ArrayRefINS_8AsmTokenEE4dataEv:
  132|  15.4k|    const T *data() const { return Data; }
_ZNK7llvm_ks8ArrayRefINS_18SubtargetFeatureKVEE5emptyEv:
  130|   129k|    bool empty() const { return Length == 0; }

_ZN7llvm_ks8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEEEjiS3_S6_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 20.9k, False: 0]
  ------------------
  266|  20.9k|      return;
  267|       |
  268|      0|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|      0|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 0, False: 0]
  ------------------
  270|      0|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 0, False: 0]
  ------------------
  271|      0|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 0, False: 0]
  ------------------
  272|      0|        P->getSecond().~ValueT();
  273|      0|      P->getFirst().~KeyT();
  274|      0|    }
  275|      0|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEEEjiS3_S6_E13getNumBucketsEv:
  381|  20.9k|  unsigned getNumBuckets() const {
  382|  20.9k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  20.9k|  }
_ZNK7llvm_ks8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEE13getNumBucketsEv:
  674|  20.9k|  unsigned getNumBuckets() const {
  675|  20.9k|    return NumBuckets;
  676|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E6insertERKNSt3__14pairIS3_jEE:
  169|  1.59k|  std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
  170|  1.59k|    BucketT *TheBucket;
  171|  1.59k|    if (LookupBucketFor(KV.first, TheBucket))
  ------------------
  |  Branch (171:9): [True: 1.47k, False: 115]
  ------------------
  172|  1.47k|      return std::make_pair(iterator(TheBucket, getBucketsEnd(), *this, true),
  173|  1.47k|                            false); // Already in map.
  174|       |
  175|       |    // Otherwise, insert the new element.
  176|    115|    TheBucket = InsertIntoBucket(KV.first, KV.second, TheBucket);
  177|    115|    return std::make_pair(iterator(TheBucket, getBucketsEnd(), *this, true),
  178|    115|                          true);
  179|  1.59k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_:
  519|  2.95k|  bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  520|  2.95k|    const BucketT *ConstFoundBucket;
  521|  2.95k|    bool Result = const_cast<const DenseMapBase *>(this)
  522|  2.95k|      ->LookupBucketFor(Val, ConstFoundBucket);
  523|  2.95k|    FoundBucket = const_cast<BucketT *>(ConstFoundBucket);
  524|  2.95k|    return Result;
  525|  2.95k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E15LookupBucketForIS3_EEbRKT_RPKS8_:
  469|  2.95k|                       const BucketT *&FoundBucket) const {
  470|  2.95k|    const BucketT *BucketsPtr = getBuckets();
  471|  2.95k|    const unsigned NumBuckets = getNumBuckets();
  472|       |
  473|  2.95k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (473:9): [True: 1.34k, False: 1.61k]
  ------------------
  474|  1.34k|      FoundBucket = nullptr;
  475|  1.34k|      return false;
  476|  1.34k|    }
  477|       |
  478|       |    // FoundTombstone - Keep track of whether we find a tombstone while probing.
  479|  1.61k|    const BucketT *FoundTombstone = nullptr;
  480|  1.61k|    const KeyT EmptyKey = getEmptyKey();
  481|  1.61k|    const KeyT TombstoneKey = getTombstoneKey();
  482|  1.61k|    assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
  ------------------
  |  Branch (482:5): [True: 1.61k, False: 0]
  |  Branch (482:5): [True: 1.61k, False: 0]
  |  Branch (482:5): [True: 1.61k, Folded]
  |  Branch (482:5): [True: 1.61k, False: 0]
  ------------------
  483|  1.61k|           !KeyInfoT::isEqual(Val, TombstoneKey) &&
  484|  1.61k|           "Empty/Tombstone value shouldn't be inserted into map!");
  485|       |
  486|  1.61k|    unsigned BucketNo = getHashValue(Val) & (NumBuckets-1);
  487|  1.61k|    unsigned ProbeAmt = 1;
  488|  1.61k|    while (1) {
  ------------------
  |  Branch (488:12): [True: 1.61k, Folded]
  ------------------
  489|  1.61k|      const BucketT *ThisBucket = BucketsPtr + BucketNo;
  490|       |      // Found Val's bucket?  If so, return it.
  491|  1.61k|      if (LLVM_LIKELY(KeyInfoT::isEqual(Val, ThisBucket->getFirst()))) {
  ------------------
  |  |  171|  1.61k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 1.49k, False: 115]
  |  |  ------------------
  ------------------
  492|  1.49k|        FoundBucket = ThisBucket;
  493|  1.49k|        return true;
  494|  1.49k|      }
  495|       |
  496|       |      // If we found an empty bucket, the key doesn't exist in the set.
  497|       |      // Insert it and return the default value.
  498|    115|      if (LLVM_LIKELY(KeyInfoT::isEqual(ThisBucket->getFirst(), EmptyKey))) {
  ------------------
  |  |  171|    115|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 115, False: 0]
  |  |  ------------------
  ------------------
  499|       |        // If we've already seen a tombstone while probing, fill it in instead
  500|       |        // of the empty bucket we eventually probed to.
  501|    115|        FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
  ------------------
  |  Branch (501:23): [True: 0, False: 115]
  ------------------
  502|    115|        return false;
  503|    115|      }
  504|       |
  505|       |      // If this is a tombstone, remember it.  If Val ends up not in the map, we
  506|       |      // prefer to return it than something that would require more probing.
  507|      0|      if (KeyInfoT::isEqual(ThisBucket->getFirst(), TombstoneKey) &&
  ------------------
  |  Branch (507:11): [True: 0, False: 0]
  ------------------
  508|      0|          !FoundTombstone)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|        FoundTombstone = ThisBucket;  // Remember the first tombstone found.
  510|       |
  511|       |      // Otherwise, it's a hash collision or a tombstone, continue quadratic
  512|       |      // probing.
  513|      0|      BucketNo += ProbeAmt++;
  514|      0|      BucketNo &= (NumBuckets-1);
  515|      0|    }
  516|  1.61k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E10getBucketsEv:
  375|  2.95k|  const BucketT *getBuckets() const {
  376|  2.95k|    return static_cast<const DerivedT *>(this)->getBuckets();
  377|  2.95k|  }
_ZNK7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE10getBucketsEv:
  670|  9.99k|  BucketT *getBuckets() const {
  671|  9.99k|    return Buckets;
  672|  9.99k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E13getNumBucketsEv:
  381|  31.2k|  unsigned getNumBuckets() const {
  382|  31.2k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  31.2k|  }
_ZNK7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE13getNumBucketsEv:
  674|  31.2k|  unsigned getNumBuckets() const {
  675|  31.2k|    return NumBuckets;
  676|  31.2k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E11getEmptyKeyEv:
  343|  1.95k|  static const KeyT getEmptyKey() {
  344|  1.95k|    return KeyInfoT::getEmptyKey();
  345|  1.95k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E15getTombstoneKeyEv:
  346|  1.72k|  static const KeyT getTombstoneKey() {
  347|  1.72k|    return KeyInfoT::getTombstoneKey();
  348|  1.72k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E12getHashValueERKS3_:
  336|  1.61k|  static unsigned getHashValue(const KeyT &Val) {
  337|  1.61k|    return KeyInfoT::getHashValue(Val);
  338|  1.61k|  }
_ZNK7llvm_ks6detail12DenseMapPairIPNS_9MCSectionEjE8getFirstEv:
   41|  1.72k|  const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E13getBucketsEndEv:
  384|  6.80k|  BucketT *getBucketsEnd() {
  385|  6.80k|    return getBuckets() + getNumBuckets();
  386|  6.80k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E10getBucketsEv:
  378|  7.03k|  BucketT *getBuckets() {
  379|  7.03k|    return static_cast<DerivedT *>(this)->getBuckets();
  380|  7.03k|  }
_ZN7llvm_ks6detail12DenseMapPairIPNS_9MCSectionEjE8getFirstEv:
   40|  22.4k|  KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E16InsertIntoBucketERKS3_RKjPS8_:
  401|    115|                            BucketT *TheBucket) {
  402|    115|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  403|       |
  404|    115|    TheBucket->getFirst() = Key;
  405|    115|    ::new (&TheBucket->getSecond()) ValueT(Value);
  406|    115|    return TheBucket;
  407|    115|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E20InsertIntoBucketImplERKS3_PS8_:
  426|    115|  BucketT *InsertIntoBucketImpl(const KeyT &Key, BucketT *TheBucket) {
  427|    115|    incrementEpoch();
  428|       |
  429|       |    // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
  430|       |    // the buckets are empty (meaning that many are filled with tombstones),
  431|       |    // grow the table.
  432|       |    //
  433|       |    // The later case is tricky.  For example, if we had one empty bucket with
  434|       |    // tons of tombstones, failing lookups (e.g. for insertion) would have to
  435|       |    // probe almost the entire table until it found the empty bucket.  If the
  436|       |    // table completely filled with tombstones, no lookup would ever succeed,
  437|       |    // causing infinite loops in lookup.
  438|    115|    unsigned NewNumEntries = getNumEntries() + 1;
  439|    115|    unsigned NumBuckets = getNumBuckets();
  440|    115|    if (LLVM_UNLIKELY(NewNumEntries * 4 >= NumBuckets * 3)) {
  ------------------
  |  |  172|    115|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 115, False: 0]
  |  |  ------------------
  ------------------
  441|    115|      this->grow(NumBuckets * 2);
  442|    115|      LookupBucketFor(Key, TheBucket);
  443|    115|      NumBuckets = getNumBuckets();
  444|    115|    } else if (LLVM_UNLIKELY(NumBuckets-(NewNumEntries+getNumTombstones()) <=
  ------------------
  |  |  172|      0|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  445|      0|                             NumBuckets/8)) {
  446|      0|      this->grow(NumBuckets);
  447|      0|      LookupBucketFor(Key, TheBucket);
  448|      0|    }
  449|    115|    assert(TheBucket);
  ------------------
  |  Branch (449:5): [True: 115, False: 0]
  ------------------
  450|       |
  451|       |    // Only update the state after we've grown our bucket space appropriately
  452|       |    // so that when growing buckets we have self-consistent entry count.
  453|    115|    incrementNumEntries();
  454|       |
  455|       |    // If we are writing over a tombstone, remember this.
  456|    115|    const KeyT EmptyKey = getEmptyKey();
  457|    115|    if (!KeyInfoT::isEqual(TheBucket->getFirst(), EmptyKey))
  ------------------
  |  Branch (457:9): [True: 0, False: 115]
  ------------------
  458|      0|      decrementNumTombstones();
  459|       |
  460|    115|    return TheBucket;
  461|    115|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E13getNumEntriesEv:
  351|    230|  unsigned getNumEntries() const {
  352|    230|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|    230|  }
_ZNK7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE13getNumEntriesEv:
  656|    230|  unsigned getNumEntries() const {
  657|    230|    return NumEntries;
  658|    230|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E4growEj:
  391|    115|  void grow(unsigned AtLeast) {
  392|    115|    static_cast<DerivedT *>(this)->grow(AtLeast);
  393|    115|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE4growEj:
  621|    115|  void grow(unsigned AtLeast) {
  622|    115|    unsigned OldNumBuckets = NumBuckets;
  623|    115|    BucketT *OldBuckets = Buckets;
  624|       |
  625|    115|    allocateBuckets(std::max<unsigned>(64, static_cast<unsigned>(NextPowerOf2(AtLeast-1))));
  626|    115|    assert(Buckets);
  ------------------
  |  Branch (626:5): [True: 115, False: 0]
  ------------------
  627|    115|    if (!OldBuckets) {
  ------------------
  |  Branch (627:9): [True: 115, False: 0]
  ------------------
  628|    115|      this->BaseT::initEmpty();
  629|    115|      return;
  630|    115|    }
  631|       |
  632|      0|    this->moveFromOldBuckets(OldBuckets, OldBuckets+OldNumBuckets);
  633|       |
  634|       |    // Free the old table.
  635|      0|    operator delete(OldBuckets);
  636|      0|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE15allocateBucketsEj:
  678|  21.1k|  bool allocateBuckets(unsigned Num) {
  679|  21.1k|    NumBuckets = Num;
  680|  21.1k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 21.0k, False: 115]
  ------------------
  681|  21.0k|      Buckets = nullptr;
  682|  21.0k|      return false;
  683|  21.0k|    }
  684|       |
  685|    115|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|    115|    return true;
  687|  21.1k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E9initEmptyEv:
  277|    115|  void initEmpty() {
  278|    115|    setNumEntries(0);
  279|    115|    setNumTombstones(0);
  280|       |
  281|    115|    assert((getNumBuckets() & (getNumBuckets()-1)) == 0 &&
  ------------------
  |  Branch (281:5): [True: 115, False: 0]
  |  Branch (281:5): [True: 115, Folded]
  |  Branch (281:5): [True: 115, False: 0]
  ------------------
  282|    115|           "# initial buckets must be a power of two!");
  283|    115|    const KeyT EmptyKey = getEmptyKey();
  284|  7.47k|    for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
  ------------------
  |  Branch (284:59): [True: 7.36k, False: 115]
  ------------------
  285|  7.36k|      ::new (&B->getFirst()) KeyT(EmptyKey);
  286|    115|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E13setNumEntriesEj:
  354|    230|  void setNumEntries(unsigned Num) {
  355|    230|    static_cast<DerivedT *>(this)->setNumEntries(Num);
  356|    230|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE13setNumEntriesEj:
  659|    230|  void setNumEntries(unsigned Num) {
  660|    230|    NumEntries = Num;
  661|    230|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E16setNumTombstonesEj:
  366|    115|  void setNumTombstones(unsigned Num) {
  367|    115|    static_cast<DerivedT *>(this)->setNumTombstones(Num);
  368|    115|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE16setNumTombstonesEj:
  666|    115|  void setNumTombstones(unsigned Num) {
  667|    115|    NumTombstones = Num;
  668|    115|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E19incrementNumEntriesEv:
  357|    115|  void incrementNumEntries() {
  358|    115|    setNumEntries(getNumEntries() + 1);
  359|    115|  }
_ZN7llvm_ks6detail12DenseMapPairIPNS_9MCSectionEjE9getSecondEv:
   42|    230|  ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
_ZNK7llvm_ks16DenseMapIteratorIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEELb0EEptEv:
 1024|  1.59k|  pointer operator->() const {
 1025|  1.59k|    assert(isHandleInSync() && "invalid iterator access!");
  ------------------
  |  Branch (1025:5): [True: 1.59k, False: 0]
  |  Branch (1025:5): [True: 1.59k, Folded]
  |  Branch (1025:5): [True: 1.59k, False: 0]
  ------------------
 1026|  1.59k|    return Ptr;
 1027|  1.59k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E13getNumBucketsEv:
  381|  29.1k|  unsigned getNumBuckets() const {
  382|  29.1k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  29.1k|  }
_ZNK7llvm_ks8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE13getNumBucketsEv:
  674|  29.1k|  unsigned getNumBuckets() const {
  675|  29.1k|    return NumBuckets;
  676|  29.1k|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEE4initEj:
  612|  21.0k|  void init(unsigned InitBuckets) {
  613|  21.0k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 21.0k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  21.0k|    } else {
  616|  21.0k|      NumEntries = 0;
  617|  21.0k|      NumTombstones = 0;
  618|  21.0k|    }
  619|  21.0k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E10destroyAllEv:
  264|  21.0k|  void destroyAll() {
  265|  21.0k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 20.9k, False: 115]
  ------------------
  266|  20.9k|      return;
  267|       |
  268|    115|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|  7.47k|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 7.36k, False: 115]
  ------------------
  270|  7.36k|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 115, False: 7.24k]
  ------------------
  271|    115|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 115, False: 0]
  ------------------
  272|    115|        P->getSecond().~ValueT();
  273|  7.36k|      P->getFirst().~KeyT();
  274|  7.36k|    }
  275|    115|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS3_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_E13getNumBucketsEv:
  381|  20.9k|  unsigned getNumBuckets() const {
  382|  20.9k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  20.9k|  }
_ZNK7llvm_ks8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEE13getNumBucketsEv:
  674|  20.9k|  unsigned getNumBuckets() const {
  675|  20.9k|    return NumBuckets;
  676|  20.9k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS3_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_E13getNumEntriesEv:
  351|  20.9k|  unsigned getNumEntries() const {
  352|  20.9k|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|  20.9k|  }
_ZNK7llvm_ks8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEE13getNumEntriesEv:
  656|  20.9k|  unsigned getNumEntries() const {
  657|  20.9k|    return NumEntries;
  658|  20.9k|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEE15allocateBucketsEj:
  678|  20.9k|  bool allocateBuckets(unsigned Num) {
  679|  20.9k|    NumBuckets = Num;
  680|  20.9k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 0]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|      0|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|      0|    return true;
  687|  20.9k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS3_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_E16getNumTombstonesEv:
  363|  20.9k|  unsigned getNumTombstones() const {
  364|  20.9k|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|  20.9k|  }
_ZNK7llvm_ks8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEE16getNumTombstonesEv:
  663|  20.9k|  unsigned getNumTombstones() const {
  664|  20.9k|    return NumTombstones;
  665|  20.9k|  }
_ZN7llvm_ks8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEE15allocateBucketsEj:
  678|  20.9k|  bool allocateBuckets(unsigned Num) {
  679|  20.9k|    NumBuckets = Num;
  680|  20.9k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 0]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|      0|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|      0|    return true;
  687|  20.9k|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS3_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 20.9k, False: 0]
  ------------------
  266|  20.9k|      return;
  267|       |
  268|      0|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|      0|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 0, False: 0]
  ------------------
  270|      0|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 0, False: 0]
  ------------------
  271|      0|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 0, False: 0]
  ------------------
  272|      0|        P->getSecond().~ValueT();
  273|      0|      P->getFirst().~KeyT();
  274|      0|    }
  275|      0|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEC2Ej:
  553|  21.0k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  21.0k|    init(NumInitBuckets);
  555|  21.0k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_EC2Ev:
  262|  21.0k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEED2Ev:
  573|  21.0k|  ~DenseMap() {
  574|  21.0k|    this->destroyAll();
  575|  21.0k|    operator delete(Buckets);
  576|  21.0k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE15allocateBucketsEj:
  678|  41.9k|  bool allocateBuckets(unsigned Num) {
  679|  41.9k|    NumBuckets = Num;
  680|  41.9k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 20.9k]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|  20.9k|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|  20.9k|    return true;
  687|  41.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E9initEmptyEv:
  277|  20.9k|  void initEmpty() {
  278|  20.9k|    setNumEntries(0);
  279|  20.9k|    setNumTombstones(0);
  280|       |
  281|  20.9k|    assert((getNumBuckets() & (getNumBuckets()-1)) == 0 &&
  ------------------
  |  Branch (281:5): [True: 20.9k, False: 0]
  |  Branch (281:5): [True: 20.9k, Folded]
  |  Branch (281:5): [True: 20.9k, False: 0]
  ------------------
  282|  20.9k|           "# initial buckets must be a power of two!");
  283|  20.9k|    const KeyT EmptyKey = getEmptyKey();
  284|  1.36M|    for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
  ------------------
  |  Branch (284:59): [True: 1.34M, False: 20.9k]
  ------------------
  285|  1.34M|      ::new (&B->getFirst()) KeyT(EmptyKey);
  286|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13setNumEntriesEj:
  354|  63.3k|  void setNumEntries(unsigned Num) {
  355|  63.3k|    static_cast<DerivedT *>(this)->setNumEntries(Num);
  356|  63.3k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE13setNumEntriesEj:
  659|  63.3k|  void setNumEntries(unsigned Num) {
  660|  63.3k|    NumEntries = Num;
  661|  63.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16setNumTombstonesEj:
  366|  41.9k|  void setNumTombstones(unsigned Num) {
  367|  41.9k|    static_cast<DerivedT *>(this)->setNumTombstones(Num);
  368|  41.9k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE16setNumTombstonesEj:
  666|  41.9k|  void setNumTombstones(unsigned Num) {
  667|  41.9k|    NumTombstones = Num;
  668|  41.9k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13getNumBucketsEv:
  381|   252k|  unsigned getNumBuckets() const {
  382|   252k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|   252k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE13getNumBucketsEv:
  674|   252k|  unsigned getNumBuckets() const {
  675|   252k|    return NumBuckets;
  676|   252k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E11getEmptyKeyEv:
  343|   105k|  static const KeyT getEmptyKey() {
  344|   105k|    return KeyInfoT::getEmptyKey();
  345|   105k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E10getBucketsEv:
  378|   125k|  BucketT *getBuckets() {
  379|   125k|    return static_cast<DerivedT *>(this)->getBuckets();
  380|   125k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE10getBucketsEv:
  670|   168k|  BucketT *getBuckets() const {
  671|   168k|    return Buckets;
  672|   168k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13getBucketsEndEv:
  384|  62.9k|  BucketT *getBucketsEnd() {
  385|  62.9k|    return getBuckets() + getNumBuckets();
  386|  62.9k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFEPNS_11MCSymbolELFEE8getFirstEv:
   40|  5.45M|  KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE15allocateBucketsEj:
  678|  20.9k|  bool allocateBuckets(unsigned Num) {
  679|  20.9k|    NumBuckets = Num;
  680|  20.9k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 0]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|      0|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|      0|    return true;
  687|  20.9k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13getNumBucketsEv:
  381|  20.9k|  unsigned getNumBuckets() const {
  382|  20.9k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  20.9k|  }
_ZNK7llvm_ks8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE13getNumBucketsEv:
  674|  20.9k|  unsigned getNumBuckets() const {
  675|  20.9k|    return NumBuckets;
  676|  20.9k|  }
_ZN7llvm_ks8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS2_EEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEEEjS3_S5_S8_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS2_EEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS2_EEE15allocateBucketsEj:
  678|  20.9k|  bool allocateBuckets(unsigned Num) {
  679|  20.9k|    NumBuckets = Num;
  680|  20.9k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 0]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|      0|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|      0|    return true;
  687|  20.9k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEEEjS3_S5_S8_E13getNumBucketsEv:
  381|  20.9k|  unsigned getNumBuckets() const {
  382|  20.9k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  20.9k|  }
_ZNK7llvm_ks8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS2_EEE13getNumBucketsEv:
  674|  20.9k|  unsigned getNumBuckets() const {
  675|  20.9k|    return NumBuckets;
  676|  20.9k|  }
_ZN7llvm_ks8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS3_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 0, False: 20.9k]
  ------------------
  266|      0|      return;
  267|       |
  268|  20.9k|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|  1.36M|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 1.34M, False: 20.9k]
  ------------------
  270|  1.34M|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 0, False: 1.34M]
  ------------------
  271|      0|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 0, False: 0]
  ------------------
  272|      0|        P->getSecond().~ValueT();
  273|  1.34M|      P->getFirst().~KeyT();
  274|  1.34M|    }
  275|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E15getTombstoneKeyEv:
  346|  63.3k|  static const KeyT getTombstoneKey() {
  347|  63.3k|    return KeyInfoT::getTombstoneKey();
  348|  63.3k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFEPNS_11MCSymbolELFEE9getSecondEv:
   42|  42.7k|  ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
_ZN7llvm_ks8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINSt3__14pairIjjEEPNS_8MCSymbolENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 20.9k, False: 0]
  ------------------
  266|  20.9k|      return;
  267|       |
  268|      0|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|      0|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 0, False: 0]
  ------------------
  270|      0|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 0, False: 0]
  ------------------
  271|      0|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 0, False: 0]
  ------------------
  272|      0|        P->getSecond().~ValueT();
  273|      0|      P->getFirst().~KeyT();
  274|      0|    }
  275|      0|  }
_ZN7llvm_ks8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS2_EEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEEEjS3_S5_S8_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 20.9k, False: 0]
  ------------------
  266|  20.9k|      return;
  267|       |
  268|      0|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|      0|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 0, False: 0]
  ------------------
  270|      0|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 0, False: 0]
  ------------------
  271|      0|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 0, False: 0]
  ------------------
  272|      0|        P->getSecond().~ValueT();
  273|      0|      P->getFirst().~KeyT();
  274|      0|    }
  275|      0|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E5clearEv:
   91|  20.9k|  void clear() {
   92|  20.9k|    incrementEpoch();
   93|  20.9k|    if (getNumEntries() == 0 && getNumTombstones() == 0) return;
  ------------------
  |  Branch (93:9): [True: 0, False: 20.9k]
  |  Branch (93:33): [True: 0, False: 0]
  ------------------
   94|       |
   95|       |    // If the capacity of the array is huge, and the # elements used is small,
   96|       |    // shrink the array.
   97|  20.9k|    if (getNumEntries() * 4 < getNumBuckets() && getNumBuckets() > 64) {
  ------------------
  |  Branch (97:9): [True: 20.9k, False: 0]
  |  Branch (97:50): [True: 0, False: 20.9k]
  ------------------
   98|      0|      shrink_and_clear();
   99|      0|      return;
  100|      0|    }
  101|       |
  102|  20.9k|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  103|  20.9k|    unsigned NumEntries = getNumEntries();
  104|  1.36M|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (104:59): [True: 1.34M, False: 20.9k]
  ------------------
  105|  1.34M|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey)) {
  ------------------
  |  Branch (105:11): [True: 21.3k, False: 1.32M]
  ------------------
  106|  21.3k|        if (!KeyInfoT::isEqual(P->getFirst(), TombstoneKey)) {
  ------------------
  |  Branch (106:13): [True: 21.3k, False: 0]
  ------------------
  107|  21.3k|          P->getSecond().~ValueT();
  108|  21.3k|          --NumEntries;
  109|  21.3k|        }
  110|  21.3k|        P->getFirst() = EmptyKey;
  111|  21.3k|      }
  112|  1.34M|    }
  113|  20.9k|    assert(NumEntries == 0 && "Node count imbalance!");
  ------------------
  |  Branch (113:5): [True: 20.9k, False: 0]
  |  Branch (113:5): [True: 20.9k, Folded]
  |  Branch (113:5): [True: 20.9k, False: 0]
  ------------------
  114|  20.9k|    setNumEntries(0);
  115|  20.9k|    setNumTombstones(0);
  116|  20.9k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13getNumEntriesEv:
  351|   105k|  unsigned getNumEntries() const {
  352|   105k|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|   105k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE13getNumEntriesEv:
  656|   105k|  unsigned getNumEntries() const {
  657|   105k|    return NumEntries;
  658|   105k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16getNumTombstonesEv:
  363|    402|  unsigned getNumTombstones() const {
  364|    402|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|    402|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE16getNumTombstonesEv:
  663|    402|  unsigned getNumTombstones() const {
  664|    402|    return NumTombstones;
  665|    402|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEEEjS3_S5_S8_E5clearEv:
   91|  20.9k|  void clear() {
   92|  20.9k|    incrementEpoch();
   93|  20.9k|    if (getNumEntries() == 0 && getNumTombstones() == 0) return;
  ------------------
  |  Branch (93:9): [True: 20.9k, False: 0]
  |  Branch (93:33): [True: 20.9k, False: 0]
  ------------------
   94|       |
   95|       |    // If the capacity of the array is huge, and the # elements used is small,
   96|       |    // shrink the array.
   97|      0|    if (getNumEntries() * 4 < getNumBuckets() && getNumBuckets() > 64) {
  ------------------
  |  Branch (97:9): [True: 0, False: 0]
  |  Branch (97:50): [True: 0, False: 0]
  ------------------
   98|      0|      shrink_and_clear();
   99|      0|      return;
  100|      0|    }
  101|       |
  102|      0|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  103|      0|    unsigned NumEntries = getNumEntries();
  104|      0|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (104:59): [True: 0, False: 0]
  ------------------
  105|      0|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey)) {
  ------------------
  |  Branch (105:11): [True: 0, False: 0]
  ------------------
  106|      0|        if (!KeyInfoT::isEqual(P->getFirst(), TombstoneKey)) {
  ------------------
  |  Branch (106:13): [True: 0, False: 0]
  ------------------
  107|      0|          P->getSecond().~ValueT();
  108|      0|          --NumEntries;
  109|      0|        }
  110|      0|        P->getFirst() = EmptyKey;
  111|      0|      }
  112|      0|    }
  113|      0|    assert(NumEntries == 0 && "Node count imbalance!");
  ------------------
  |  Branch (113:5): [True: 0, False: 0]
  |  Branch (113:5): [True: 0, Folded]
  |  Branch (113:5): [True: 0, False: 0]
  ------------------
  114|      0|    setNumEntries(0);
  115|      0|    setNumTombstones(0);
  116|      0|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEEEjS3_S5_S8_E13getNumEntriesEv:
  351|  21.6k|  unsigned getNumEntries() const {
  352|  21.6k|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|  21.6k|  }
_ZNK7llvm_ks8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS2_EEE13getNumEntriesEv:
  656|  21.6k|  unsigned getNumEntries() const {
  657|  21.6k|    return NumEntries;
  658|  21.6k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEEEjS3_S5_S8_E16getNumTombstonesEv:
  363|  20.9k|  unsigned getNumTombstones() const {
  364|  20.9k|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|  20.9k|  }
_ZNK7llvm_ks8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS2_EEE16getNumTombstonesEv:
  663|  20.9k|  unsigned getNumTombstones() const {
  664|  20.9k|    return NumTombstones;
  665|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS3_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_E5clearEv:
   91|  20.9k|  void clear() {
   92|  20.9k|    incrementEpoch();
   93|  20.9k|    if (getNumEntries() == 0 && getNumTombstones() == 0) return;
  ------------------
  |  Branch (93:9): [True: 20.9k, False: 0]
  |  Branch (93:33): [True: 20.9k, False: 0]
  ------------------
   94|       |
   95|       |    // If the capacity of the array is huge, and the # elements used is small,
   96|       |    // shrink the array.
   97|      0|    if (getNumEntries() * 4 < getNumBuckets() && getNumBuckets() > 64) {
  ------------------
  |  Branch (97:9): [True: 0, False: 0]
  |  Branch (97:50): [True: 0, False: 0]
  ------------------
   98|      0|      shrink_and_clear();
   99|      0|      return;
  100|      0|    }
  101|       |
  102|      0|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  103|      0|    unsigned NumEntries = getNumEntries();
  104|      0|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (104:59): [True: 0, False: 0]
  ------------------
  105|      0|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey)) {
  ------------------
  |  Branch (105:11): [True: 0, False: 0]
  ------------------
  106|      0|        if (!KeyInfoT::isEqual(P->getFirst(), TombstoneKey)) {
  ------------------
  |  Branch (106:13): [True: 0, False: 0]
  ------------------
  107|      0|          P->getSecond().~ValueT();
  108|      0|          --NumEntries;
  109|      0|        }
  110|      0|        P->getFirst() = EmptyKey;
  111|      0|      }
  112|      0|    }
  113|      0|    assert(NumEntries == 0 && "Node count imbalance!");
  ------------------
  |  Branch (113:5): [True: 0, False: 0]
  |  Branch (113:5): [True: 0, Folded]
  |  Branch (113:5): [True: 0, False: 0]
  ------------------
  114|      0|    setNumEntries(0);
  115|      0|    setNumTombstones(0);
  116|      0|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_EixEOS4_:
  245|  21.3k|  ValueT &operator[](KeyT &&Key) {
  246|  21.3k|    return FindAndConstruct(std::move(Key)).second;
  247|  21.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16FindAndConstructEOS4_:
  237|  21.3k|  value_type& FindAndConstruct(KeyT &&Key) {
  238|  21.3k|    BucketT *TheBucket;
  239|  21.3k|    if (LookupBucketFor(Key, TheBucket))
  ------------------
  |  Branch (239:9): [True: 0, False: 21.3k]
  ------------------
  240|      0|      return *TheBucket;
  241|       |
  242|  21.3k|    return *InsertIntoBucket(std::move(Key), ValueT(), TheBucket);
  243|  21.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E15LookupBucketForIS4_EEbRKT_RPSB_:
  519|  42.3k|  bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  520|  42.3k|    const BucketT *ConstFoundBucket;
  521|  42.3k|    bool Result = const_cast<const DenseMapBase *>(this)
  522|  42.3k|      ->LookupBucketFor(Val, ConstFoundBucket);
  523|  42.3k|    FoundBucket = const_cast<BucketT *>(ConstFoundBucket);
  524|  42.3k|    return Result;
  525|  42.3k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E15LookupBucketForIS4_EEbRKT_RPKSB_:
  469|  42.3k|                       const BucketT *&FoundBucket) const {
  470|  42.3k|    const BucketT *BucketsPtr = getBuckets();
  471|  42.3k|    const unsigned NumBuckets = getNumBuckets();
  472|       |
  473|  42.3k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (473:9): [True: 20.9k, False: 21.3k]
  ------------------
  474|  20.9k|      FoundBucket = nullptr;
  475|  20.9k|      return false;
  476|  20.9k|    }
  477|       |
  478|       |    // FoundTombstone - Keep track of whether we find a tombstone while probing.
  479|  21.3k|    const BucketT *FoundTombstone = nullptr;
  480|  21.3k|    const KeyT EmptyKey = getEmptyKey();
  481|  21.3k|    const KeyT TombstoneKey = getTombstoneKey();
  482|  21.3k|    assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
  ------------------
  |  Branch (482:5): [True: 21.3k, False: 0]
  |  Branch (482:5): [True: 21.3k, False: 0]
  |  Branch (482:5): [True: 21.3k, Folded]
  |  Branch (482:5): [True: 21.3k, False: 0]
  ------------------
  483|  21.3k|           !KeyInfoT::isEqual(Val, TombstoneKey) &&
  484|  21.3k|           "Empty/Tombstone value shouldn't be inserted into map!");
  485|       |
  486|  21.3k|    unsigned BucketNo = getHashValue(Val) & (NumBuckets-1);
  487|  21.3k|    unsigned ProbeAmt = 1;
  488|  21.3k|    while (1) {
  ------------------
  |  Branch (488:12): [True: 21.3k, Folded]
  ------------------
  489|  21.3k|      const BucketT *ThisBucket = BucketsPtr + BucketNo;
  490|       |      // Found Val's bucket?  If so, return it.
  491|  21.3k|      if (LLVM_LIKELY(KeyInfoT::isEqual(Val, ThisBucket->getFirst()))) {
  ------------------
  |  |  171|  21.3k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
  492|      0|        FoundBucket = ThisBucket;
  493|      0|        return true;
  494|      0|      }
  495|       |
  496|       |      // If we found an empty bucket, the key doesn't exist in the set.
  497|       |      // Insert it and return the default value.
  498|  21.3k|      if (LLVM_LIKELY(KeyInfoT::isEqual(ThisBucket->getFirst(), EmptyKey))) {
  ------------------
  |  |  171|  21.3k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 21.3k, False: 22]
  |  |  ------------------
  ------------------
  499|       |        // If we've already seen a tombstone while probing, fill it in instead
  500|       |        // of the empty bucket we eventually probed to.
  501|  21.3k|        FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
  ------------------
  |  Branch (501:23): [True: 0, False: 21.3k]
  ------------------
  502|  21.3k|        return false;
  503|  21.3k|      }
  504|       |
  505|       |      // If this is a tombstone, remember it.  If Val ends up not in the map, we
  506|       |      // prefer to return it than something that would require more probing.
  507|     22|      if (KeyInfoT::isEqual(ThisBucket->getFirst(), TombstoneKey) &&
  ------------------
  |  Branch (507:11): [True: 0, False: 22]
  ------------------
  508|      0|          !FoundTombstone)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|        FoundTombstone = ThisBucket;  // Remember the first tombstone found.
  510|       |
  511|       |      // Otherwise, it's a hash collision or a tombstone, continue quadratic
  512|       |      // probing.
  513|     22|      BucketNo += ProbeAmt++;
  514|     22|      BucketNo &= (NumBuckets-1);
  515|     22|    }
  516|  21.3k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E10getBucketsEv:
  375|  42.3k|  const BucketT *getBuckets() const {
  376|  42.3k|    return static_cast<const DerivedT *>(this)->getBuckets();
  377|  42.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E12getHashValueERKS4_:
  336|  21.3k|  static unsigned getHashValue(const KeyT &Val) {
  337|  21.3k|    return KeyInfoT::getHashValue(Val);
  338|  21.3k|  }
_ZNK7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFEPNS_11MCSymbolELFEE8getFirstEv:
   41|  42.8k|  const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16InsertIntoBucketEOS4_OS6_PSB_:
  418|  21.3k|  BucketT *InsertIntoBucket(KeyT &&Key, ValueT &&Value, BucketT *TheBucket) {
  419|  21.3k|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  420|       |
  421|  21.3k|    TheBucket->getFirst() = std::move(Key);
  422|  21.3k|    ::new (&TheBucket->getSecond()) ValueT(std::move(Value));
  423|  21.3k|    return TheBucket;
  424|  21.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E20InsertIntoBucketImplERKS4_PSB_:
  426|  21.3k|  BucketT *InsertIntoBucketImpl(const KeyT &Key, BucketT *TheBucket) {
  427|  21.3k|    incrementEpoch();
  428|       |
  429|       |    // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
  430|       |    // the buckets are empty (meaning that many are filled with tombstones),
  431|       |    // grow the table.
  432|       |    //
  433|       |    // The later case is tricky.  For example, if we had one empty bucket with
  434|       |    // tons of tombstones, failing lookups (e.g. for insertion) would have to
  435|       |    // probe almost the entire table until it found the empty bucket.  If the
  436|       |    // table completely filled with tombstones, no lookup would ever succeed,
  437|       |    // causing infinite loops in lookup.
  438|  21.3k|    unsigned NewNumEntries = getNumEntries() + 1;
  439|  21.3k|    unsigned NumBuckets = getNumBuckets();
  440|  21.3k|    if (LLVM_UNLIKELY(NewNumEntries * 4 >= NumBuckets * 3)) {
  ------------------
  |  |  172|  21.3k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 20.9k, False: 402]
  |  |  ------------------
  ------------------
  441|  20.9k|      this->grow(NumBuckets * 2);
  442|  20.9k|      LookupBucketFor(Key, TheBucket);
  443|  20.9k|      NumBuckets = getNumBuckets();
  444|  20.9k|    } else if (LLVM_UNLIKELY(NumBuckets-(NewNumEntries+getNumTombstones()) <=
  ------------------
  |  |  172|    402|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 402]
  |  |  ------------------
  ------------------
  445|    402|                             NumBuckets/8)) {
  446|      0|      this->grow(NumBuckets);
  447|      0|      LookupBucketFor(Key, TheBucket);
  448|      0|    }
  449|  21.3k|    assert(TheBucket);
  ------------------
  |  Branch (449:5): [True: 21.3k, False: 0]
  ------------------
  450|       |
  451|       |    // Only update the state after we've grown our bucket space appropriately
  452|       |    // so that when growing buckets we have self-consistent entry count.
  453|  21.3k|    incrementNumEntries();
  454|       |
  455|       |    // If we are writing over a tombstone, remember this.
  456|  21.3k|    const KeyT EmptyKey = getEmptyKey();
  457|  21.3k|    if (!KeyInfoT::isEqual(TheBucket->getFirst(), EmptyKey))
  ------------------
  |  Branch (457:9): [True: 0, False: 21.3k]
  ------------------
  458|      0|      decrementNumTombstones();
  459|       |
  460|  21.3k|    return TheBucket;
  461|  21.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E4growEj:
  391|  20.9k|  void grow(unsigned AtLeast) {
  392|  20.9k|    static_cast<DerivedT *>(this)->grow(AtLeast);
  393|  20.9k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE4growEj:
  621|  20.9k|  void grow(unsigned AtLeast) {
  622|  20.9k|    unsigned OldNumBuckets = NumBuckets;
  623|  20.9k|    BucketT *OldBuckets = Buckets;
  624|       |
  625|  20.9k|    allocateBuckets(std::max<unsigned>(64, static_cast<unsigned>(NextPowerOf2(AtLeast-1))));
  626|  20.9k|    assert(Buckets);
  ------------------
  |  Branch (626:5): [True: 20.9k, False: 0]
  ------------------
  627|  20.9k|    if (!OldBuckets) {
  ------------------
  |  Branch (627:9): [True: 20.9k, False: 0]
  ------------------
  628|  20.9k|      this->BaseT::initEmpty();
  629|  20.9k|      return;
  630|  20.9k|    }
  631|       |
  632|      0|    this->moveFromOldBuckets(OldBuckets, OldBuckets+OldNumBuckets);
  633|       |
  634|       |    // Free the old table.
  635|      0|    operator delete(OldBuckets);
  636|      0|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEPNS_11MCSymbolELFENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E19incrementNumEntriesEv:
  357|  21.3k|  void incrementNumEntries() {
  358|  21.3k|    setNumEntries(getNumEntries() + 1);
  359|  21.3k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEEEjS3_S5_S8_E4sizeEv:
   82|    715|  unsigned size() const { return getNumEntries(); }
_ZN7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEEC2Ej:
  553|  8.98k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  8.98k|    init(NumInitBuckets);
  555|  8.98k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_EC2Ev:
  262|  8.98k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE4initEj:
  612|  8.98k|  void init(unsigned InitBuckets) {
  613|  8.98k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 8.98k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  8.98k|    } else {
  616|  8.98k|      NumEntries = 0;
  617|  8.98k|      NumTombstones = 0;
  618|  8.98k|    }
  619|  8.98k|  }
_ZN7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE15allocateBucketsEj:
  678|  17.9k|  bool allocateBuckets(unsigned Num) {
  679|  17.9k|    NumBuckets = Num;
  680|  17.9k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 8.98k, False: 8.98k]
  ------------------
  681|  8.98k|      Buckets = nullptr;
  682|  8.98k|      return false;
  683|  8.98k|    }
  684|       |
  685|  8.98k|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|  8.98k|    return true;
  687|  17.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E9initEmptyEv:
  277|  8.98k|  void initEmpty() {
  278|  8.98k|    setNumEntries(0);
  279|  8.98k|    setNumTombstones(0);
  280|       |
  281|  8.98k|    assert((getNumBuckets() & (getNumBuckets()-1)) == 0 &&
  ------------------
  |  Branch (281:5): [True: 8.98k, False: 0]
  |  Branch (281:5): [True: 8.98k, Folded]
  |  Branch (281:5): [True: 8.98k, False: 0]
  ------------------
  282|  8.98k|           "# initial buckets must be a power of two!");
  283|  8.98k|    const KeyT EmptyKey = getEmptyKey();
  284|   584k|    for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
  ------------------
  |  Branch (284:59): [True: 575k, False: 8.98k]
  ------------------
  285|   575k|      ::new (&B->getFirst()) KeyT(EmptyKey);
  286|  8.98k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13setNumEntriesEj:
  354|  18.2k|  void setNumEntries(unsigned Num) {
  355|  18.2k|    static_cast<DerivedT *>(this)->setNumEntries(Num);
  356|  18.2k|  }
_ZN7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE13setNumEntriesEj:
  659|  18.2k|  void setNumEntries(unsigned Num) {
  660|  18.2k|    NumEntries = Num;
  661|  18.2k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16setNumTombstonesEj:
  366|  8.98k|  void setNumTombstones(unsigned Num) {
  367|  8.98k|    static_cast<DerivedT *>(this)->setNumTombstones(Num);
  368|  8.98k|  }
_ZN7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE16setNumTombstonesEj:
  666|  8.98k|  void setNumTombstones(unsigned Num) {
  667|  8.98k|    NumTombstones = Num;
  668|  8.98k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13getNumBucketsEv:
  381|   534k|  unsigned getNumBuckets() const {
  382|   534k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|   534k|  }
_ZNK7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE13getNumBucketsEv:
  674|   534k|  unsigned getNumBuckets() const {
  675|   534k|    return NumBuckets;
  676|   534k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E11getEmptyKeyEv:
  343|   489k|  static const KeyT getEmptyKey() {
  344|   489k|    return KeyInfoT::getEmptyKey();
  345|   489k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E10getBucketsEv:
  378|  35.9k|  BucketT *getBuckets() {
  379|  35.9k|    return static_cast<DerivedT *>(this)->getBuckets();
  380|  35.9k|  }
_ZNK7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE10getBucketsEv:
  670|   507k|  BucketT *getBuckets() const {
  671|   507k|    return Buckets;
  672|   507k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13getBucketsEndEv:
  384|  17.9k|  BucketT *getBucketsEnd() {
  385|  17.9k|    return getBuckets() + getNumBuckets();
  386|  17.9k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_9MCSectionEPNS_10MCFragmentEE8getFirstEv:
   40|  1.75M|  KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEED2Ev:
  573|  8.98k|  ~DenseMap() {
  574|  8.98k|    this->destroyAll();
  575|  8.98k|    operator delete(Buckets);
  576|  8.98k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E10destroyAllEv:
  264|  8.98k|  void destroyAll() {
  265|  8.98k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 0, False: 8.98k]
  ------------------
  266|      0|      return;
  267|       |
  268|  8.98k|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|   584k|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 575k, False: 8.98k]
  ------------------
  270|   575k|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 9.30k, False: 565k]
  ------------------
  271|  9.30k|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 9.30k, False: 0]
  ------------------
  272|  9.30k|        P->getSecond().~ValueT();
  273|   575k|      P->getFirst().~KeyT();
  274|   575k|    }
  275|  8.98k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E15getTombstoneKeyEv:
  346|   471k|  static const KeyT getTombstoneKey() {
  347|   471k|    return KeyInfoT::getTombstoneKey();
  348|   471k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_9MCSectionEPNS_10MCFragmentEE9getSecondEv:
   42|  18.6k|  ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E6lookupERKS4_:
  159|   284k|  ValueT lookup(const KeyT &Val) const {
  160|   284k|    const BucketT *TheBucket;
  161|   284k|    if (LookupBucketFor(Val, TheBucket))
  ------------------
  |  Branch (161:9): [True: 284k, False: 0]
  ------------------
  162|   284k|      return TheBucket->getSecond();
  163|      0|    return ValueT();
  164|   284k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E15LookupBucketForIS4_EEbRKT_RPKSB_:
  469|   471k|                       const BucketT *&FoundBucket) const {
  470|   471k|    const BucketT *BucketsPtr = getBuckets();
  471|   471k|    const unsigned NumBuckets = getNumBuckets();
  472|       |
  473|   471k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (473:9): [True: 8.98k, False: 462k]
  ------------------
  474|  8.98k|      FoundBucket = nullptr;
  475|  8.98k|      return false;
  476|  8.98k|    }
  477|       |
  478|       |    // FoundTombstone - Keep track of whether we find a tombstone while probing.
  479|   462k|    const BucketT *FoundTombstone = nullptr;
  480|   462k|    const KeyT EmptyKey = getEmptyKey();
  481|   462k|    const KeyT TombstoneKey = getTombstoneKey();
  482|   462k|    assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
  ------------------
  |  Branch (482:5): [True: 462k, False: 0]
  |  Branch (482:5): [True: 462k, False: 0]
  |  Branch (482:5): [True: 462k, Folded]
  |  Branch (482:5): [True: 462k, False: 0]
  ------------------
  483|   462k|           !KeyInfoT::isEqual(Val, TombstoneKey) &&
  484|   462k|           "Empty/Tombstone value shouldn't be inserted into map!");
  485|       |
  486|   462k|    unsigned BucketNo = getHashValue(Val) & (NumBuckets-1);
  487|   462k|    unsigned ProbeAmt = 1;
  488|   462k|    while (1) {
  ------------------
  |  Branch (488:12): [True: 462k, Folded]
  ------------------
  489|   462k|      const BucketT *ThisBucket = BucketsPtr + BucketNo;
  490|       |      // Found Val's bucket?  If so, return it.
  491|   462k|      if (LLVM_LIKELY(KeyInfoT::isEqual(Val, ThisBucket->getFirst()))) {
  ------------------
  |  |  171|   462k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 452k, False: 9.42k]
  |  |  ------------------
  ------------------
  492|   452k|        FoundBucket = ThisBucket;
  493|   452k|        return true;
  494|   452k|      }
  495|       |
  496|       |      // If we found an empty bucket, the key doesn't exist in the set.
  497|       |      // Insert it and return the default value.
  498|  9.42k|      if (LLVM_LIKELY(KeyInfoT::isEqual(ThisBucket->getFirst(), EmptyKey))) {
  ------------------
  |  |  171|  9.42k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 9.30k, False: 121]
  |  |  ------------------
  ------------------
  499|       |        // If we've already seen a tombstone while probing, fill it in instead
  500|       |        // of the empty bucket we eventually probed to.
  501|  9.30k|        FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
  ------------------
  |  Branch (501:23): [True: 0, False: 9.30k]
  ------------------
  502|  9.30k|        return false;
  503|  9.30k|      }
  504|       |
  505|       |      // If this is a tombstone, remember it.  If Val ends up not in the map, we
  506|       |      // prefer to return it than something that would require more probing.
  507|    121|      if (KeyInfoT::isEqual(ThisBucket->getFirst(), TombstoneKey) &&
  ------------------
  |  Branch (507:11): [True: 0, False: 121]
  ------------------
  508|      0|          !FoundTombstone)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|        FoundTombstone = ThisBucket;  // Remember the first tombstone found.
  510|       |
  511|       |      // Otherwise, it's a hash collision or a tombstone, continue quadratic
  512|       |      // probing.
  513|    121|      BucketNo += ProbeAmt++;
  514|    121|      BucketNo &= (NumBuckets-1);
  515|    121|    }
  516|   462k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E10getBucketsEv:
  375|   471k|  const BucketT *getBuckets() const {
  376|   471k|    return static_cast<const DerivedT *>(this)->getBuckets();
  377|   471k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E12getHashValueERKS4_:
  336|   462k|  static unsigned getHashValue(const KeyT &Val) {
  337|   462k|    return KeyInfoT::getHashValue(Val);
  338|   462k|  }
_ZNK7llvm_ks6detail12DenseMapPairIPKNS_9MCSectionEPNS_10MCFragmentEE8getFirstEv:
   41|   471k|  const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
_ZNK7llvm_ks6detail12DenseMapPairIPKNS_9MCSectionEPNS_10MCFragmentEE9getSecondEv:
   43|   284k|  const ValueT &getSecond() const { return std::pair<KeyT, ValueT>::second; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_EixEOS4_:
  245|  45.6k|  ValueT &operator[](KeyT &&Key) {
  246|  45.6k|    return FindAndConstruct(std::move(Key)).second;
  247|  45.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16FindAndConstructEOS4_:
  237|  45.6k|  value_type& FindAndConstruct(KeyT &&Key) {
  238|  45.6k|    BucketT *TheBucket;
  239|  45.6k|    if (LookupBucketFor(Key, TheBucket))
  ------------------
  |  Branch (239:9): [True: 45.6k, False: 0]
  ------------------
  240|  45.6k|      return *TheBucket;
  241|       |
  242|      0|    return *InsertIntoBucket(std::move(Key), ValueT(), TheBucket);
  243|  45.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E15LookupBucketForIS4_EEbRKT_RPSB_:
  519|   187k|  bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  520|   187k|    const BucketT *ConstFoundBucket;
  521|   187k|    bool Result = const_cast<const DenseMapBase *>(this)
  522|   187k|      ->LookupBucketFor(Val, ConstFoundBucket);
  523|   187k|    FoundBucket = const_cast<BucketT *>(ConstFoundBucket);
  524|   187k|    return Result;
  525|   187k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E20InsertIntoBucketImplERKS4_PSB_:
  426|  9.30k|  BucketT *InsertIntoBucketImpl(const KeyT &Key, BucketT *TheBucket) {
  427|  9.30k|    incrementEpoch();
  428|       |
  429|       |    // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
  430|       |    // the buckets are empty (meaning that many are filled with tombstones),
  431|       |    // grow the table.
  432|       |    //
  433|       |    // The later case is tricky.  For example, if we had one empty bucket with
  434|       |    // tons of tombstones, failing lookups (e.g. for insertion) would have to
  435|       |    // probe almost the entire table until it found the empty bucket.  If the
  436|       |    // table completely filled with tombstones, no lookup would ever succeed,
  437|       |    // causing infinite loops in lookup.
  438|  9.30k|    unsigned NewNumEntries = getNumEntries() + 1;
  439|  9.30k|    unsigned NumBuckets = getNumBuckets();
  440|  9.30k|    if (LLVM_UNLIKELY(NewNumEntries * 4 >= NumBuckets * 3)) {
  ------------------
  |  |  172|  9.30k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 8.98k, False: 315]
  |  |  ------------------
  ------------------
  441|  8.98k|      this->grow(NumBuckets * 2);
  442|  8.98k|      LookupBucketFor(Key, TheBucket);
  443|  8.98k|      NumBuckets = getNumBuckets();
  444|  8.98k|    } else if (LLVM_UNLIKELY(NumBuckets-(NewNumEntries+getNumTombstones()) <=
  ------------------
  |  |  172|    315|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 315]
  |  |  ------------------
  ------------------
  445|    315|                             NumBuckets/8)) {
  446|      0|      this->grow(NumBuckets);
  447|      0|      LookupBucketFor(Key, TheBucket);
  448|      0|    }
  449|  9.30k|    assert(TheBucket);
  ------------------
  |  Branch (449:5): [True: 9.30k, False: 0]
  ------------------
  450|       |
  451|       |    // Only update the state after we've grown our bucket space appropriately
  452|       |    // so that when growing buckets we have self-consistent entry count.
  453|  9.30k|    incrementNumEntries();
  454|       |
  455|       |    // If we are writing over a tombstone, remember this.
  456|  9.30k|    const KeyT EmptyKey = getEmptyKey();
  457|  9.30k|    if (!KeyInfoT::isEqual(TheBucket->getFirst(), EmptyKey))
  ------------------
  |  Branch (457:9): [True: 0, False: 9.30k]
  ------------------
  458|      0|      decrementNumTombstones();
  459|       |
  460|  9.30k|    return TheBucket;
  461|  9.30k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E13getNumEntriesEv:
  351|  18.6k|  unsigned getNumEntries() const {
  352|  18.6k|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|  18.6k|  }
_ZNK7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE13getNumEntriesEv:
  656|  18.6k|  unsigned getNumEntries() const {
  657|  18.6k|    return NumEntries;
  658|  18.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E4growEj:
  391|  8.98k|  void grow(unsigned AtLeast) {
  392|  8.98k|    static_cast<DerivedT *>(this)->grow(AtLeast);
  393|  8.98k|  }
_ZN7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE4growEj:
  621|  8.98k|  void grow(unsigned AtLeast) {
  622|  8.98k|    unsigned OldNumBuckets = NumBuckets;
  623|  8.98k|    BucketT *OldBuckets = Buckets;
  624|       |
  625|  8.98k|    allocateBuckets(std::max<unsigned>(64, static_cast<unsigned>(NextPowerOf2(AtLeast-1))));
  626|  8.98k|    assert(Buckets);
  ------------------
  |  Branch (626:5): [True: 8.98k, False: 0]
  ------------------
  627|  8.98k|    if (!OldBuckets) {
  ------------------
  |  Branch (627:9): [True: 8.98k, False: 0]
  ------------------
  628|  8.98k|      this->BaseT::initEmpty();
  629|  8.98k|      return;
  630|  8.98k|    }
  631|       |
  632|      0|    this->moveFromOldBuckets(OldBuckets, OldBuckets+OldNumBuckets);
  633|       |
  634|       |    // Free the old table.
  635|      0|    operator delete(OldBuckets);
  636|      0|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16getNumTombstonesEv:
  363|    315|  unsigned getNumTombstones() const {
  364|    315|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|    315|  }
_ZNK7llvm_ks8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S5_EEE16getNumTombstonesEv:
  663|    315|  unsigned getNumTombstones() const {
  664|    315|    return NumTombstones;
  665|    315|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E19incrementNumEntriesEv:
  357|  9.30k|  void incrementNumEntries() {
  358|  9.30k|    setNumEntries(getNumEntries() + 1);
  359|  9.30k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_EixERKS4_:
  233|   132k|  ValueT &operator[](const KeyT &Key) {
  234|   132k|    return FindAndConstruct(Key).second;
  235|   132k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16FindAndConstructERKS4_:
  225|   132k|  value_type& FindAndConstruct(const KeyT &Key) {
  226|   132k|    BucketT *TheBucket;
  227|   132k|    if (LookupBucketFor(Key, TheBucket))
  ------------------
  |  Branch (227:9): [True: 123k, False: 9.30k]
  ------------------
  228|   123k|      return *TheBucket;
  229|       |
  230|  9.30k|    return *InsertIntoBucket(Key, ValueT(), TheBucket);
  231|   132k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_9MCSectionEPNS_10MCFragmentENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S6_EEEES4_S6_S8_SB_E16InsertIntoBucketERKS4_OS6_PSB_:
  410|  9.30k|                            BucketT *TheBucket) {
  411|  9.30k|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  412|       |
  413|  9.30k|    TheBucket->getFirst() = Key;
  414|  9.30k|    ::new (&TheBucket->getSecond()) ValueT(std::move(Value));
  415|  9.30k|    return TheBucket;
  416|  9.30k|  }
_ZN7llvm_ks8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEC2Ej:
  553|  29.1k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  29.1k|    init(NumInitBuckets);
  555|  29.1k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EC2Ev:
  262|  29.1k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE4initEj:
  612|  29.1k|  void init(unsigned InitBuckets) {
  613|  29.1k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 29.1k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  29.1k|    } else {
  616|  29.1k|      NumEntries = 0;
  617|  29.1k|      NumTombstones = 0;
  618|  29.1k|    }
  619|  29.1k|  }
_ZN7llvm_ks8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE15allocateBucketsEj:
  678|  29.1k|  bool allocateBuckets(unsigned Num) {
  679|  29.1k|    NumBuckets = Num;
  680|  29.1k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 29.1k, False: 0]
  ------------------
  681|  29.1k|      Buckets = nullptr;
  682|  29.1k|      return false;
  683|  29.1k|    }
  684|       |
  685|      0|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|      0|    return true;
  687|  29.1k|  }
_ZN7llvm_ks8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEED2Ev:
  573|  29.1k|  ~DenseMap() {
  574|  29.1k|    this->destroyAll();
  575|  29.1k|    operator delete(Buckets);
  576|  29.1k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_8MCSymbolEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E10destroyAllEv:
  264|  29.1k|  void destroyAll() {
  265|  29.1k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 29.1k, False: 0]
  ------------------
  266|  29.1k|      return;
  267|       |
  268|      0|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|      0|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 0, False: 0]
  ------------------
  270|      0|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 0, False: 0]
  ------------------
  271|      0|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 0, False: 0]
  ------------------
  272|      0|        P->getSecond().~ValueT();
  273|      0|      P->getFirst().~KeyT();
  274|      0|    }
  275|      0|  }
_ZN7llvm_ks8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEEEjiS3_S6_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIjiNS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjiEEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E4findERKS3_:
  124|  1.25k|  iterator find(const KeyT &Val) {
  125|  1.25k|    BucketT *TheBucket;
  126|  1.25k|    if (LookupBucketFor(Val, TheBucket))
  ------------------
  |  Branch (126:9): [True: 24, False: 1.22k]
  ------------------
  127|     24|      return iterator(TheBucket, getBucketsEnd(), *this, true);
  128|  1.22k|    return end();
  129|  1.25k|  }
_ZN7llvm_ks16DenseMapIteratorIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEELb0EEC2EPS7_S9_RKNS_14DebugEpochBaseEb:
 1006|  4.09k|      : DebugEpochBase::HandleBase(&Epoch), Ptr(Pos), End(E) {
 1007|  4.09k|    assert(isHandleInSync() && "invalid construction!");
  ------------------
  |  Branch (1007:5): [True: 4.09k, False: 0]
  |  Branch (1007:5): [True: 4.09k, Folded]
  |  Branch (1007:5): [True: 4.09k, False: 0]
  ------------------
 1008|  4.09k|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (1008:9): [True: 0, False: 4.09k]
  ------------------
 1009|  4.09k|  }
_ZN7llvm_ks16DenseMapIteratorIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEELb1EEC2ILb0EvEERKNS0_IS2_jS4_S7_XT_EEE:
 1018|  2.50k|      : DebugEpochBase::HandleBase(I), Ptr(I.Ptr), End(I.End) {}
_ZNK7llvm_ks16DenseMapIteratorIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEELb1EEeqERKS8_:
 1029|  1.25k|  bool operator==(const ConstIterator &RHS) const {
 1030|  1.25k|    assert((!Ptr || isHandleInSync()) && "handle not in sync!");
  ------------------
  |  Branch (1030:5): [True: 1.22k, False: 24]
  |  Branch (1030:5): [True: 24, False: 0]
  |  Branch (1030:5): [True: 1.25k, Folded]
  |  Branch (1030:5): [True: 1.25k, False: 0]
  ------------------
 1031|  1.25k|    assert((!RHS.Ptr || RHS.isHandleInSync()) && "handle not in sync!");
  ------------------
  |  Branch (1031:5): [True: 1.22k, False: 24]
  |  Branch (1031:5): [True: 24, False: 0]
  |  Branch (1031:5): [True: 1.25k, Folded]
  |  Branch (1031:5): [True: 1.25k, False: 0]
  ------------------
 1032|  1.25k|    assert(getEpochAddress() == RHS.getEpochAddress() &&
  ------------------
  |  Branch (1032:5): [True: 1.25k, False: 0]
  |  Branch (1032:5): [True: 1.25k, Folded]
  |  Branch (1032:5): [True: 1.25k, False: 0]
  ------------------
 1033|  1.25k|           "comparing incomparable iterators!");
 1034|  1.25k|    return Ptr == RHS.Ptr;
 1035|  1.25k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPNS_9MCSectionEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEES3_jS5_S8_E3endEv:
   68|  2.48k|  inline iterator end() {
   69|  2.48k|    return iterator(getBucketsEnd(), getBucketsEnd(), *this, true);
   70|  2.48k|  }
_ZNK7llvm_ks16DenseMapIteratorIPNS_9MCSectionEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEELb1EEptEv:
 1024|     24|  pointer operator->() const {
 1025|     24|    assert(isHandleInSync() && "invalid iterator access!");
  ------------------
  |  Branch (1025:5): [True: 24, False: 0]
  |  Branch (1025:5): [True: 24, Folded]
  |  Branch (1025:5): [True: 24, False: 0]
  ------------------
 1026|     24|    return Ptr;
 1027|     24|  }
_ZN7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE15allocateBucketsEj:
  678|  21.0k|  bool allocateBuckets(unsigned Num) {
  679|  21.0k|    NumBuckets = Num;
  680|  21.0k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 41]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|     41|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|     41|    return true;
  687|  21.0k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E9initEmptyEv:
  277|     41|  void initEmpty() {
  278|     41|    setNumEntries(0);
  279|     41|    setNumTombstones(0);
  280|       |
  281|     41|    assert((getNumBuckets() & (getNumBuckets()-1)) == 0 &&
  ------------------
  |  Branch (281:5): [True: 41, False: 0]
  |  Branch (281:5): [True: 41, Folded]
  |  Branch (281:5): [True: 41, False: 0]
  ------------------
  282|     41|           "# initial buckets must be a power of two!");
  283|     41|    const KeyT EmptyKey = getEmptyKey();
  284|  2.66k|    for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
  ------------------
  |  Branch (284:59): [True: 2.62k, False: 41]
  ------------------
  285|  2.62k|      ::new (&B->getFirst()) KeyT(EmptyKey);
  286|     41|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E13setNumEntriesEj:
  354|    110|  void setNumEntries(unsigned Num) {
  355|    110|    static_cast<DerivedT *>(this)->setNumEntries(Num);
  356|    110|  }
_ZN7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE13setNumEntriesEj:
  659|    110|  void setNumEntries(unsigned Num) {
  660|    110|    NumEntries = Num;
  661|    110|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E16setNumTombstonesEj:
  366|     41|  void setNumTombstones(unsigned Num) {
  367|     41|    static_cast<DerivedT *>(this)->setNumTombstones(Num);
  368|     41|  }
_ZN7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE16setNumTombstonesEj:
  666|     41|  void setNumTombstones(unsigned Num) {
  667|     41|    NumTombstones = Num;
  668|     41|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E13getNumBucketsEv:
  381|  21.8k|  unsigned getNumBuckets() const {
  382|  21.8k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  21.8k|  }
_ZNK7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE13getNumBucketsEv:
  674|  21.8k|  unsigned getNumBuckets() const {
  675|  21.8k|    return NumBuckets;
  676|  21.8k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E11getEmptyKeyEv:
  343|    313|  static const KeyT getEmptyKey() {
  344|    313|    return KeyInfoT::getEmptyKey();
  345|    313|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E10getBucketsEv:
  378|    326|  BucketT *getBuckets() {
  379|    326|    return static_cast<DerivedT *>(this)->getBuckets();
  380|    326|  }
_ZNK7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE10getBucketsEv:
  670|    814|  BucketT *getBuckets() const {
  671|    814|    return Buckets;
  672|    814|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E13getBucketsEndEv:
  384|    244|  BucketT *getBucketsEnd() {
  385|    244|    return getBuckets() + getNumBuckets();
  386|    244|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_11MCSymbolELFES4_E8getFirstEv:
   40|  8.07k|  KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE15allocateBucketsEj:
  678|  28.9k|  bool allocateBuckets(unsigned Num) {
  679|  28.9k|    NumBuckets = Num;
  680|  28.9k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 8.00k]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|  8.00k|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|  8.00k|    return true;
  687|  28.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E9initEmptyEv:
  277|  8.00k|  void initEmpty() {
  278|  8.00k|    setNumEntries(0);
  279|  8.00k|    setNumTombstones(0);
  280|       |
  281|  8.00k|    assert((getNumBuckets() & (getNumBuckets()-1)) == 0 &&
  ------------------
  |  Branch (281:5): [True: 8.00k, False: 0]
  |  Branch (281:5): [True: 8.00k, Folded]
  |  Branch (281:5): [True: 8.00k, False: 0]
  ------------------
  282|  8.00k|           "# initial buckets must be a power of two!");
  283|  8.00k|    const KeyT EmptyKey = getEmptyKey();
  284|   520k|    for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
  ------------------
  |  Branch (284:59): [True: 512k, False: 8.00k]
  ------------------
  285|   512k|      ::new (&B->getFirst()) KeyT(EmptyKey);
  286|  8.00k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E13setNumEntriesEj:
  354|  16.3k|  void setNumEntries(unsigned Num) {
  355|  16.3k|    static_cast<DerivedT *>(this)->setNumEntries(Num);
  356|  16.3k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE13setNumEntriesEj:
  659|  16.3k|  void setNumEntries(unsigned Num) {
  660|  16.3k|    NumEntries = Num;
  661|  16.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E16setNumTombstonesEj:
  366|  8.00k|  void setNumTombstones(unsigned Num) {
  367|  8.00k|    static_cast<DerivedT *>(this)->setNumTombstones(Num);
  368|  8.00k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE16setNumTombstonesEj:
  666|  8.00k|  void setNumTombstones(unsigned Num) {
  667|  8.00k|    NumTombstones = Num;
  668|  8.00k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E13getNumBucketsEv:
  381|  99.9k|  unsigned getNumBuckets() const {
  382|  99.9k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  99.9k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE13getNumBucketsEv:
  674|  99.9k|  unsigned getNumBuckets() const {
  675|  99.9k|    return NumBuckets;
  676|  99.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E11getEmptyKeyEv:
  343|  47.0k|  static const KeyT getEmptyKey() {
  344|  47.0k|    return KeyInfoT::getEmptyKey();
  345|  47.0k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E10getBucketsEv:
  378|  32.0k|  BucketT *getBuckets() {
  379|  32.0k|    return static_cast<DerivedT *>(this)->getBuckets();
  380|  32.0k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE10getBucketsEv:
  670|  62.6k|  BucketT *getBuckets() const {
  671|  62.6k|    return Buckets;
  672|  62.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E13getBucketsEndEv:
  384|  16.0k|  BucketT *getBucketsEnd() {
  385|  16.0k|    return getBuckets() + getNumBuckets();
  386|  16.0k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEEE8getFirstEv:
   40|  1.56M|  KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 12.9k, False: 8.00k]
  ------------------
  266|  12.9k|      return;
  267|       |
  268|  8.00k|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|   520k|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 512k, False: 8.00k]
  ------------------
  270|   512k|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 8.30k, False: 503k]
  ------------------
  271|  8.30k|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 8.30k, False: 0]
  ------------------
  272|  8.30k|        P->getSecond().~ValueT();
  273|   512k|      P->getFirst().~KeyT();
  274|   512k|    }
  275|  8.00k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E15getTombstoneKeyEv:
  346|  30.6k|  static const KeyT getTombstoneKey() {
  347|  30.6k|    return KeyInfoT::getTombstoneKey();
  348|  30.6k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEEE9getSecondEv:
   42|  16.6k|  ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
_ZN7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 20.9k, False: 41]
  ------------------
  266|  20.9k|      return;
  267|       |
  268|     41|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|  2.66k|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 2.62k, False: 41]
  ------------------
  270|  2.62k|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 69, False: 2.55k]
  ------------------
  271|     69|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 69, False: 0]
  ------------------
  272|     69|        P->getSecond().~ValueT();
  273|  2.62k|      P->getFirst().~KeyT();
  274|  2.62k|    }
  275|     41|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E15getTombstoneKeyEv:
  346|    203|  static const KeyT getTombstoneKey() {
  347|    203|    return KeyInfoT::getTombstoneKey();
  348|    203|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_11MCSymbolELFES4_E9getSecondEv:
   42|    138|  ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
_ZN7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEED2Ev:
  573|  20.9k|  ~DenseMap() {
  574|  20.9k|    this->destroyAll();
  575|  20.9k|    operator delete(Buckets);
  576|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E10destroyAllEv:
  264|  20.9k|  void destroyAll() {
  265|  20.9k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 12.7k, False: 8.18k]
  ------------------
  266|  12.7k|      return;
  267|       |
  268|  8.18k|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|   532k|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 523k, False: 8.18k]
  ------------------
  270|   523k|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 16.4k, False: 507k]
  ------------------
  271|  16.4k|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 16.4k, False: 0]
  ------------------
  272|  16.4k|        P->getSecond().~ValueT();
  273|   523k|      P->getFirst().~KeyT();
  274|   523k|    }
  275|  8.18k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E13getNumBucketsEv:
  381|   119k|  unsigned getNumBuckets() const {
  382|   119k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|   119k|  }
_ZNK7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE13getNumBucketsEv:
  674|   119k|  unsigned getNumBuckets() const {
  675|   119k|    return NumBuckets;
  676|   119k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E11getEmptyKeyEv:
  343|  49.3k|  static const KeyT getEmptyKey() {
  344|  49.3k|    return KeyInfoT::getEmptyKey();
  345|  49.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E15getTombstoneKeyEv:
  346|  24.7k|  static const KeyT getTombstoneKey() {
  347|  24.7k|    return KeyInfoT::getTombstoneKey();
  348|  24.7k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E10getBucketsEv:
  378|  49.2k|  BucketT *getBuckets() {
  379|  49.2k|    return static_cast<DerivedT *>(this)->getBuckets();
  380|  49.2k|  }
_ZNK7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE10getBucketsEv:
  670|  74.0k|  BucketT *getBuckets() const {
  671|  74.0k|    return Buckets;
  672|  74.0k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E13getBucketsEndEv:
  384|  32.9k|  BucketT *getBucketsEnd() {
  385|  32.9k|    return getBuckets() + getNumBuckets();
  386|  32.9k|  }
_ZN7llvm_ks6detail12DenseMapPairINS_9StringRefEmE8getFirstEv:
   40|  1.62M|  KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks6detail12DenseMapPairINS_9StringRefEmE9getSecondEv:
   42|  32.8k|  ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E13getNumEntriesEv:
  351|    138|  unsigned getNumEntries() const {
  352|    138|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|    138|  }
_ZNK7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE13getNumEntriesEv:
  656|    138|  unsigned getNumEntries() const {
  657|    138|    return NumEntries;
  658|    138|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E16getNumTombstonesEv:
  363|     28|  unsigned getNumTombstones() const {
  364|     28|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|     28|  }
_ZNK7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE16getNumTombstonesEv:
  663|     28|  unsigned getNumTombstones() const {
  664|     28|    return NumTombstones;
  665|     28|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E13getNumEntriesEv:
  351|  16.6k|  unsigned getNumEntries() const {
  352|  16.6k|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|  16.6k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE13getNumEntriesEv:
  656|  16.6k|  unsigned getNumEntries() const {
  657|  16.6k|    return NumEntries;
  658|  16.6k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E16getNumTombstonesEv:
  363|    302|  unsigned getNumTombstones() const {
  364|    302|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|    302|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE16getNumTombstonesEv:
  663|    302|  unsigned getNumTombstones() const {
  664|    302|    return NumTombstones;
  665|    302|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E6insertEONSt3__14pairIS4_S4_EE:
  184|    162|  std::pair<iterator, bool> insert(std::pair<KeyT, ValueT> &&KV) {
  185|    162|    BucketT *TheBucket;
  186|    162|    if (LookupBucketFor(KV.first, TheBucket))
  ------------------
  |  Branch (186:9): [True: 93, False: 69]
  ------------------
  187|     93|      return std::make_pair(iterator(TheBucket, getBucketsEnd(), *this, true),
  188|     93|                            false); // Already in map.
  189|       |
  190|       |    // Otherwise, insert the new element.
  191|     69|    TheBucket = InsertIntoBucket(std::move(KV.first),
  192|     69|                                 std::move(KV.second),
  193|     69|                                 TheBucket);
  194|     69|    return std::make_pair(iterator(TheBucket, getBucketsEnd(), *this, true),
  195|     69|                          true);
  196|    162|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E15LookupBucketForIS4_EEbRKT_RPS9_:
  519|    203|  bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  520|    203|    const BucketT *ConstFoundBucket;
  521|    203|    bool Result = const_cast<const DenseMapBase *>(this)
  522|    203|      ->LookupBucketFor(Val, ConstFoundBucket);
  523|    203|    FoundBucket = const_cast<BucketT *>(ConstFoundBucket);
  524|    203|    return Result;
  525|    203|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_:
  469|    488|                       const BucketT *&FoundBucket) const {
  470|    488|    const BucketT *BucketsPtr = getBuckets();
  471|    488|    const unsigned NumBuckets = getNumBuckets();
  472|       |
  473|    488|    if (NumBuckets == 0) {
  ------------------
  |  Branch (473:9): [True: 326, False: 162]
  ------------------
  474|    326|      FoundBucket = nullptr;
  475|    326|      return false;
  476|    326|    }
  477|       |
  478|       |    // FoundTombstone - Keep track of whether we find a tombstone while probing.
  479|    162|    const BucketT *FoundTombstone = nullptr;
  480|    162|    const KeyT EmptyKey = getEmptyKey();
  481|    162|    const KeyT TombstoneKey = getTombstoneKey();
  482|    162|    assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
  ------------------
  |  Branch (482:5): [True: 162, False: 0]
  |  Branch (482:5): [True: 162, False: 0]
  |  Branch (482:5): [True: 162, Folded]
  |  Branch (482:5): [True: 162, False: 0]
  ------------------
  483|    162|           !KeyInfoT::isEqual(Val, TombstoneKey) &&
  484|    162|           "Empty/Tombstone value shouldn't be inserted into map!");
  485|       |
  486|    162|    unsigned BucketNo = getHashValue(Val) & (NumBuckets-1);
  487|    162|    unsigned ProbeAmt = 1;
  488|    164|    while (1) {
  ------------------
  |  Branch (488:12): [True: 164, Folded]
  ------------------
  489|    164|      const BucketT *ThisBucket = BucketsPtr + BucketNo;
  490|       |      // Found Val's bucket?  If so, return it.
  491|    164|      if (LLVM_LIKELY(KeyInfoT::isEqual(Val, ThisBucket->getFirst()))) {
  ------------------
  |  |  171|    164|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 93, False: 71]
  |  |  ------------------
  ------------------
  492|     93|        FoundBucket = ThisBucket;
  493|     93|        return true;
  494|     93|      }
  495|       |
  496|       |      // If we found an empty bucket, the key doesn't exist in the set.
  497|       |      // Insert it and return the default value.
  498|     71|      if (LLVM_LIKELY(KeyInfoT::isEqual(ThisBucket->getFirst(), EmptyKey))) {
  ------------------
  |  |  171|     71|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 69, False: 2]
  |  |  ------------------
  ------------------
  499|       |        // If we've already seen a tombstone while probing, fill it in instead
  500|       |        // of the empty bucket we eventually probed to.
  501|     69|        FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
  ------------------
  |  Branch (501:23): [True: 0, False: 69]
  ------------------
  502|     69|        return false;
  503|     69|      }
  504|       |
  505|       |      // If this is a tombstone, remember it.  If Val ends up not in the map, we
  506|       |      // prefer to return it than something that would require more probing.
  507|      2|      if (KeyInfoT::isEqual(ThisBucket->getFirst(), TombstoneKey) &&
  ------------------
  |  Branch (507:11): [True: 0, False: 2]
  ------------------
  508|      0|          !FoundTombstone)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|        FoundTombstone = ThisBucket;  // Remember the first tombstone found.
  510|       |
  511|       |      // Otherwise, it's a hash collision or a tombstone, continue quadratic
  512|       |      // probing.
  513|      2|      BucketNo += ProbeAmt++;
  514|      2|      BucketNo &= (NumBuckets-1);
  515|      2|    }
  516|    162|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E10getBucketsEv:
  375|    488|  const BucketT *getBuckets() const {
  376|    488|    return static_cast<const DerivedT *>(this)->getBuckets();
  377|    488|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E12getHashValueERKS4_:
  336|    162|  static unsigned getHashValue(const KeyT &Val) {
  337|    162|    return KeyInfoT::getHashValue(Val);
  338|    162|  }
_ZNK7llvm_ks6detail12DenseMapPairIPKNS_11MCSymbolELFES4_E8getFirstEv:
   41|    237|  const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks16DenseMapIteratorIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EELb0EEC2EPS8_SA_RKNS_14DebugEpochBaseEb:
 1006|    162|      : DebugEpochBase::HandleBase(&Epoch), Ptr(Pos), End(E) {
 1007|    162|    assert(isHandleInSync() && "invalid construction!");
  ------------------
  |  Branch (1007:5): [True: 162, False: 0]
  |  Branch (1007:5): [True: 162, Folded]
  |  Branch (1007:5): [True: 162, False: 0]
  ------------------
 1008|    162|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (1008:9): [True: 0, False: 162]
  ------------------
 1009|    162|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E16InsertIntoBucketEOS4_SC_PS9_:
  418|     69|  BucketT *InsertIntoBucket(KeyT &&Key, ValueT &&Value, BucketT *TheBucket) {
  419|     69|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  420|       |
  421|     69|    TheBucket->getFirst() = std::move(Key);
  422|     69|    ::new (&TheBucket->getSecond()) ValueT(std::move(Value));
  423|     69|    return TheBucket;
  424|     69|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E20InsertIntoBucketImplERKS4_PS9_:
  426|     69|  BucketT *InsertIntoBucketImpl(const KeyT &Key, BucketT *TheBucket) {
  427|     69|    incrementEpoch();
  428|       |
  429|       |    // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
  430|       |    // the buckets are empty (meaning that many are filled with tombstones),
  431|       |    // grow the table.
  432|       |    //
  433|       |    // The later case is tricky.  For example, if we had one empty bucket with
  434|       |    // tons of tombstones, failing lookups (e.g. for insertion) would have to
  435|       |    // probe almost the entire table until it found the empty bucket.  If the
  436|       |    // table completely filled with tombstones, no lookup would ever succeed,
  437|       |    // causing infinite loops in lookup.
  438|     69|    unsigned NewNumEntries = getNumEntries() + 1;
  439|     69|    unsigned NumBuckets = getNumBuckets();
  440|     69|    if (LLVM_UNLIKELY(NewNumEntries * 4 >= NumBuckets * 3)) {
  ------------------
  |  |  172|     69|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 41, False: 28]
  |  |  ------------------
  ------------------
  441|     41|      this->grow(NumBuckets * 2);
  442|     41|      LookupBucketFor(Key, TheBucket);
  443|     41|      NumBuckets = getNumBuckets();
  444|     41|    } else if (LLVM_UNLIKELY(NumBuckets-(NewNumEntries+getNumTombstones()) <=
  ------------------
  |  |  172|     28|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 28]
  |  |  ------------------
  ------------------
  445|     28|                             NumBuckets/8)) {
  446|      0|      this->grow(NumBuckets);
  447|      0|      LookupBucketFor(Key, TheBucket);
  448|      0|    }
  449|     69|    assert(TheBucket);
  ------------------
  |  Branch (449:5): [True: 69, False: 0]
  ------------------
  450|       |
  451|       |    // Only update the state after we've grown our bucket space appropriately
  452|       |    // so that when growing buckets we have self-consistent entry count.
  453|     69|    incrementNumEntries();
  454|       |
  455|       |    // If we are writing over a tombstone, remember this.
  456|     69|    const KeyT EmptyKey = getEmptyKey();
  457|     69|    if (!KeyInfoT::isEqual(TheBucket->getFirst(), EmptyKey))
  ------------------
  |  Branch (457:9): [True: 0, False: 69]
  ------------------
  458|      0|      decrementNumTombstones();
  459|       |
  460|     69|    return TheBucket;
  461|     69|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E4growEj:
  391|     41|  void grow(unsigned AtLeast) {
  392|     41|    static_cast<DerivedT *>(this)->grow(AtLeast);
  393|     41|  }
_ZN7llvm_ks8DenseMapIPKNS_11MCSymbolELFES3_NS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S3_EEE4growEj:
  621|     41|  void grow(unsigned AtLeast) {
  622|     41|    unsigned OldNumBuckets = NumBuckets;
  623|     41|    BucketT *OldBuckets = Buckets;
  624|       |
  625|     41|    allocateBuckets(std::max<unsigned>(64, static_cast<unsigned>(NextPowerOf2(AtLeast-1))));
  626|     41|    assert(Buckets);
  ------------------
  |  Branch (626:5): [True: 41, False: 0]
  ------------------
  627|     41|    if (!OldBuckets) {
  ------------------
  |  Branch (627:9): [True: 41, False: 0]
  ------------------
  628|     41|      this->BaseT::initEmpty();
  629|     41|      return;
  630|     41|    }
  631|       |
  632|      0|    this->moveFromOldBuckets(OldBuckets, OldBuckets+OldNumBuckets);
  633|       |
  634|       |    // Free the old table.
  635|      0|    operator delete(OldBuckets);
  636|      0|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E19incrementNumEntriesEv:
  357|     69|  void incrementNumEntries() {
  358|     69|    setNumEntries(getNumEntries() + 1);
  359|     69|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_EixEOS4_:
  245|  22.6k|  ValueT &operator[](KeyT &&Key) {
  246|  22.6k|    return FindAndConstruct(std::move(Key)).second;
  247|  22.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E16FindAndConstructEOS4_:
  237|  22.6k|  value_type& FindAndConstruct(KeyT &&Key) {
  238|  22.6k|    BucketT *TheBucket;
  239|  22.6k|    if (LookupBucketFor(Key, TheBucket))
  ------------------
  |  Branch (239:9): [True: 14.3k, False: 8.30k]
  ------------------
  240|  14.3k|      return *TheBucket;
  241|       |
  242|  8.30k|    return *InsertIntoBucket(std::move(Key), ValueT(), TheBucket);
  243|  22.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E15LookupBucketForIS4_EEbRKT_RPSF_:
  519|  30.6k|  bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  520|  30.6k|    const BucketT *ConstFoundBucket;
  521|  30.6k|    bool Result = const_cast<const DenseMapBase *>(this)
  522|  30.6k|      ->LookupBucketFor(Val, ConstFoundBucket);
  523|  30.6k|    FoundBucket = const_cast<BucketT *>(ConstFoundBucket);
  524|  30.6k|    return Result;
  525|  30.6k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E15LookupBucketForIS4_EEbRKT_RPKSF_:
  469|  30.6k|                       const BucketT *&FoundBucket) const {
  470|  30.6k|    const BucketT *BucketsPtr = getBuckets();
  471|  30.6k|    const unsigned NumBuckets = getNumBuckets();
  472|       |
  473|  30.6k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (473:9): [True: 8.00k, False: 22.6k]
  ------------------
  474|  8.00k|      FoundBucket = nullptr;
  475|  8.00k|      return false;
  476|  8.00k|    }
  477|       |
  478|       |    // FoundTombstone - Keep track of whether we find a tombstone while probing.
  479|  22.6k|    const BucketT *FoundTombstone = nullptr;
  480|  22.6k|    const KeyT EmptyKey = getEmptyKey();
  481|  22.6k|    const KeyT TombstoneKey = getTombstoneKey();
  482|  22.6k|    assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
  ------------------
  |  Branch (482:5): [True: 22.6k, False: 0]
  |  Branch (482:5): [True: 22.6k, False: 0]
  |  Branch (482:5): [True: 22.6k, Folded]
  |  Branch (482:5): [True: 22.6k, False: 0]
  ------------------
  483|  22.6k|           !KeyInfoT::isEqual(Val, TombstoneKey) &&
  484|  22.6k|           "Empty/Tombstone value shouldn't be inserted into map!");
  485|       |
  486|  22.6k|    unsigned BucketNo = getHashValue(Val) & (NumBuckets-1);
  487|  22.6k|    unsigned ProbeAmt = 1;
  488|  22.7k|    while (1) {
  ------------------
  |  Branch (488:12): [True: 22.7k, Folded]
  ------------------
  489|  22.7k|      const BucketT *ThisBucket = BucketsPtr + BucketNo;
  490|       |      // Found Val's bucket?  If so, return it.
  491|  22.7k|      if (LLVM_LIKELY(KeyInfoT::isEqual(Val, ThisBucket->getFirst()))) {
  ------------------
  |  |  171|  22.7k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 14.3k, False: 8.32k]
  |  |  ------------------
  ------------------
  492|  14.3k|        FoundBucket = ThisBucket;
  493|  14.3k|        return true;
  494|  14.3k|      }
  495|       |
  496|       |      // If we found an empty bucket, the key doesn't exist in the set.
  497|       |      // Insert it and return the default value.
  498|  8.32k|      if (LLVM_LIKELY(KeyInfoT::isEqual(ThisBucket->getFirst(), EmptyKey))) {
  ------------------
  |  |  171|  8.32k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 8.30k, False: 19]
  |  |  ------------------
  ------------------
  499|       |        // If we've already seen a tombstone while probing, fill it in instead
  500|       |        // of the empty bucket we eventually probed to.
  501|  8.30k|        FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
  ------------------
  |  Branch (501:23): [True: 0, False: 8.30k]
  ------------------
  502|  8.30k|        return false;
  503|  8.30k|      }
  504|       |
  505|       |      // If this is a tombstone, remember it.  If Val ends up not in the map, we
  506|       |      // prefer to return it than something that would require more probing.
  507|     19|      if (KeyInfoT::isEqual(ThisBucket->getFirst(), TombstoneKey) &&
  ------------------
  |  Branch (507:11): [True: 0, False: 19]
  ------------------
  508|      0|          !FoundTombstone)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|        FoundTombstone = ThisBucket;  // Remember the first tombstone found.
  510|       |
  511|       |      // Otherwise, it's a hash collision or a tombstone, continue quadratic
  512|       |      // probing.
  513|     19|      BucketNo += ProbeAmt++;
  514|     19|      BucketNo &= (NumBuckets-1);
  515|     19|    }
  516|  22.6k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E10getBucketsEv:
  375|  30.6k|  const BucketT *getBuckets() const {
  376|  30.6k|    return static_cast<const DerivedT *>(this)->getBuckets();
  377|  30.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E12getHashValueERKS4_:
  336|  22.6k|  static unsigned getHashValue(const KeyT &Val) {
  337|  22.6k|    return KeyInfoT::getHashValue(Val);
  338|  22.6k|  }
_ZNK7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEEE8getFirstEv:
   41|  31.0k|  const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E16InsertIntoBucketEOS4_OSA_PSF_:
  418|  8.30k|  BucketT *InsertIntoBucket(KeyT &&Key, ValueT &&Value, BucketT *TheBucket) {
  419|  8.30k|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  420|       |
  421|  8.30k|    TheBucket->getFirst() = std::move(Key);
  422|  8.30k|    ::new (&TheBucket->getSecond()) ValueT(std::move(Value));
  423|  8.30k|    return TheBucket;
  424|  8.30k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E20InsertIntoBucketImplERKS4_PSF_:
  426|  8.30k|  BucketT *InsertIntoBucketImpl(const KeyT &Key, BucketT *TheBucket) {
  427|  8.30k|    incrementEpoch();
  428|       |
  429|       |    // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
  430|       |    // the buckets are empty (meaning that many are filled with tombstones),
  431|       |    // grow the table.
  432|       |    //
  433|       |    // The later case is tricky.  For example, if we had one empty bucket with
  434|       |    // tons of tombstones, failing lookups (e.g. for insertion) would have to
  435|       |    // probe almost the entire table until it found the empty bucket.  If the
  436|       |    // table completely filled with tombstones, no lookup would ever succeed,
  437|       |    // causing infinite loops in lookup.
  438|  8.30k|    unsigned NewNumEntries = getNumEntries() + 1;
  439|  8.30k|    unsigned NumBuckets = getNumBuckets();
  440|  8.30k|    if (LLVM_UNLIKELY(NewNumEntries * 4 >= NumBuckets * 3)) {
  ------------------
  |  |  172|  8.30k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 8.00k, False: 302]
  |  |  ------------------
  ------------------
  441|  8.00k|      this->grow(NumBuckets * 2);
  442|  8.00k|      LookupBucketFor(Key, TheBucket);
  443|  8.00k|      NumBuckets = getNumBuckets();
  444|  8.00k|    } else if (LLVM_UNLIKELY(NumBuckets-(NewNumEntries+getNumTombstones()) <=
  ------------------
  |  |  172|    302|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 302]
  |  |  ------------------
  ------------------
  445|    302|                             NumBuckets/8)) {
  446|      0|      this->grow(NumBuckets);
  447|      0|      LookupBucketFor(Key, TheBucket);
  448|      0|    }
  449|  8.30k|    assert(TheBucket);
  ------------------
  |  Branch (449:5): [True: 8.30k, False: 0]
  ------------------
  450|       |
  451|       |    // Only update the state after we've grown our bucket space appropriately
  452|       |    // so that when growing buckets we have self-consistent entry count.
  453|  8.30k|    incrementNumEntries();
  454|       |
  455|       |    // If we are writing over a tombstone, remember this.
  456|  8.30k|    const KeyT EmptyKey = getEmptyKey();
  457|  8.30k|    if (!KeyInfoT::isEqual(TheBucket->getFirst(), EmptyKey))
  ------------------
  |  Branch (457:9): [True: 0, False: 8.30k]
  ------------------
  458|      0|      decrementNumTombstones();
  459|       |
  460|  8.30k|    return TheBucket;
  461|  8.30k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj:
  391|  8.00k|  void grow(unsigned AtLeast) {
  392|  8.00k|    static_cast<DerivedT *>(this)->grow(AtLeast);
  393|  8.00k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS4_9allocatorIS6_EEEENS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_S9_EEE4growEj:
  621|  8.00k|  void grow(unsigned AtLeast) {
  622|  8.00k|    unsigned OldNumBuckets = NumBuckets;
  623|  8.00k|    BucketT *OldBuckets = Buckets;
  624|       |
  625|  8.00k|    allocateBuckets(std::max<unsigned>(64, static_cast<unsigned>(NextPowerOf2(AtLeast-1))));
  626|  8.00k|    assert(Buckets);
  ------------------
  |  Branch (626:5): [True: 8.00k, False: 0]
  ------------------
  627|  8.00k|    if (!OldBuckets) {
  ------------------
  |  Branch (627:9): [True: 8.00k, False: 0]
  ------------------
  628|  8.00k|      this->BaseT::initEmpty();
  629|  8.00k|      return;
  630|  8.00k|    }
  631|       |
  632|      0|    this->moveFromOldBuckets(OldBuckets, OldBuckets+OldNumBuckets);
  633|       |
  634|       |    // Free the old table.
  635|      0|    operator delete(OldBuckets);
  636|      0|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFENSt3__16vectorINS_18ELFRelocationEntryENS5_9allocatorIS7_EEEENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E19incrementNumEntriesEv:
  357|  8.30k|  void incrementNumEntries() {
  358|  8.30k|    setNumEntries(getNumEntries() + 1);
  359|  8.30k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_11MCSymbolELFES4_NS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_S4_EEEES4_S4_S6_S9_E6lookupERKS4_:
  159|    285|  ValueT lookup(const KeyT &Val) const {
  160|    285|    const BucketT *TheBucket;
  161|    285|    if (LookupBucketFor(Val, TheBucket))
  ------------------
  |  Branch (161:9): [True: 0, False: 285]
  ------------------
  162|      0|      return TheBucket->getSecond();
  163|    285|    return ValueT();
  164|    285|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEEC2Ej:
  553|  8.18k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  8.18k|    init(NumInitBuckets);
  555|  8.18k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EC2Ev:
  262|  8.18k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE4initEj:
  612|  8.18k|  void init(unsigned InitBuckets) {
  613|  8.18k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 8.18k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  8.18k|    } else {
  616|  8.18k|      NumEntries = 0;
  617|  8.18k|      NumTombstones = 0;
  618|  8.18k|    }
  619|  8.18k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE15allocateBucketsEj:
  678|  16.0k|  bool allocateBuckets(unsigned Num) {
  679|  16.0k|    NumBuckets = Num;
  680|  16.0k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 8.18k, False: 7.84k]
  ------------------
  681|  8.18k|      Buckets = nullptr;
  682|  8.18k|      return false;
  683|  8.18k|    }
  684|       |
  685|  7.84k|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|  7.84k|    return true;
  687|  16.0k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E9initEmptyEv:
  277|  7.84k|  void initEmpty() {
  278|  7.84k|    setNumEntries(0);
  279|  7.84k|    setNumTombstones(0);
  280|       |
  281|  7.84k|    assert((getNumBuckets() & (getNumBuckets()-1)) == 0 &&
  ------------------
  |  Branch (281:5): [True: 7.84k, False: 0]
  |  Branch (281:5): [True: 7.84k, Folded]
  |  Branch (281:5): [True: 7.84k, False: 0]
  ------------------
  282|  7.84k|           "# initial buckets must be a power of two!");
  283|  7.84k|    const KeyT EmptyKey = getEmptyKey();
  284|   509k|    for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
  ------------------
  |  Branch (284:59): [True: 501k, False: 7.84k]
  ------------------
  285|   501k|      ::new (&B->getFirst()) KeyT(EmptyKey);
  286|  7.84k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E13setNumEntriesEj:
  354|  16.1k|  void setNumEntries(unsigned Num) {
  355|  16.1k|    static_cast<DerivedT *>(this)->setNumEntries(Num);
  356|  16.1k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE13setNumEntriesEj:
  659|  16.1k|  void setNumEntries(unsigned Num) {
  660|  16.1k|    NumEntries = Num;
  661|  16.1k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E16setNumTombstonesEj:
  366|  7.84k|  void setNumTombstones(unsigned Num) {
  367|  7.84k|    static_cast<DerivedT *>(this)->setNumTombstones(Num);
  368|  7.84k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE16setNumTombstonesEj:
  666|  7.84k|  void setNumTombstones(unsigned Num) {
  667|  7.84k|    NumTombstones = Num;
  668|  7.84k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E13getNumBucketsEv:
  381|  71.9k|  unsigned getNumBuckets() const {
  382|  71.9k|    return static_cast<const DerivedT *>(this)->getNumBuckets();
  383|  71.9k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE13getNumBucketsEv:
  674|  71.9k|  unsigned getNumBuckets() const {
  675|  71.9k|    return NumBuckets;
  676|  71.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E11getEmptyKeyEv:
  343|  32.3k|  static const KeyT getEmptyKey() {
  344|  32.3k|    return KeyInfoT::getEmptyKey();
  345|  32.3k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E10getBucketsEv:
  378|  31.3k|  BucketT *getBuckets() {
  379|  31.3k|    return static_cast<DerivedT *>(this)->getBuckets();
  380|  31.3k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE10getBucketsEv:
  670|  47.5k|  BucketT *getBuckets() const {
  671|  47.5k|    return Buckets;
  672|  47.5k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E13getBucketsEndEv:
  384|  15.6k|  BucketT *getBucketsEnd() {
  385|  15.6k|    return getBuckets() + getNumBuckets();
  386|  15.6k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFEjE8getFirstEv:
   40|  1.53M|  KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixEOS4_:
  245|  8.14k|  ValueT &operator[](KeyT &&Key) {
  246|  8.14k|    return FindAndConstruct(std::move(Key)).second;
  247|  8.14k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E16FindAndConstructEOS4_:
  237|  8.14k|  value_type& FindAndConstruct(KeyT &&Key) {
  238|  8.14k|    BucketT *TheBucket;
  239|  8.14k|    if (LookupBucketFor(Key, TheBucket))
  ------------------
  |  Branch (239:9): [True: 0, False: 8.14k]
  ------------------
  240|      0|      return *TheBucket;
  241|       |
  242|  8.14k|    return *InsertIntoBucket(std::move(Key), ValueT(), TheBucket);
  243|  8.14k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPS9_:
  519|  16.1k|  bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  520|  16.1k|    const BucketT *ConstFoundBucket;
  521|  16.1k|    bool Result = const_cast<const DenseMapBase *>(this)
  522|  16.1k|      ->LookupBucketFor(Val, ConstFoundBucket);
  523|  16.1k|    FoundBucket = const_cast<BucketT *>(ConstFoundBucket);
  524|  16.1k|    return Result;
  525|  16.1k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_:
  469|  16.1k|                       const BucketT *&FoundBucket) const {
  470|  16.1k|    const BucketT *BucketsPtr = getBuckets();
  471|  16.1k|    const unsigned NumBuckets = getNumBuckets();
  472|       |
  473|  16.1k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (473:9): [True: 7.84k, False: 8.34k]
  ------------------
  474|  7.84k|      FoundBucket = nullptr;
  475|  7.84k|      return false;
  476|  7.84k|    }
  477|       |
  478|       |    // FoundTombstone - Keep track of whether we find a tombstone while probing.
  479|  8.34k|    const BucketT *FoundTombstone = nullptr;
  480|  8.34k|    const KeyT EmptyKey = getEmptyKey();
  481|  8.34k|    const KeyT TombstoneKey = getTombstoneKey();
  482|  8.34k|    assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
  ------------------
  |  Branch (482:5): [True: 8.34k, False: 0]
  |  Branch (482:5): [True: 8.34k, False: 0]
  |  Branch (482:5): [True: 8.34k, Folded]
  |  Branch (482:5): [True: 8.34k, False: 0]
  ------------------
  483|  8.34k|           !KeyInfoT::isEqual(Val, TombstoneKey) &&
  484|  8.34k|           "Empty/Tombstone value shouldn't be inserted into map!");
  485|       |
  486|  8.34k|    unsigned BucketNo = getHashValue(Val) & (NumBuckets-1);
  487|  8.34k|    unsigned ProbeAmt = 1;
  488|  8.36k|    while (1) {
  ------------------
  |  Branch (488:12): [True: 8.36k, Folded]
  ------------------
  489|  8.36k|      const BucketT *ThisBucket = BucketsPtr + BucketNo;
  490|       |      // Found Val's bucket?  If so, return it.
  491|  8.36k|      if (LLVM_LIKELY(KeyInfoT::isEqual(Val, ThisBucket->getFirst()))) {
  ------------------
  |  |  171|  8.36k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 0, False: 8.36k]
  |  |  ------------------
  ------------------
  492|      0|        FoundBucket = ThisBucket;
  493|      0|        return true;
  494|      0|      }
  495|       |
  496|       |      // If we found an empty bucket, the key doesn't exist in the set.
  497|       |      // Insert it and return the default value.
  498|  8.36k|      if (LLVM_LIKELY(KeyInfoT::isEqual(ThisBucket->getFirst(), EmptyKey))) {
  ------------------
  |  |  171|  8.36k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 8.34k, False: 20]
  |  |  ------------------
  ------------------
  499|       |        // If we've already seen a tombstone while probing, fill it in instead
  500|       |        // of the empty bucket we eventually probed to.
  501|  8.34k|        FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
  ------------------
  |  Branch (501:23): [True: 0, False: 8.34k]
  ------------------
  502|  8.34k|        return false;
  503|  8.34k|      }
  504|       |
  505|       |      // If this is a tombstone, remember it.  If Val ends up not in the map, we
  506|       |      // prefer to return it than something that would require more probing.
  507|     20|      if (KeyInfoT::isEqual(ThisBucket->getFirst(), TombstoneKey) &&
  ------------------
  |  Branch (507:11): [True: 0, False: 20]
  ------------------
  508|      0|          !FoundTombstone)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|        FoundTombstone = ThisBucket;  // Remember the first tombstone found.
  510|       |
  511|       |      // Otherwise, it's a hash collision or a tombstone, continue quadratic
  512|       |      // probing.
  513|     20|      BucketNo += ProbeAmt++;
  514|     20|      BucketNo &= (NumBuckets-1);
  515|     20|    }
  516|  8.34k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E10getBucketsEv:
  375|  16.1k|  const BucketT *getBuckets() const {
  376|  16.1k|    return static_cast<const DerivedT *>(this)->getBuckets();
  377|  16.1k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15getTombstoneKeyEv:
  346|  16.1k|  static const KeyT getTombstoneKey() {
  347|  16.1k|    return KeyInfoT::getTombstoneKey();
  348|  16.1k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E12getHashValueERKS4_:
  336|  8.34k|  static unsigned getHashValue(const KeyT &Val) {
  337|  8.34k|    return KeyInfoT::getHashValue(Val);
  338|  8.34k|  }
_ZNK7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFEjE8getFirstEv:
   41|  16.7k|  const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E16InsertIntoBucketEOS4_OjPS9_:
  418|  8.14k|  BucketT *InsertIntoBucket(KeyT &&Key, ValueT &&Value, BucketT *TheBucket) {
  419|  8.14k|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  420|       |
  421|  8.14k|    TheBucket->getFirst() = std::move(Key);
  422|  8.14k|    ::new (&TheBucket->getSecond()) ValueT(std::move(Value));
  423|  8.14k|    return TheBucket;
  424|  8.14k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplERKS4_PS9_:
  426|  8.34k|  BucketT *InsertIntoBucketImpl(const KeyT &Key, BucketT *TheBucket) {
  427|  8.34k|    incrementEpoch();
  428|       |
  429|       |    // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
  430|       |    // the buckets are empty (meaning that many are filled with tombstones),
  431|       |    // grow the table.
  432|       |    //
  433|       |    // The later case is tricky.  For example, if we had one empty bucket with
  434|       |    // tons of tombstones, failing lookups (e.g. for insertion) would have to
  435|       |    // probe almost the entire table until it found the empty bucket.  If the
  436|       |    // table completely filled with tombstones, no lookup would ever succeed,
  437|       |    // causing infinite loops in lookup.
  438|  8.34k|    unsigned NewNumEntries = getNumEntries() + 1;
  439|  8.34k|    unsigned NumBuckets = getNumBuckets();
  440|  8.34k|    if (LLVM_UNLIKELY(NewNumEntries * 4 >= NumBuckets * 3)) {
  ------------------
  |  |  172|  8.34k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 7.84k, False: 504]
  |  |  ------------------
  ------------------
  441|  7.84k|      this->grow(NumBuckets * 2);
  442|  7.84k|      LookupBucketFor(Key, TheBucket);
  443|  7.84k|      NumBuckets = getNumBuckets();
  444|  7.84k|    } else if (LLVM_UNLIKELY(NumBuckets-(NewNumEntries+getNumTombstones()) <=
  ------------------
  |  |  172|    504|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 504]
  |  |  ------------------
  ------------------
  445|    504|                             NumBuckets/8)) {
  446|      0|      this->grow(NumBuckets);
  447|      0|      LookupBucketFor(Key, TheBucket);
  448|      0|    }
  449|  8.34k|    assert(TheBucket);
  ------------------
  |  Branch (449:5): [True: 8.34k, False: 0]
  ------------------
  450|       |
  451|       |    // Only update the state after we've grown our bucket space appropriately
  452|       |    // so that when growing buckets we have self-consistent entry count.
  453|  8.34k|    incrementNumEntries();
  454|       |
  455|       |    // If we are writing over a tombstone, remember this.
  456|  8.34k|    const KeyT EmptyKey = getEmptyKey();
  457|  8.34k|    if (!KeyInfoT::isEqual(TheBucket->getFirst(), EmptyKey))
  ------------------
  |  Branch (457:9): [True: 0, False: 8.34k]
  ------------------
  458|      0|      decrementNumTombstones();
  459|       |
  460|  8.34k|    return TheBucket;
  461|  8.34k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E13getNumEntriesEv:
  351|  16.6k|  unsigned getNumEntries() const {
  352|  16.6k|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|  16.6k|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE13getNumEntriesEv:
  656|  16.6k|  unsigned getNumEntries() const {
  657|  16.6k|    return NumEntries;
  658|  16.6k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E4growEj:
  391|  7.84k|  void grow(unsigned AtLeast) {
  392|  7.84k|    static_cast<DerivedT *>(this)->grow(AtLeast);
  393|  7.84k|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE4growEj:
  621|  7.84k|  void grow(unsigned AtLeast) {
  622|  7.84k|    unsigned OldNumBuckets = NumBuckets;
  623|  7.84k|    BucketT *OldBuckets = Buckets;
  624|       |
  625|  7.84k|    allocateBuckets(std::max<unsigned>(64, static_cast<unsigned>(NextPowerOf2(AtLeast-1))));
  626|  7.84k|    assert(Buckets);
  ------------------
  |  Branch (626:5): [True: 7.84k, False: 0]
  ------------------
  627|  7.84k|    if (!OldBuckets) {
  ------------------
  |  Branch (627:9): [True: 7.84k, False: 0]
  ------------------
  628|  7.84k|      this->BaseT::initEmpty();
  629|  7.84k|      return;
  630|  7.84k|    }
  631|       |
  632|      0|    this->moveFromOldBuckets(OldBuckets, OldBuckets+OldNumBuckets);
  633|       |
  634|       |    // Free the old table.
  635|      0|    operator delete(OldBuckets);
  636|      0|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E16getNumTombstonesEv:
  363|    504|  unsigned getNumTombstones() const {
  364|    504|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|    504|  }
_ZNK7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEE16getNumTombstonesEv:
  663|    504|  unsigned getNumTombstones() const {
  664|    504|    return NumTombstones;
  665|    504|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E19incrementNumEntriesEv:
  357|  8.34k|  void incrementNumEntries() {
  358|  8.34k|    setNumEntries(getNumEntries() + 1);
  359|  8.34k|  }
_ZN7llvm_ks6detail12DenseMapPairIPKNS_12MCSectionELFEjE9getSecondEv:
   42|  16.6k|  ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_:
  233|    202|  ValueT &operator[](const KeyT &Key) {
  234|    202|    return FindAndConstruct(Key).second;
  235|    202|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E16FindAndConstructERKS4_:
  225|    202|  value_type& FindAndConstruct(const KeyT &Key) {
  226|    202|    BucketT *TheBucket;
  227|    202|    if (LookupBucketFor(Key, TheBucket))
  ------------------
  |  Branch (227:9): [True: 0, False: 202]
  ------------------
  228|      0|      return *TheBucket;
  229|       |
  230|    202|    return *InsertIntoBucket(Key, ValueT(), TheBucket);
  231|    202|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E16InsertIntoBucketERKS4_OjPS9_:
  410|    202|                            BucketT *TheBucket) {
  411|    202|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  412|       |
  413|    202|    TheBucket->getFirst() = Key;
  414|    202|    ::new (&TheBucket->getSecond()) ValueT(std::move(Value));
  415|    202|    return TheBucket;
  416|    202|  }
_ZN7llvm_ks8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS_6detail12DenseMapPairIS3_jEEED2Ev:
  573|  8.18k|  ~DenseMap() {
  574|  8.18k|    this->destroyAll();
  575|  8.18k|    operator delete(Buckets);
  576|  8.18k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E10destroyAllEv:
  264|  8.18k|  void destroyAll() {
  265|  8.18k|    if (getNumBuckets() == 0) // Nothing to do.
  ------------------
  |  Branch (265:9): [True: 345, False: 7.84k]
  ------------------
  266|    345|      return;
  267|       |
  268|  7.84k|    const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  269|   509k|    for (BucketT *P = getBuckets(), *E = getBucketsEnd(); P != E; ++P) {
  ------------------
  |  Branch (269:59): [True: 501k, False: 7.84k]
  ------------------
  270|   501k|      if (!KeyInfoT::isEqual(P->getFirst(), EmptyKey) &&
  ------------------
  |  Branch (270:11): [True: 8.34k, False: 493k]
  ------------------
  271|  8.34k|          !KeyInfoT::isEqual(P->getFirst(), TombstoneKey))
  ------------------
  |  Branch (271:11): [True: 8.34k, False: 0]
  ------------------
  272|  8.34k|        P->getSecond().~ValueT();
  273|   501k|      P->getFirst().~KeyT();
  274|   501k|    }
  275|  7.84k|  }
_ZN7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEEC2Ej:
  553|  20.9k|  explicit DenseMap(unsigned NumInitBuckets = 0) {
  554|  20.9k|    init(NumInitBuckets);
  555|  20.9k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_EC2Ev:
  262|  20.9k|  DenseMapBase() = default;
_ZN7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE4initEj:
  612|  20.9k|  void init(unsigned InitBuckets) {
  613|  20.9k|    if (allocateBuckets(InitBuckets)) {
  ------------------
  |  Branch (613:9): [True: 0, False: 20.9k]
  ------------------
  614|      0|      this->BaseT::initEmpty();
  615|  20.9k|    } else {
  616|  20.9k|      NumEntries = 0;
  617|  20.9k|      NumTombstones = 0;
  618|  20.9k|    }
  619|  20.9k|  }
_ZN7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE15allocateBucketsEj:
  678|  29.1k|  bool allocateBuckets(unsigned Num) {
  679|  29.1k|    NumBuckets = Num;
  680|  29.1k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (680:9): [True: 20.9k, False: 8.18k]
  ------------------
  681|  20.9k|      Buckets = nullptr;
  682|  20.9k|      return false;
  683|  20.9k|    }
  684|       |
  685|  8.18k|    Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT) * NumBuckets));
  686|  8.18k|    return true;
  687|  29.1k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E9initEmptyEv:
  277|  8.18k|  void initEmpty() {
  278|  8.18k|    setNumEntries(0);
  279|  8.18k|    setNumTombstones(0);
  280|       |
  281|  8.18k|    assert((getNumBuckets() & (getNumBuckets()-1)) == 0 &&
  ------------------
  |  Branch (281:5): [True: 8.18k, False: 0]
  |  Branch (281:5): [True: 8.18k, Folded]
  |  Branch (281:5): [True: 8.18k, False: 0]
  ------------------
  282|  8.18k|           "# initial buckets must be a power of two!");
  283|  8.18k|    const KeyT EmptyKey = getEmptyKey();
  284|   532k|    for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
  ------------------
  |  Branch (284:59): [True: 523k, False: 8.18k]
  ------------------
  285|   523k|      ::new (&B->getFirst()) KeyT(EmptyKey);
  286|  8.18k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E13setNumEntriesEj:
  354|  24.5k|  void setNumEntries(unsigned Num) {
  355|  24.5k|    static_cast<DerivedT *>(this)->setNumEntries(Num);
  356|  24.5k|  }
_ZN7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE13setNumEntriesEj:
  659|  24.5k|  void setNumEntries(unsigned Num) {
  660|  24.5k|    NumEntries = Num;
  661|  24.5k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E16setNumTombstonesEj:
  366|  8.18k|  void setNumTombstones(unsigned Num) {
  367|  8.18k|    static_cast<DerivedT *>(this)->setNumTombstones(Num);
  368|  8.18k|  }
_ZN7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE16setNumTombstonesEj:
  666|  8.18k|  void setNumTombstones(unsigned Num) {
  667|  8.18k|    NumTombstones = Num;
  668|  8.18k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E13getNumEntriesEv:
  351|  32.8k|  unsigned getNumEntries() const {
  352|  32.8k|    return static_cast<const DerivedT *>(this)->getNumEntries();
  353|  32.8k|  }
_ZNK7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE13getNumEntriesEv:
  656|  32.8k|  unsigned getNumEntries() const {
  657|  32.8k|    return NumEntries;
  658|  32.8k|  }
_ZN7llvm_ks16DenseMapIteratorINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEELb0EEC2EPS6_S8_RKNS_14DebugEpochBaseEb:
 1006|  16.5k|      : DebugEpochBase::HandleBase(&Epoch), Ptr(Pos), End(E) {
 1007|  16.5k|    assert(isHandleInSync() && "invalid construction!");
  ------------------
  |  Branch (1007:5): [True: 16.5k, False: 0]
  |  Branch (1007:5): [True: 16.5k, Folded]
  |  Branch (1007:5): [True: 16.5k, False: 0]
  ------------------
 1008|  16.5k|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (1008:9): [True: 0, False: 16.5k]
  ------------------
 1009|  16.5k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E16getNumTombstonesEv:
  363|  8.21k|  unsigned getNumTombstones() const {
  364|  8.21k|    return static_cast<const DerivedT *>(this)->getNumTombstones();
  365|  8.21k|  }
_ZNK7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE16getNumTombstonesEv:
  663|  8.21k|  unsigned getNumTombstones() const {
  664|  8.21k|    return NumTombstones;
  665|  8.21k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E15LookupBucketForIS2_EEbRKT_RPKS7_:
  469|  24.7k|                       const BucketT *&FoundBucket) const {
  470|  24.7k|    const BucketT *BucketsPtr = getBuckets();
  471|  24.7k|    const unsigned NumBuckets = getNumBuckets();
  472|       |
  473|  24.7k|    if (NumBuckets == 0) {
  ------------------
  |  Branch (473:9): [True: 8.18k, False: 16.5k]
  ------------------
  474|  8.18k|      FoundBucket = nullptr;
  475|  8.18k|      return false;
  476|  8.18k|    }
  477|       |
  478|       |    // FoundTombstone - Keep track of whether we find a tombstone while probing.
  479|  16.5k|    const BucketT *FoundTombstone = nullptr;
  480|  16.5k|    const KeyT EmptyKey = getEmptyKey();
  481|  16.5k|    const KeyT TombstoneKey = getTombstoneKey();
  482|  16.5k|    assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
  ------------------
  |  Branch (482:5): [True: 16.5k, False: 0]
  |  Branch (482:5): [True: 16.5k, False: 0]
  |  Branch (482:5): [True: 16.5k, Folded]
  |  Branch (482:5): [True: 16.5k, False: 0]
  ------------------
  483|  16.5k|           !KeyInfoT::isEqual(Val, TombstoneKey) &&
  484|  16.5k|           "Empty/Tombstone value shouldn't be inserted into map!");
  485|       |
  486|  16.5k|    unsigned BucketNo = getHashValue(Val) & (NumBuckets-1);
  487|  16.5k|    unsigned ProbeAmt = 1;
  488|  16.7k|    while (1) {
  ------------------
  |  Branch (488:12): [True: 16.7k, Folded]
  ------------------
  489|  16.7k|      const BucketT *ThisBucket = BucketsPtr + BucketNo;
  490|       |      // Found Val's bucket?  If so, return it.
  491|  16.7k|      if (LLVM_LIKELY(KeyInfoT::isEqual(Val, ThisBucket->getFirst()))) {
  ------------------
  |  |  171|  16.7k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 132, False: 16.6k]
  |  |  ------------------
  ------------------
  492|    132|        FoundBucket = ThisBucket;
  493|    132|        return true;
  494|    132|      }
  495|       |
  496|       |      // If we found an empty bucket, the key doesn't exist in the set.
  497|       |      // Insert it and return the default value.
  498|  16.6k|      if (LLVM_LIKELY(KeyInfoT::isEqual(ThisBucket->getFirst(), EmptyKey))) {
  ------------------
  |  |  171|  16.6k|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 16.4k, False: 202]
  |  |  ------------------
  ------------------
  499|       |        // If we've already seen a tombstone while probing, fill it in instead
  500|       |        // of the empty bucket we eventually probed to.
  501|  16.4k|        FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
  ------------------
  |  Branch (501:23): [True: 0, False: 16.4k]
  ------------------
  502|  16.4k|        return false;
  503|  16.4k|      }
  504|       |
  505|       |      // If this is a tombstone, remember it.  If Val ends up not in the map, we
  506|       |      // prefer to return it than something that would require more probing.
  507|    202|      if (KeyInfoT::isEqual(ThisBucket->getFirst(), TombstoneKey) &&
  ------------------
  |  Branch (507:11): [True: 0, False: 202]
  ------------------
  508|      0|          !FoundTombstone)
  ------------------
  |  Branch (508:11): [True: 0, False: 0]
  ------------------
  509|      0|        FoundTombstone = ThisBucket;  // Remember the first tombstone found.
  510|       |
  511|       |      // Otherwise, it's a hash collision or a tombstone, continue quadratic
  512|       |      // probing.
  513|    202|      BucketNo += ProbeAmt++;
  514|    202|      BucketNo &= (NumBuckets-1);
  515|    202|    }
  516|  16.5k|  }
_ZNK7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E10getBucketsEv:
  375|  24.7k|  const BucketT *getBuckets() const {
  376|  24.7k|    return static_cast<const DerivedT *>(this)->getBuckets();
  377|  24.7k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E12getHashValueERKS2_:
  336|  16.5k|  static unsigned getHashValue(const KeyT &Val) {
  337|  16.5k|    return KeyInfoT::getHashValue(Val);
  338|  16.5k|  }
_ZNK7llvm_ks6detail12DenseMapPairINS_9StringRefEmE8getFirstEv:
   41|  33.5k|  const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E6insertEONSt3__14pairIS2_mEE:
  184|  16.5k|  std::pair<iterator, bool> insert(std::pair<KeyT, ValueT> &&KV) {
  185|  16.5k|    BucketT *TheBucket;
  186|  16.5k|    if (LookupBucketFor(KV.first, TheBucket))
  ------------------
  |  Branch (186:9): [True: 132, False: 16.4k]
  ------------------
  187|    132|      return std::make_pair(iterator(TheBucket, getBucketsEnd(), *this, true),
  188|    132|                            false); // Already in map.
  189|       |
  190|       |    // Otherwise, insert the new element.
  191|  16.4k|    TheBucket = InsertIntoBucket(std::move(KV.first),
  192|  16.4k|                                 std::move(KV.second),
  193|  16.4k|                                 TheBucket);
  194|  16.4k|    return std::make_pair(iterator(TheBucket, getBucketsEnd(), *this, true),
  195|  16.4k|                          true);
  196|  16.5k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E15LookupBucketForIS2_EEbRKT_RPS7_:
  519|  24.7k|  bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  520|  24.7k|    const BucketT *ConstFoundBucket;
  521|  24.7k|    bool Result = const_cast<const DenseMapBase *>(this)
  522|  24.7k|      ->LookupBucketFor(Val, ConstFoundBucket);
  523|  24.7k|    FoundBucket = const_cast<BucketT *>(ConstFoundBucket);
  524|  24.7k|    return Result;
  525|  24.7k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E16InsertIntoBucketEOS2_OmPS7_:
  418|  16.4k|  BucketT *InsertIntoBucket(KeyT &&Key, ValueT &&Value, BucketT *TheBucket) {
  419|  16.4k|    TheBucket = InsertIntoBucketImpl(Key, TheBucket);
  420|       |
  421|  16.4k|    TheBucket->getFirst() = std::move(Key);
  422|  16.4k|    ::new (&TheBucket->getSecond()) ValueT(std::move(Value));
  423|  16.4k|    return TheBucket;
  424|  16.4k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E20InsertIntoBucketImplERKS2_PS7_:
  426|  16.4k|  BucketT *InsertIntoBucketImpl(const KeyT &Key, BucketT *TheBucket) {
  427|  16.4k|    incrementEpoch();
  428|       |
  429|       |    // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
  430|       |    // the buckets are empty (meaning that many are filled with tombstones),
  431|       |    // grow the table.
  432|       |    //
  433|       |    // The later case is tricky.  For example, if we had one empty bucket with
  434|       |    // tons of tombstones, failing lookups (e.g. for insertion) would have to
  435|       |    // probe almost the entire table until it found the empty bucket.  If the
  436|       |    // table completely filled with tombstones, no lookup would ever succeed,
  437|       |    // causing infinite loops in lookup.
  438|  16.4k|    unsigned NewNumEntries = getNumEntries() + 1;
  439|  16.4k|    unsigned NumBuckets = getNumBuckets();
  440|  16.4k|    if (LLVM_UNLIKELY(NewNumEntries * 4 >= NumBuckets * 3)) {
  ------------------
  |  |  172|  16.4k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 8.18k, False: 8.21k]
  |  |  ------------------
  ------------------
  441|  8.18k|      this->grow(NumBuckets * 2);
  442|  8.18k|      LookupBucketFor(Key, TheBucket);
  443|  8.18k|      NumBuckets = getNumBuckets();
  444|  8.21k|    } else if (LLVM_UNLIKELY(NumBuckets-(NewNumEntries+getNumTombstones()) <=
  ------------------
  |  |  172|  8.21k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 8.21k]
  |  |  ------------------
  ------------------
  445|  8.21k|                             NumBuckets/8)) {
  446|      0|      this->grow(NumBuckets);
  447|      0|      LookupBucketFor(Key, TheBucket);
  448|      0|    }
  449|  16.4k|    assert(TheBucket);
  ------------------
  |  Branch (449:5): [True: 16.4k, False: 0]
  ------------------
  450|       |
  451|       |    // Only update the state after we've grown our bucket space appropriately
  452|       |    // so that when growing buckets we have self-consistent entry count.
  453|  16.4k|    incrementNumEntries();
  454|       |
  455|       |    // If we are writing over a tombstone, remember this.
  456|  16.4k|    const KeyT EmptyKey = getEmptyKey();
  457|  16.4k|    if (!KeyInfoT::isEqual(TheBucket->getFirst(), EmptyKey))
  ------------------
  |  Branch (457:9): [True: 0, False: 16.4k]
  ------------------
  458|      0|      decrementNumTombstones();
  459|       |
  460|  16.4k|    return TheBucket;
  461|  16.4k|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E4growEj:
  391|  8.18k|  void grow(unsigned AtLeast) {
  392|  8.18k|    static_cast<DerivedT *>(this)->grow(AtLeast);
  393|  8.18k|  }
_ZN7llvm_ks8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEEE4growEj:
  621|  8.18k|  void grow(unsigned AtLeast) {
  622|  8.18k|    unsigned OldNumBuckets = NumBuckets;
  623|  8.18k|    BucketT *OldBuckets = Buckets;
  624|       |
  625|  8.18k|    allocateBuckets(std::max<unsigned>(64, static_cast<unsigned>(NextPowerOf2(AtLeast-1))));
  626|  8.18k|    assert(Buckets);
  ------------------
  |  Branch (626:5): [True: 8.18k, False: 0]
  ------------------
  627|  8.18k|    if (!OldBuckets) {
  ------------------
  |  Branch (627:9): [True: 8.18k, False: 0]
  ------------------
  628|  8.18k|      this->BaseT::initEmpty();
  629|  8.18k|      return;
  630|  8.18k|    }
  631|       |
  632|      0|    this->moveFromOldBuckets(OldBuckets, OldBuckets+OldNumBuckets);
  633|       |
  634|       |    // Free the old table.
  635|      0|    operator delete(OldBuckets);
  636|      0|  }
_ZN7llvm_ks12DenseMapBaseINS_8DenseMapINS_9StringRefEmNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_mEEEES2_mS4_S7_E19incrementNumEntriesEv:
  357|  16.4k|  void incrementNumEntries() {
  358|  16.4k|    setNumEntries(getNumEntries() + 1);
  359|  16.4k|  }
_ZNK7llvm_ks16DenseMapIteratorINS_9StringRefEmNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_mEELb0EEptEv:
 1024|  16.5k|  pointer operator->() const {
 1025|  16.5k|    assert(isHandleInSync() && "invalid iterator access!");
  ------------------
  |  Branch (1025:5): [True: 16.5k, False: 0]
  |  Branch (1025:5): [True: 16.5k, Folded]
  |  Branch (1025:5): [True: 16.5k, False: 0]
  ------------------
 1026|  16.5k|    return Ptr;
 1027|  16.5k|  }

_ZN7llvm_ks12DenseMapInfoINS_9StringRefEE11getEmptyKeyEv:
  171|  1.27M|  static inline StringRef getEmptyKey() {
  172|  1.27M|    return StringRef(reinterpret_cast<const char *>(~static_cast<uintptr_t>(0)),
  173|  1.27M|                     0);
  174|  1.27M|  }
_ZN7llvm_ks12DenseMapInfoINS_9StringRefEE15getTombstoneKeyEv:
  175|   107k|  static inline StringRef getTombstoneKey() {
  176|   107k|    return StringRef(reinterpret_cast<const char *>(~static_cast<uintptr_t>(1)),
  177|   107k|                     0);
  178|   107k|  }
_ZN7llvm_ks12DenseMapInfoINS_9StringRefEE12getHashValueES1_:
  179|  16.5k|  static unsigned getHashValue(StringRef Val) {
  180|  16.5k|    assert(Val.data() != getEmptyKey().data() && "Cannot hash the empty key!");
  ------------------
  |  Branch (180:5): [True: 16.5k, False: 0]
  |  Branch (180:5): [True: 16.5k, Folded]
  |  Branch (180:5): [True: 16.5k, False: 0]
  ------------------
  181|  16.5k|    assert(Val.data() != getTombstoneKey().data() &&
  ------------------
  |  Branch (181:5): [True: 16.5k, False: 0]
  |  Branch (181:5): [True: 16.5k, Folded]
  |  Branch (181:5): [True: 16.5k, False: 0]
  ------------------
  182|  16.5k|           "Cannot hash the tombstone key!");
  183|  16.5k|    return (unsigned)(hash_value(Val));
  184|  16.5k|  }
_ZN7llvm_ks12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_:
  185|   623k|  static bool isEqual(StringRef LHS, StringRef RHS) {
  186|   623k|    if (RHS.data() == getEmptyKey().data())
  ------------------
  |  Branch (186:9): [True: 589k, False: 33.4k]
  ------------------
  187|   589k|      return LHS.data() == getEmptyKey().data();
  188|  33.4k|    if (RHS.data() == getTombstoneKey().data())
  ------------------
  |  Branch (188:9): [True: 33.1k, False: 334]
  ------------------
  189|  33.1k|      return LHS.data() == getTombstoneKey().data();
  190|    334|    return LHS == RHS;
  191|  33.4k|  }
_ZN7llvm_ks12DenseMapInfoIPNS_9MCSectionEE11getEmptyKeyEv:
   36|  1.95k|  static inline T* getEmptyKey() {
   37|  1.95k|    uintptr_t Val = static_cast<uintptr_t>(-1);
   38|  1.95k|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   39|  1.95k|    return reinterpret_cast<T*>(Val);
   40|  1.95k|  }
_ZN7llvm_ks12DenseMapInfoIPNS_9MCSectionEE15getTombstoneKeyEv:
   41|  1.72k|  static inline T* getTombstoneKey() {
   42|  1.72k|    uintptr_t Val = static_cast<uintptr_t>(-2);
   43|  1.72k|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   44|  1.72k|    return reinterpret_cast<T*>(Val);
   45|  1.72k|  }
_ZN7llvm_ks12DenseMapInfoIPNS_9MCSectionEE7isEqualEPKS1_S5_:
   50|  12.5k|  static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
_ZN7llvm_ks12DenseMapInfoIPNS_9MCSectionEE12getHashValueEPKS1_:
   46|  1.61k|  static unsigned getHashValue(const T *PtrVal) {
   47|  1.61k|    return (unsigned((uintptr_t)PtrVal) >> 4) ^
   48|  1.61k|           (unsigned((uintptr_t)PtrVal) >> 9);
   49|  1.61k|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_12MCSectionELFEE11getEmptyKeyEv:
   36|   185k|  static inline T* getEmptyKey() {
   37|   185k|    uintptr_t Val = static_cast<uintptr_t>(-1);
   38|   185k|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   39|   185k|    return reinterpret_cast<T*>(Val);
   40|   185k|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_12MCSectionELFEE15getTombstoneKeyEv:
   41|   110k|  static inline T* getTombstoneKey() {
   42|   110k|    uintptr_t Val = static_cast<uintptr_t>(-2);
   43|   110k|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   44|   110k|    return reinterpret_cast<T*>(Val);
   45|   110k|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_12MCSectionELFEE7isEqualES3_S3_:
   50|  3.96M|  static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
_ZN7llvm_ks12DenseMapInfoIPKNS_12MCSectionELFEE12getHashValueES3_:
   46|  52.4k|  static unsigned getHashValue(const T *PtrVal) {
   47|  52.4k|    return (unsigned((uintptr_t)PtrVal) >> 4) ^
   48|  52.4k|           (unsigned((uintptr_t)PtrVal) >> 9);
   49|  52.4k|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_9MCSectionEE11getEmptyKeyEv:
   36|   489k|  static inline T* getEmptyKey() {
   37|   489k|    uintptr_t Val = static_cast<uintptr_t>(-1);
   38|   489k|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   39|   489k|    return reinterpret_cast<T*>(Val);
   40|   489k|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_9MCSectionEE15getTombstoneKeyEv:
   41|   471k|  static inline T* getTombstoneKey() {
   42|   471k|    uintptr_t Val = static_cast<uintptr_t>(-2);
   43|   471k|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   44|   471k|    return reinterpret_cast<T*>(Val);
   45|   471k|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_9MCSectionEE7isEqualES3_S3_:
   50|  1.98M|  static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
_ZN7llvm_ks12DenseMapInfoIPKNS_9MCSectionEE12getHashValueES3_:
   46|   462k|  static unsigned getHashValue(const T *PtrVal) {
   47|   462k|    return (unsigned((uintptr_t)PtrVal) >> 4) ^
   48|   462k|           (unsigned((uintptr_t)PtrVal) >> 9);
   49|   462k|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_11MCSymbolELFEE11getEmptyKeyEv:
   36|    313|  static inline T* getEmptyKey() {
   37|    313|    uintptr_t Val = static_cast<uintptr_t>(-1);
   38|    313|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   39|    313|    return reinterpret_cast<T*>(Val);
   40|    313|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_11MCSymbolELFEE15getTombstoneKeyEv:
   41|    203|  static inline T* getTombstoneKey() {
   42|    203|    uintptr_t Val = static_cast<uintptr_t>(-2);
   43|    203|    Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   44|    203|    return reinterpret_cast<T*>(Val);
   45|    203|  }
_ZN7llvm_ks12DenseMapInfoIPKNS_11MCSymbolELFEE7isEqualES3_S3_:
   50|  3.32k|  static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
_ZN7llvm_ks12DenseMapInfoIPKNS_11MCSymbolELFEE12getHashValueES3_:
   46|    162|  static unsigned getHashValue(const T *PtrVal) {
   47|    162|    return (unsigned((uintptr_t)PtrVal) >> 4) ^
   48|    162|           (unsigned((uintptr_t)PtrVal) >> 9);
   49|    162|  }

_ZN7llvm_ks8DenseSetIPNS_9MCSectionENS_12DenseMapInfoIS2_EEEC2Ej:
   51|  20.9k|  explicit DenseSet(unsigned NumInitBuckets = 0) : TheMap(NumInitBuckets) {}
_ZN7llvm_ks8DenseSetIPNS_9MCSectionENS_12DenseMapInfoIS2_EEE5clearEv:
   61|  20.9k|  void clear() {
   62|  20.9k|    TheMap.clear();
   63|  20.9k|  }

_ZN7llvm_ks14DebugEpochBaseD2Ev:
   63|   235k|  ~DebugEpochBase() { incrementEpoch(); }
_ZN7llvm_ks14DebugEpochBase14incrementEpochEv:
   59|   361k|  void incrementEpoch() { ++Epoch; }
_ZN7llvm_ks14DebugEpochBaseC2Ev:
   55|   235k|  DebugEpochBase() : Epoch(0) {}
_ZN7llvm_ks14DebugEpochBase10HandleBaseC2EPKS0_:
   81|  20.7k|        : EpochAddress(&Parent->Epoch), EpochAtCreation(Parent->Epoch) {}
_ZNK7llvm_ks14DebugEpochBase10HandleBase14isHandleInSyncEv:
   86|  38.9k|    bool isHandleInSync() const { return *EpochAddress == EpochAtCreation; }
_ZNK7llvm_ks14DebugEpochBase10HandleBase15getEpochAddressEv:
   91|  2.50k|    const void *getEpochAddress() const { return EpochAddress; }

_ZN7llvm_ks9hash_codeC2Em:
   82|  16.5k|  hash_code(size_t value) : value(value) {}
_ZNK7llvm_ks9hash_codecvmEv:
   85|  16.5k|  /*explicit*/ operator size_t() const { return value; }
_ZN7llvm_ks7hashing6detail7fetch64EPKc:
  146|    404|inline uint64_t fetch64(const char *p) {
  147|    404|  uint64_t result;
  148|    404|  memcpy(&result, p, sizeof(result));
  149|    404|  if (sys::IsBigEndianHost)
  ------------------
  |  Branch (149:7): [Folded, False: 404]
  ------------------
  150|      0|    sys::swapByteOrder(result);
  151|    404|  return result;
  152|    404|}
_ZN7llvm_ks7hashing6detail7fetch32EPKc:
  154|  32.1k|inline uint32_t fetch32(const char *p) {
  155|  32.1k|  uint32_t result;
  156|  32.1k|  memcpy(&result, p, sizeof(result));
  157|  32.1k|  if (sys::IsBigEndianHost)
  ------------------
  |  Branch (157:7): [Folded, False: 32.1k]
  ------------------
  158|      0|    sys::swapByteOrder(result);
  159|  32.1k|  return result;
  160|  32.1k|}
_ZN7llvm_ks7hashing6detail6rotateEmm:
  171|    202|inline uint64_t rotate(uint64_t val, size_t shift) {
  172|       |  // Avoid shifting by 64: doing so yields an undefined result.
  173|    202|  return shift == 0 ? val : ((val >> shift) | (val << (64 - shift)));
  ------------------
  |  Branch (173:10): [True: 0, False: 202]
  ------------------
  174|    202|}
_ZN7llvm_ks7hashing6detail13hash_16_bytesEmm:
  180|  16.2k|inline uint64_t hash_16_bytes(uint64_t low, uint64_t high) {
  181|       |  // Murmur-inspired hashing.
  182|  16.2k|  const uint64_t kMul = 0x9ddfea08eb382d69ULL;
  183|  16.2k|  uint64_t a = (low ^ high) * kMul;
  184|  16.2k|  a ^= (a >> 47);
  185|  16.2k|  uint64_t b = (high ^ a) * kMul;
  186|  16.2k|  b ^= (b >> 47);
  187|  16.2k|  b *= kMul;
  188|  16.2k|  return b;
  189|  16.2k|}
_ZN7llvm_ks7hashing6detail15hash_4to8_bytesEPKcmm:
  200|  16.0k|inline uint64_t hash_4to8_bytes(const char *s, size_t len, uint64_t seed) {
  201|  16.0k|  uint64_t a = fetch32(s);
  202|  16.0k|  return hash_16_bytes(len + (a << 3), seed ^ fetch32(s + len - 4));
  203|  16.0k|}
_ZN7llvm_ks7hashing6detail16hash_9to16_bytesEPKcmm:
  205|    202|inline uint64_t hash_9to16_bytes(const char *s, size_t len, uint64_t seed) {
  206|    202|  uint64_t a = fetch64(s);
  207|    202|  uint64_t b = fetch64(s + len - 8);
  208|    202|  return hash_16_bytes(seed ^ a, rotate(b + len, len)) ^ b;
  209|    202|}
_ZN7llvm_ks7hashing6detail10hash_shortEPKcmm:
  243|  16.5k|inline uint64_t hash_short(const char *s, size_t length, uint64_t seed) {
  244|  16.5k|  if (length >= 4 && length <= 8)
  ------------------
  |  Branch (244:7): [True: 16.2k, False: 280]
  |  Branch (244:22): [True: 16.0k, False: 202]
  ------------------
  245|  16.0k|    return hash_4to8_bytes(s, length, seed);
  246|    482|  if (length > 8 && length <= 16)
  ------------------
  |  Branch (246:7): [True: 202, False: 280]
  |  Branch (246:21): [True: 202, False: 0]
  ------------------
  247|    202|    return hash_9to16_bytes(s, length, seed);
  248|    280|  if (length > 16 && length <= 32)
  ------------------
  |  Branch (248:7): [True: 0, False: 280]
  |  Branch (248:22): [True: 0, False: 0]
  ------------------
  249|      0|    return hash_17to32_bytes(s, length, seed);
  250|    280|  if (length > 32)
  ------------------
  |  Branch (250:7): [True: 0, False: 280]
  ------------------
  251|      0|    return hash_33to64_bytes(s, length, seed);
  252|    280|  if (length != 0)
  ------------------
  |  Branch (252:7): [True: 0, False: 280]
  ------------------
  253|      0|    return hash_1to3_bytes(s, length, seed);
  254|       |
  255|    280|  return k2 ^ seed;
  256|    280|}
_ZN7llvm_ks7hashing6detail18get_execution_seedEv:
  322|  16.5k|inline size_t get_execution_seed() {
  323|       |  // FIXME: This needs to be a per-execution seed. This is just a placeholder
  324|       |  // implementation. Switching to a per-execution seed is likely to flush out
  325|       |  // instability bugs and so will happen as its own commit.
  326|       |  //
  327|       |  // However, if there is a fixed seed override set the first time this is
  328|       |  // called, return that instead of the per-execution seed.
  329|  16.5k|  const uint64_t seed_prime = 0xff51afd7ed558ccdULL;
  330|  16.5k|  static size_t seed = fixed_seed_override ? fixed_seed_override
  ------------------
  |  Branch (330:24): [True: 0, False: 16.5k]
  ------------------
  331|  16.5k|                                           : (size_t)seed_prime;
  332|  16.5k|  return seed;
  333|  16.5k|}
_ZN7llvm_ks18hash_combine_rangeIPKcEENS_9hash_codeET_S4_:
  481|  16.5k|hash_code hash_combine_range(InputIteratorT first, InputIteratorT last) {
  482|  16.5k|  return ::llvm_ks::hashing::detail::hash_combine_range_impl(first, last);
  483|  16.5k|}
_ZN7llvm_ks7hashing6detail23hash_combine_range_implIKcEENSt3__19enable_ifIXsr16is_hashable_dataIT_EE5valueENS_9hash_codeEE4typeEPS6_SA_:
  449|  16.5k|hash_combine_range_impl(ValueT *first, ValueT *last) {
  450|  16.5k|  const size_t seed = get_execution_seed();
  451|  16.5k|  const char *s_begin = reinterpret_cast<const char *>(first);
  452|  16.5k|  const char *s_end = reinterpret_cast<const char *>(last);
  453|  16.5k|  const size_t length = std::distance(s_begin, s_end);
  454|  16.5k|  if (length <= 64)
  ------------------
  |  Branch (454:7): [True: 16.5k, False: 0]
  ------------------
  455|  16.5k|    return hash_short(s_begin, length, seed);
  456|       |
  457|      0|  const char *s_aligned_end = s_begin + (length & ~63);
  458|      0|  hash_state state = state.create(s_begin, seed);
  459|      0|  s_begin += 64;
  460|      0|  while (s_begin != s_aligned_end) {
  ------------------
  |  Branch (460:10): [True: 0, False: 0]
  ------------------
  461|      0|    state.mix(s_begin);
  462|      0|    s_begin += 64;
  463|      0|  }
  464|      0|  if (length & 63)
  ------------------
  |  Branch (464:7): [True: 0, False: 0]
  ------------------
  465|      0|    state.mix(s_end - 64);
  466|       |
  467|      0|  return state.finalize(length);
  468|  16.5k|}

_ZN7llvm_ks9MapVectorIPNS_9MCSectionENS_12ConstantPoolENS_8DenseMapIS2_jNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEENSt3__16vectorINSB_4pairIS2_S3_EENSB_9allocatorISE_EEEEE4findERKS2_:
  108|  1.25k|  iterator find(const KeyT &Key) {
  109|  1.25k|    typename MapType::const_iterator Pos = Map.find(Key);
  110|  1.25k|    return Pos == Map.end()? Vector.end() :
  ------------------
  |  Branch (110:12): [True: 1.22k, False: 24]
  ------------------
  111|  1.25k|                            (Vector.begin() + Pos->second);
  112|  1.25k|  }
_ZN7llvm_ks9MapVectorIPNS_9MCSectionENS_12ConstantPoolENS_8DenseMapIS2_jNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEENSt3__16vectorINSB_4pairIS2_S3_EENSB_9allocatorISE_EEEEE3endEv:
   48|  10.2k|  iterator end() { return Vector.end(); }
_ZN7llvm_ks9MapVectorIPNS_9MCSectionENS_12ConstantPoolENS_8DenseMapIS2_jNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEENSt3__16vectorINSB_4pairIS2_S3_EENSB_9allocatorISE_EEEEEixERKS2_:
   75|  1.59k|  ValueT &operator[](const KeyT &Key) {
   76|  1.59k|    std::pair<KeyT, unsigned> Pair = std::make_pair(Key, 0);
   77|  1.59k|    std::pair<typename MapType::iterator, bool> Result = Map.insert(Pair);
   78|  1.59k|    unsigned &I = Result.first->second;
   79|  1.59k|    if (Result.second) {
  ------------------
  |  Branch (79:9): [True: 115, False: 1.47k]
  ------------------
   80|    115|      Vector.push_back(std::make_pair(Key, ValueT()));
   81|    115|      I = Vector.size() - 1;
   82|    115|    }
   83|  1.59k|    return Vector[I].second;
   84|  1.59k|  }
_ZN7llvm_ks9MapVectorIPNS_9MCSectionENS_12ConstantPoolENS_8DenseMapIS2_jNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEENSt3__16vectorINSB_4pairIS2_S3_EENSB_9allocatorISE_EEEEE5beginEv:
   46|  8.98k|  iterator begin() { return Vector.begin(); }

_ZN7llvm_ks8OptionalINS_11MCFixupKindEED2Ev:
  115|    562|  ~Optional() {
  116|    562|    reset();
  117|    562|  }
_ZN7llvm_ks8OptionalINS_11MCFixupKindEE5resetEv:
  108|    562|  void reset() {
  109|    562|    if (hasVal) {
  ------------------
  |  Branch (109:9): [True: 0, False: 562]
  ------------------
  110|      0|      (**this).~T();
  111|      0|      hasVal = false;
  112|      0|    }
  113|    562|  }
_ZNK7llvm_ks8OptionalINS_11MCFixupKindEE8hasValueEv:
  125|    562|  bool hasValue() const { return hasVal; }
_ZN7llvm_ks8OptionalINS_11MCFixupKindEEC2ENS_8NoneTypeE:
   35|    562|  Optional(NoneType) : hasVal(false) {}

_ZN7llvm_ks14PointerIntPairIPNS_10MCFragmentELj1EjNS_21PointerLikeTypeTraitsIS2_EENS_18PointerIntPairInfoIS2_Lj1ES4_EEE6setIntEj:
   66|   365k|  void setInt(IntType IntVal) {
   67|   365k|    Value = Info::updateInt(Value, static_cast<intptr_t>(IntVal));
   68|   365k|  }
_ZN7llvm_ks18PointerIntPairInfoIPNS_10MCFragmentELj1ENS_21PointerLikeTypeTraitsIS2_EEE9updateIntEll:
  165|   365k|  static intptr_t updateInt(intptr_t OrigValue, intptr_t Int) {
  166|   365k|    intptr_t IntWord = static_cast<intptr_t>(Int);
  167|   365k|    assert((IntWord & ~IntMask) == 0 && "Integer too large for field");
  ------------------
  |  Branch (167:5): [True: 365k, False: 0]
  |  Branch (167:5): [True: 365k, Folded]
  |  Branch (167:5): [True: 365k, False: 0]
  ------------------
  168|       |
  169|       |    // Preserve all bits other than the ones we are updating.
  170|   365k|    return (OrigValue & ~ShiftedIntMask) | IntWord << IntShift;
  171|   365k|  }
_ZNK7llvm_ks14PointerIntPairIPNS_10MCFragmentELj1EjNS_21PointerLikeTypeTraitsIS2_EENS_18PointerIntPairInfoIS2_Lj1ES4_EEE6getIntEv:
   58|   375k|  IntType getInt() const {
   59|   375k|    return (IntType)Info::getInt(Value);
   60|   375k|  }
_ZN7llvm_ks18PointerIntPairInfoIPNS_10MCFragmentELj1ENS_21PointerLikeTypeTraitsIS2_EEE6getIntEl:
  152|   375k|  static intptr_t getInt(intptr_t Value) {
  153|   375k|    return (Value >> IntShift) & IntMask;
  154|   375k|  }
_ZN7llvm_ks14PointerIntPairIPNS_10MCFragmentELj1EjNS_21PointerLikeTypeTraitsIS2_EENS_18PointerIntPairInfoIS2_Lj1ES4_EEE10setPointerES2_:
   62|   457k|  void setPointer(PointerTy PtrVal) {
   63|   457k|    Value = Info::updatePointer(Value, PtrVal);
   64|   457k|  }
_ZN7llvm_ks18PointerIntPairInfoIPNS_10MCFragmentELj1ENS_21PointerLikeTypeTraitsIS2_EEE13updatePointerElS2_:
  156|   457k|  static intptr_t updatePointer(intptr_t OrigValue, PointerT Ptr) {
  157|   457k|    intptr_t PtrWord =
  158|   457k|        reinterpret_cast<intptr_t>(PtrTraits::getAsVoidPointer(Ptr));
  159|   457k|    assert((PtrWord & ~PointerBitMask) == 0 &&
  ------------------
  |  Branch (159:5): [True: 457k, False: 0]
  |  Branch (159:5): [True: 457k, Folded]
  |  Branch (159:5): [True: 457k, False: 0]
  ------------------
  160|   457k|           "Pointer is not sufficiently aligned");
  161|       |    // Preserve all low bits, just update the pointer.
  162|   457k|    return PtrWord | (OrigValue & ~PointerBitMask);
  163|   457k|  }
_ZNK7llvm_ks14PointerIntPairIPNS_10MCFragmentELj1EjNS_21PointerLikeTypeTraitsIS2_EENS_18PointerIntPairInfoIS2_Lj1ES4_EEE10getPointerEv:
   56|  1.19M|  PointerTy getPointer() const { return Info::getPointer(Value); }
_ZN7llvm_ks18PointerIntPairInfoIPNS_10MCFragmentELj1ENS_21PointerLikeTypeTraitsIS2_EEE10getPointerEl:
  147|  1.19M|  static PointerT getPointer(intptr_t Value) {
  148|  1.19M|    return PtrTraits::getFromVoidPointer(
  149|  1.19M|        reinterpret_cast<void *>(Value & PointerBitMask));
  150|  1.19M|  }
_ZN7llvm_ks14PointerIntPairIPNS_10MCFragmentELj1EjNS_21PointerLikeTypeTraitsIS2_EENS_18PointerIntPairInfoIS2_Lj1ES4_EEEC2Ev:
   50|   365k|  PointerIntPair() : Value(0) {}

_ZN7llvm_ks14array_lengthofIbLm4EEEmRAT0__T_:
  283|   167k|LLVM_CONSTEXPR inline size_t array_lengthof(T (&)[N]) {
  284|   167k|  return N;
  285|   167k|}
ARMAsmParser.cpp:_ZN7llvm_ks11make_uniqueIN12_GLOBAL__N_110ARMOperandEJNS2_6KindTyEEEENSt3__19enable_ifIXntsr3std8is_arrayIT_EE5valueENS4_10unique_ptrIS6_NS4_14default_deleteIS6_EEEEE4typeEDpOT0_:
  405|   217k|make_unique(Args &&... args) {
  406|   217k|  return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  407|   217k|}
_ZN7llvm_ks14array_pod_sortIPNSt3__14pairIjjEEEEvT_S5_:
  323|    134|inline void array_pod_sort(IteratorTy Start, IteratorTy End) {
  324|       |  // Don't inefficiently call qsort with one element or trigger undefined
  325|       |  // behavior with an empty sequence.
  326|    134|  auto NElts = End - Start;
  327|    134|  if (NElts <= 1) return;
  ------------------
  |  Branch (327:7): [True: 41, False: 93]
  ------------------
  328|     93|  qsort(&*Start, NElts, sizeof(*Start), get_array_pod_sort_comparator(*Start));
  329|     93|}
_ZN7llvm_ks29get_array_pod_sort_comparatorINSt3__14pairIjjEEEEPFiPKvS5_ERKT_:
  303|     93|             (const void*, const void*) {
  304|     93|  return array_pod_sort_comparator<T>;
  305|     93|}
_ZN7llvm_ks25array_pod_sort_comparatorINSt3__14pairIjjEEEEiPKvS5_:
  289|  1.16k|inline int array_pod_sort_comparator(const void *P1, const void *P2) {
  290|  1.16k|  if (std::less<T>()(*reinterpret_cast<const T*>(P1),
  ------------------
  |  Branch (290:7): [True: 489, False: 676]
  ------------------
  291|  1.16k|                     *reinterpret_cast<const T*>(P2)))
  292|    489|    return -1;
  293|    676|  if (std::less<T>()(*reinterpret_cast<const T*>(P2),
  ------------------
  |  Branch (293:7): [True: 427, False: 249]
  ------------------
  294|    676|                     *reinterpret_cast<const T*>(P1)))
  295|    427|    return 1;
  296|    249|  return 0;
  297|    676|}
ARMAsmParser.cpp:_ZN7llvm_ks11make_uniqueIN12_GLOBAL__N_110ARMOperandEJRNS2_6KindTyEEEENSt3__19enable_ifIXntsr3std8is_arrayIT_EE5valueENS5_10unique_ptrIS7_NS5_14default_deleteIS7_EEEEE4typeEDpOT0_:
  405|    134|make_unique(Args &&... args) {
  406|    134|  return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
  407|    134|}
_ZN7llvm_ks14array_lengthofIKNS_15MCFixupKindInfoELm16EEEmRAT0__T_:
  283|  56.5k|LLVM_CONSTEXPR inline size_t array_lengthof(T (&)[N]) {
  284|  56.5k|  return N;
  285|  56.5k|}

_ZN7llvm_ks9SetVectorIPNS_9MCSectionENSt3__16vectorIS2_NS3_9allocatorIS2_EEEENS_8DenseSetIS2_NS_12DenseMapInfoIS2_EEEEEC2Ev:
   53|  20.9k|  SetVector() {}
_ZN7llvm_ks9SetVectorIPNS_9MCSectionENSt3__16vectorIS2_NS3_9allocatorIS2_EEEENS_8DenseSetIS2_NS_12DenseMapInfoIS2_EEEEE5clearEv:
  185|  20.9k|  void clear() {
  186|  20.9k|    set_.clear();
  187|  20.9k|    vector_.clear();
  188|  20.9k|  }

_ZN7llvm_ks19SmallPtrSetImplBaseC2EPPKvj:
   72|  20.9k|    SmallArray(SmallStorage), CurArray(SmallStorage), CurArraySize(SmallSize) {
   73|  20.9k|    assert(SmallSize && (SmallSize & (SmallSize-1)) == 0 &&
  ------------------
  |  Branch (73:5): [True: 20.9k, False: 0]
  |  Branch (73:5): [True: 20.9k, False: 0]
  |  Branch (73:5): [True: 20.9k, Folded]
  |  Branch (73:5): [True: 20.9k, False: 0]
  ------------------
   74|  20.9k|           "Initial size must be a power of two!");
   75|  20.9k|    clear();
   76|  20.9k|  }
_ZN7llvm_ks19SmallPtrSetImplBaseD2Ev:
   77|  20.9k|  ~SmallPtrSetImplBase() {
   78|  20.9k|    if (!isSmall())
  ------------------
  |  Branch (78:9): [True: 0, False: 20.9k]
  ------------------
   79|      0|      free(CurArray);
   80|  20.9k|  }
_ZN7llvm_ks19SmallPtrSetImplBase5clearEv:
   87|  20.9k|  void clear() {
   88|       |    // If the capacity of the array is huge, and the # elements used is small,
   89|       |    // shrink the array.
   90|  20.9k|    if (!isSmall() && NumElements*4 < CurArraySize && CurArraySize > 32)
  ------------------
  |  Branch (90:9): [True: 0, False: 20.9k]
  |  Branch (90:23): [True: 0, False: 0]
  |  Branch (90:55): [True: 0, False: 0]
  ------------------
   91|      0|      return shrink_and_clear();
   92|       |
   93|       |    // Fill the array with empty markers.
   94|  20.9k|    memset(CurArray, -1, CurArraySize*sizeof(void*));
   95|  20.9k|    NumElements = 0;
   96|  20.9k|    NumTombstones = 0;
   97|  20.9k|  }
_ZNK7llvm_ks19SmallPtrSetImplBase9count_impEPKv:
  134|  53.3k|  bool count_imp(const void * Ptr) const {
  135|  53.3k|    if (isSmall()) {
  ------------------
  |  Branch (135:9): [True: 53.3k, False: 0]
  ------------------
  136|       |      // Linear search for the item.
  137|  53.3k|      for (const void *const *APtr = SmallArray,
  138|  53.3k|                      *const *E = SmallArray+NumElements; APtr != E; ++APtr)
  ------------------
  |  Branch (138:59): [True: 0, False: 53.3k]
  ------------------
  139|      0|        if (*APtr == Ptr)
  ------------------
  |  Branch (139:13): [True: 0, False: 0]
  ------------------
  140|      0|          return true;
  141|  53.3k|      return false;
  142|  53.3k|    }
  143|       |
  144|       |    // Big set case.
  145|      0|    return *FindBucketFor(Ptr) == Ptr;
  146|  53.3k|  }
_ZNK7llvm_ks19SmallPtrSetImplBase7isSmallEv:
  149|  95.3k|  bool isSmall() const { return CurArray == SmallArray; }
_ZN7llvm_ks11SmallPtrSetIPKNS_8MCSymbolELj32EEC2Ev:
  345|  20.9k|  SmallPtrSet() : BaseT(SmallStorage, SmallSizePowTwo) {}
_ZN7llvm_ks15SmallPtrSetImplIPKNS_8MCSymbolEEC2EPPKvj:
  286|  20.9k|      : SmallPtrSetImplBase(SmallStorage, SmallSize) {}
_ZNK7llvm_ks15SmallPtrSetImplIPKNS_8MCSymbolEE5countES3_:
  308|  53.3k|  size_type count(PtrType Ptr) const {
  309|  53.3k|    return count_imp(PtrTraits::getAsVoidPointer(Ptr)) ? 1 : 0;
  ------------------
  |  Branch (309:12): [True: 0, False: 53.3k]
  ------------------
  310|  53.3k|  }

_ZN7llvm_ks11SmallStringILj1024EEC2Ev:
   28|  20.9k|  SmallString() {}
_ZNK7llvm_ks11SmallStringILj128EEcvNS_9StringRefEEv:
  277|   672k|  operator StringRef() const { return str(); }
_ZNK7llvm_ks11SmallStringILj128EE3strEv:
  267|   672k|  StringRef str() const { return StringRef(this->begin(), this->size()); }
_ZN7llvm_ks11SmallStringILj128EEC2Ev:
   28|   824k|  SmallString() {}
_ZN7llvm_ks11SmallStringILj128EEC2ENS_9StringRefE:
   31|   343k|  SmallString(StringRef S) : SmallVector<char, InternalLen>(S.begin(), S.end()) {}
_ZN7llvm_ks11SmallStringILj64EEC2Ev:
   28|  2.72k|  SmallString() {}
_ZN7llvm_ks11SmallStringILj64EEpLENS_9StringRefE:
  285|  5.45k|  SmallString &operator+=(StringRef RHS) {
  286|  5.45k|    this->append(RHS.begin(), RHS.end());
  287|  5.45k|    return *this;
  288|  5.45k|  }
_ZN7llvm_ks11SmallStringILj64EE6appendIPKcEEvT_S5_:
   74|  5.45k|  void append(in_iter S, in_iter E) {
   75|  5.45k|    SmallVectorImpl<char>::append(S, E);
   76|  5.45k|  }
_ZNK7llvm_ks11SmallStringILj64EEcvNS_9StringRefEEv:
  277|  2.72k|  operator StringRef() const { return str(); }
_ZNK7llvm_ks11SmallStringILj64EE3strEv:
  267|  2.72k|  StringRef str() const { return StringRef(this->begin(), this->size()); }
_ZN7llvm_ks11SmallStringILj256EEC2Ev:
   28|   400k|  SmallString() {}
_ZN7llvm_ks11SmallStringILj16384EEC2Ev:
   28|      1|  SmallString() {}

_ZN7llvm_ks15SmallVectorImplIcED2Ev:
  368|  1.95M|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  1.95M|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  1.95M|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 3.20k, False: 1.95M]
  ------------------
  374|  3.20k|      free(this->begin());
  375|  1.95M|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIcLb1EE13destroy_rangeEPcS2_:
  284|  1.99M|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIcvE5beginEv:
  113|  3.05M|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIcvE3endEv:
  117|   684M|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIcvE7isSmallEv:
   86|  1.95M|  bool isSmall() const {
   87|  1.95M|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  1.95M|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonIcvE4sizeEv:
  132|  79.3M|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonIcvE3endEv:
  119|  79.7M|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIcvE5beginEv:
  115|  80.8M|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIcvE4dataEv:
  139|   127k|  pointer data() { return pointer(begin()); }
_ZN7llvm_ks11SmallVectorIcLj1024EEC2Ev:
  872|  20.9k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplIcEC2Ej:
  364|  1.95M|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  1.95M|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIcLb1EEC2Em:
  281|  1.95M|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIcvEC2Em:
   78|  1.95M|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorBaseC2EPvm:
   40|  9.66M|    : BeginX(FirstEl), EndX(FirstEl), CapacityX((char*)FirstEl+Size) {}
_ZNK7llvm_ks15SmallVectorBase13size_in_bytesEv:
   48|  21.8k|  size_t size_in_bytes() const {
   49|  21.8k|    return size_t((char*)EndX - (char*)BeginX);
   50|  21.8k|  }
_ZNK7llvm_ks15SmallVectorBase17capacity_in_bytesEv:
   53|  21.8k|  size_t capacity_in_bytes() const {
   54|  21.8k|    return size_t((char*)CapacityX - (char*)BeginX);
   55|  21.8k|  }
_ZNK7llvm_ks15SmallVectorBase5emptyEv:
   57|   436M|  bool LLVM_ATTRIBUTE_UNUSED_RESULT empty() const { return BeginX == EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIcvE4dataEv:
  141|  20.0k|  const_pointer data() const { return const_pointer(begin()); }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9MCOperandELb1EE13destroy_rangeEPS1_S3_:
  284|  71.1k|  static void destroy_range(T *, T *) {}
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE7isSmallEv:
   86|  39.8k|  bool isSmall() const {
   87|  39.8k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  39.8k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvEixEm:
  149|   108k|  const_reference operator[](size_type idx) const {
  150|   108k|    assert(idx < size());
  ------------------
  |  Branch (150:5): [True: 108k, False: 0]
  ------------------
  151|   108k|    return begin()[idx];
  152|   108k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvEixEm:
  144|   174k|  reference operator[](size_type idx) {
  145|   174k|    assert(idx < size());
  ------------------
  |  Branch (145:5): [True: 174k, False: 0]
  ------------------
  146|   174k|    return begin()[idx];
  147|   174k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE4sizeEv:
  132|   325k|  size_type size() const { return end()-begin(); }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9MCOperandELb1EE9push_backERKS1_:
  337|   131k|  void push_back(const T &Elt) {
  338|   131k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|   131k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 131k]
  |  |  ------------------
  ------------------
  339|      0|      this->grow();
  340|   131k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|   131k|    this->setEnd(this->end()+1);
  342|   131k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE6setEndEPS1_:
   95|   136k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks15SmallVectorImplINS_9MCOperandEE5clearEv:
  378|  30.3k|  void clear() {
  379|  30.3k|    this->destroy_range(this->begin(), this->end());
  380|  30.3k|    this->EndX = this->BeginX;
  381|  30.3k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE5beginEv:
  113|   252k|  iterator begin() { return (iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE5beginEv:
  115|   442k|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE3endEv:
  117|   334k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE3endEv:
  119|   328k|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_7MCFixupELb1EE13destroy_rangeEPS1_S3_:
  284|  48.1k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE5beginEv:
  113|  96.0k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE3endEv:
  117|   304k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE7isSmallEv:
   86|  47.9k|  bool isSmall() const {
   87|  47.9k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  47.9k|  }
_ZN7llvm_ks15SmallVectorImplINS_9MCOperandEEaSERKS2_:
  739|  4.30k|  operator=(const SmallVectorImpl<T> &RHS) {
  740|       |  // Avoid self-assignment.
  741|  4.30k|  if (this == &RHS) return *this;
  ------------------
  |  Branch (741:7): [True: 0, False: 4.30k]
  ------------------
  742|       |
  743|       |  // If we already have sufficient space, assign the common elements, then
  744|       |  // destroy any excess.
  745|  4.30k|  size_t RHSSize = RHS.size();
  746|  4.30k|  size_t CurSize = this->size();
  747|  4.30k|  if (CurSize >= RHSSize) {
  ------------------
  |  Branch (747:7): [True: 989, False: 3.31k]
  ------------------
  748|       |    // Assign common elements.
  749|    989|    iterator NewEnd;
  750|    989|    if (RHSSize)
  ------------------
  |  Branch (750:9): [True: 989, False: 0]
  ------------------
  751|    989|      NewEnd = std::copy(RHS.begin(), RHS.begin()+RHSSize, this->begin());
  752|      0|    else
  753|      0|      NewEnd = this->begin();
  754|       |
  755|       |    // Destroy excess elements.
  756|    989|    this->destroy_range(NewEnd, this->end());
  757|       |
  758|       |    // Trim.
  759|    989|    this->setEnd(NewEnd);
  760|    989|    return *this;
  761|    989|  }
  762|       |
  763|       |  // If we have to grow to have enough elements, destroy the current elements.
  764|       |  // This allows us to avoid copying them during the grow.
  765|       |  // FIXME: don't do this if they're efficiently moveable.
  766|  3.31k|  if (this->capacity() < RHSSize) {
  ------------------
  |  Branch (766:7): [True: 0, False: 3.31k]
  ------------------
  767|       |    // Destroy current elements.
  768|      0|    this->destroy_range(this->begin(), this->end());
  769|      0|    this->setEnd(this->begin());
  770|      0|    CurSize = 0;
  771|      0|    this->grow(RHSSize);
  772|  3.31k|  } else if (CurSize) {
  ------------------
  |  Branch (772:14): [True: 500, False: 2.81k]
  ------------------
  773|       |    // Otherwise, use assignment for the already-constructed elements.
  774|    500|    std::copy(RHS.begin(), RHS.begin()+CurSize, this->begin());
  775|    500|  }
  776|       |
  777|       |  // Copy construct the new elements in place.
  778|  3.31k|  this->uninitialized_copy(RHS.begin()+CurSize, RHS.end(),
  779|  3.31k|                           this->begin()+CurSize);
  780|       |
  781|       |  // Set end.
  782|  3.31k|  this->setEnd(this->begin()+RHSSize);
  783|  3.31k|  return *this;
  784|  4.30k|}
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE8capacityEv:
  136|  3.31k|  size_t capacity() const { return capacity_ptr() - begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvE12capacity_ptrEv:
  122|  3.31k|  const_iterator capacity_ptr() const { return (const_iterator)this->CapacityX;}
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9MCOperandELb1EE18uninitialized_copyIKS1_S1_EEvPT_S6_PT0_PNSt3__19enable_ifIXsr3std7is_sameINS9_12remove_constIS5_E4typeES7_EE5valueEvE4typeE:
  322|  3.31k|                                           T2>::value>::type * = nullptr) {
  323|       |    // Use memcpy for PODs iterated by pointers (which includes SmallVector
  324|       |    // iterators): std::uninitialized_copy optimizes to memmove, but we can
  325|       |    // use memcpy here. Note that I and E are iterators and thus might be
  326|       |    // invalid for memcpy if they are equal.
  327|  3.31k|    if (I != E)
  ------------------
  |  Branch (327:9): [True: 3.31k, False: 0]
  ------------------
  328|  3.31k|      memcpy(Dest, I, (E - I) * sizeof(T));
  329|  3.31k|  }
_ZN7llvm_ks11SmallVectorINS_9MCOperandELj8EEaSERKS2_:
  900|  1.64k|  const SmallVector &operator=(const SmallVector &RHS) {
  901|  1.64k|    SmallVectorImpl<T>::operator=(RHS);
  902|  1.64k|    return *this;
  903|  1.64k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIcLb1EE9push_backERKc:
  337|  2.72k|  void push_back(const T &Elt) {
  338|  2.72k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  2.72k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 2.72k]
  |  |  ------------------
  ------------------
  339|      0|      this->grow();
  340|  2.72k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  2.72k|    this->setEnd(this->end()+1);
  342|  2.72k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIcLb1EE4growEm:
  333|  9.15k|  void grow(size_t MinSize = 0) {
  334|  9.15k|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|  9.15k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIcvE8grow_podEmm:
   80|  9.15k|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|  9.15k|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|  9.15k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIcvE6setEndEPc:
   95|   227M|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEELb0EE13destroy_rangeEPS7_S9_:
  180|     60|  static void destroy_range(T *S, T *E) {
  181|     60|    while (S != E) {
  ------------------
  |  Branch (181:12): [True: 0, False: 60]
  ------------------
  182|      0|      --E;
  183|      0|      E->~T();
  184|      0|    }
  185|     60|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEvE5beginEv:
  113|     60|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEvE3endEv:
  117|     60|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEvE7isSmallEv:
   86|     60|  bool isSmall() const {
   87|     60|    return BeginX == static_cast<const void*>(&FirstEl);
   88|     60|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_11MCDwarfFileELb0EE13destroy_rangeEPS1_S3_:
  180|     60|  static void destroy_range(T *S, T *E) {
  181|     60|    while (S != E) {
  ------------------
  |  Branch (181:12): [True: 0, False: 60]
  ------------------
  182|      0|      --E;
  183|      0|      E->~T();
  184|      0|    }
  185|     60|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_11MCDwarfFileEvE5beginEv:
  113|     60|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_11MCDwarfFileEvE3endEv:
  117|     60|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_11MCDwarfFileEvE7isSmallEv:
   86|     60|  bool isSmall() const {
   87|     60|    return BeginX == static_cast<const void*>(&FirstEl);
   88|     60|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_8MCSymbolEvE3endEv:
  117|   134k|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_8MCSymbolELb1EE4growEm:
  333|    915|  void grow(size_t MinSize = 0) {
  334|    915|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|    915|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_8MCSymbolEvE8grow_podEmm:
   80|    915|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|    915|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|    915|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_8MCSymbolEvE6setEndEPS2_:
   95|  41.1k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_8MCSymbolELb1EE13destroy_rangeEPS2_S4_:
  284|  36.6k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_8MCSymbolEvE5beginEv:
  113|  52.7k|  iterator begin() { return (iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPNS_8MCSymbolEvE7isSmallEv:
   86|  20.9k|  bool isSmall() const {
   87|  20.9k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_14MCLOHDirectiveELb0EE13destroy_rangeEPS1_S3_:
  180|  20.9k|  static void destroy_range(T *S, T *E) {
  181|  20.9k|    while (S != E) {
  ------------------
  |  Branch (181:12): [True: 0, False: 20.9k]
  ------------------
  182|      0|      --E;
  183|      0|      E->~T();
  184|      0|    }
  185|  20.9k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_14MCLOHDirectiveEvE5beginEv:
  113|  20.9k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_14MCLOHDirectiveEvE3endEv:
  117|  20.9k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_14MCLOHDirectiveEvE7isSmallEv:
   86|  20.9k|  bool isSmall() const {
   87|  20.9k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplIPNS_8MCSymbolEE5clearEv:
  378|  15.6k|  void clear() {
  379|  15.6k|    this->destroy_range(this->begin(), this->end());
  380|  15.6k|    this->EndX = this->BeginX;
  381|  15.6k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvE4backEv:
  167|   156M|  const_reference back() const {
  168|   156M|    assert(!empty());
  ------------------
  |  Branch (168:5): [True: 156M, False: 0]
  ------------------
  169|   156M|    return end()[-1];
  170|   156M|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvE3endEv:
  119|   156M|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EELb1EE9push_backERKS9_:
  337|  20.9k|  void push_back(const T &Elt) {
  338|  20.9k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  20.9k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 20.9k]
  |  |  ------------------
  ------------------
  339|      0|      this->grow();
  340|  20.9k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  20.9k|    this->setEnd(this->end()+1);
  342|  20.9k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvE6setEndEPS9_:
   95|  20.9k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvE3endEv:
  117|   132k|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvE4backEv:
  163|  69.5k|  reference back() {
  164|  69.5k|    assert(!empty());
  ------------------
  |  Branch (164:5): [True: 69.5k, False: 0]
  ------------------
  165|  69.5k|    return end()[-1];
  166|  69.5k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE5beginEv:
  115|  1.06M|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE4sizeEv:
  132|  1.06M|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE3endEv:
  119|  1.06M|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks15SmallVectorImplIcE5clearEv:
  378|  41.9k|  void clear() {
  379|  41.9k|    this->destroy_range(this->begin(), this->end());
  380|  41.9k|    this->EndX = this->BeginX;
  381|  41.9k|  }
_ZN7llvm_ks15SmallVectorImplIcE6appendIPKcEEvT_S5_:
  423|   227M|  void append(in_iter in_start, in_iter in_end) {
  424|   227M|    size_type NumInputs = std::distance(in_start, in_end);
  425|       |    // Grow allocated space if needed.
  426|   227M|    if (NumInputs > size_type(this->capacity_ptr()-this->end()))
  ------------------
  |  Branch (426:9): [True: 7.06k, False: 227M]
  ------------------
  427|  7.06k|      this->grow(this->size()+NumInputs);
  428|       |
  429|       |    // Copy the new elements over.
  430|   227M|    this->uninitialized_copy(in_start, in_end, this->end());
  431|   227M|    this->setEnd(this->end() + NumInputs);
  432|   227M|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIcvE12capacity_ptrEv:
  121|   227M|  iterator capacity_ptr() { return (iterator)this->CapacityX; }
_ZN7llvm_ks23SmallVectorTemplateBaseIcLb1EE18uninitialized_copyIKccEEvPT_S5_PT0_PNSt3__19enable_ifIXsr3std7is_sameINS8_12remove_constIS4_E4typeES6_EE5valueEvE4typeE:
  322|   227M|                                           T2>::value>::type * = nullptr) {
  323|       |    // Use memcpy for PODs iterated by pointers (which includes SmallVector
  324|       |    // iterators): std::uninitialized_copy optimizes to memmove, but we can
  325|       |    // use memcpy here. Note that I and E are iterators and thus might be
  326|       |    // invalid for memcpy if they are equal.
  327|   227M|    if (I != E)
  ------------------
  |  Branch (327:9): [True: 227M, False: 160]
  ------------------
  328|   227M|      memcpy(Dest, I, (E - I) * sizeof(T));
  329|   227M|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIPvmEELb1EE9push_backERKS4_:
  337|     10|  void push_back(const T &Elt) {
  338|     10|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|     10|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  339|     10|      this->grow();
  340|     10|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|     10|    this->setEnd(this->end()+1);
  342|     10|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIPvmEELb1EE4growEm:
  333|     10|  void grow(size_t MinSize = 0) {
  334|     10|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|     10|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIPvmEEvE8grow_podEmm:
   80|     10|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|     10|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|     10|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIPvmEEvE3endEv:
  117|   796k|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIPvmEEvE6setEndEPS4_:
   95|     10|  void setEnd(T *P) { this->EndX = P; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPvvE4sizeEv:
  132|  93.7k|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPvvE3endEv:
  119|  93.7k|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPvvE5beginEv:
  115|  93.7k|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks23SmallVectorTemplateBaseIPvLb1EE9push_backERKS1_:
  337|  93.7k|  void push_back(const T &Elt) {
  338|  93.7k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  93.7k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 555, False: 93.2k]
  |  |  ------------------
  ------------------
  339|    555|      this->grow();
  340|  93.7k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  93.7k|    this->setEnd(this->end()+1);
  342|  93.7k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPvLb1EE4growEm:
  333|    555|  void grow(size_t MinSize = 0) {
  334|    555|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|    555|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPvvE8grow_podEmm:
   80|    555|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|    555|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|    555|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPvvE3endEv:
  117|  1.03M|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIPvvE6setEndEPS1_:
   95|   162k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE5beginEv:
  113|  46.7M|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks15SmallVectorImplINS_8AsmTokenEE5eraseEPS1_:
  462|  15.5M|  iterator erase(iterator I) {
  463|  15.5M|    assert(I >= this->begin() && "Iterator to erase is out of bounds.");
  ------------------
  |  Branch (463:5): [True: 15.5M, False: 0]
  |  Branch (463:5): [True: 15.5M, Folded]
  |  Branch (463:5): [True: 15.5M, False: 0]
  ------------------
  464|  15.5M|    assert(I < this->end() && "Erasing at past-the-end iterator.");
  ------------------
  |  Branch (464:5): [True: 15.5M, False: 0]
  |  Branch (464:5): [True: 15.5M, Folded]
  |  Branch (464:5): [True: 15.5M, False: 0]
  ------------------
  465|       |
  466|  15.5M|    iterator N = I;
  467|       |    // Shift all elts down one.
  468|  15.5M|    this->move(I+1, this->end(), I);
  469|       |    // Drop the last elt.
  470|  15.5M|    this->pop_back();
  471|  15.5M|    return(N);
  472|  15.5M|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE3endEv:
  117|  93.5M|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_8AsmTokenELb0EE4moveIPS1_S4_EET0_T_S6_S5_:
  191|  15.5M|  static It2 move(It1 I, It1 E, It2 Dest) {
  192|  15.5M|    for (; I != E; ++I, ++Dest)
  ------------------
  |  Branch (192:12): [True: 0, False: 15.5M]
  ------------------
  193|      0|      *Dest = ::std::move(*I);
  194|  15.5M|    return Dest;
  195|  15.5M|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_8AsmTokenELb0EE8pop_backEv:
  243|  15.5M|  void pop_back() {
  244|  15.5M|    this->setEnd(this->end()-1);
  245|  15.5M|    this->end()->~T();
  246|  15.5M|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE6setEndEPS1_:
   95|  31.1M|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks15SmallVectorImplINS_8AsmTokenEE12emplace_backIJS1_EEEvDpOT_:
  659|  15.5M|  template <typename... ArgTypes> void emplace_back(ArgTypes &&... Args) {
  660|  15.5M|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  15.5M|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 15.5M]
  |  |  ------------------
  ------------------
  661|      0|      this->grow();
  662|  15.5M|    ::new ((void *)this->end()) T(std::forward<ArgTypes>(Args)...);
  663|  15.5M|    this->setEnd(this->end() + 1);
  664|  15.5M|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE5beginEv:
  115|   202M|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE4sizeEv:
  132|   101M|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE3endEv:
  119|   101M|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_8AsmTokenELb0EE13destroy_rangeEPS1_S3_:
  180|  20.9k|  static void destroy_range(T *S, T *E) {
  181|  41.9k|    while (S != E) {
  ------------------
  |  Branch (181:12): [True: 20.9k, False: 20.9k]
  ------------------
  182|  20.9k|      --E;
  183|  20.9k|      E->~T();
  184|  20.9k|    }
  185|  20.9k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE7isSmallEv:
   86|  20.9k|  bool isSmall() const {
   87|  20.9k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  20.9k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvE5frontEv:
  154|  15.5M|  reference front() {
  155|  15.5M|    assert(!empty());
  ------------------
  |  Branch (155:5): [True: 15.5M, False: 0]
  ------------------
  156|  15.5M|    return begin()[0];
  157|  15.5M|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvEixEm:
  149|   101M|  const_reference operator[](size_type idx) const {
  150|   101M|    assert(idx < size());
  ------------------
  |  Branch (150:5): [True: 101M, False: 0]
  ------------------
  151|   101M|    return begin()[idx];
  152|   101M|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_7SMFixItELb0EE13destroy_rangeEPS1_S3_:
  180|  82.8k|  static void destroy_range(T *S, T *E) {
  181|  82.8k|    while (S != E) {
  ------------------
  |  Branch (181:12): [True: 0, False: 82.8k]
  ------------------
  182|      0|      --E;
  183|      0|      E->~T();
  184|      0|    }
  185|  82.8k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE5beginEv:
  113|   165k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE3endEv:
  117|   414k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE7isSmallEv:
   86|  82.8k|  bool isSmall() const {
   87|  82.8k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  82.8k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE5beginEv:
  115|   145k|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE4sizeEv:
  132|  72.8k|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE3endEv:
  119|  72.8k|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE6setEndEPS1_:
   95|  82.8k|  void setEnd(T *P) { this->EndX = P; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE4dataEv:
  141|  72.8k|  const_pointer data() const { return const_pointer(begin()); }
_ZN7llvm_ks11SmallVectorINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEELj3EEC2Ev:
  872|     60|  SmallVector() : SmallVectorImpl<T>(N) {
  873|     60|  }
_ZN7llvm_ks15SmallVectorImplINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEC2Ej:
  364|     60|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|     60|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEELb0EEC2Em:
  178|     60|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEvEC2Em:
   78|     60|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks11SmallVectorINS_11MCDwarfFileELj3EEC2Ev:
  872|     60|  SmallVector() : SmallVectorImpl<T>(N) {
  873|     60|  }
_ZN7llvm_ks15SmallVectorImplINS_11MCDwarfFileEEC2Ej:
  364|     60|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|     60|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_11MCDwarfFileELb0EEC2Em:
  178|     60|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_11MCDwarfFileEvEC2Em:
   78|     60|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplINS_11MCDwarfFileEED2Ev:
  368|     60|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|     60|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|     60|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 60]
  ------------------
  374|      0|      free(this->begin());
  375|     60|  }
_ZN7llvm_ks15SmallVectorImplINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEED2Ev:
  368|     60|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|     60|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|     60|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 60]
  ------------------
  374|      0|      free(this->begin());
  375|     60|  }
_ZN7llvm_ks11SmallVectorIcLj128EEC2Ev:
  872|   824k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   824k|  }
_ZN7llvm_ks11SmallVectorIPvLj4EEC2Ev:
  872|   125k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   125k|  }
_ZN7llvm_ks15SmallVectorImplIPvEC2Ej:
  364|   125k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|   125k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPvLb1EEC2Em:
  281|   125k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPvvEC2Em:
   78|   125k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks11SmallVectorINSt3__14pairIPvmEELj0EEC2Ev:
  872|   125k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   125k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairIPvmEEEC2Ej:
  364|   125k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|   125k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIPvmEELb1EEC2Em:
  281|   125k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIPvmEEvEC2Em:
   78|   125k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplIPvED2Ev:
  368|   125k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|   125k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|   125k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 313, False: 125k]
  ------------------
  374|    313|      free(this->begin());
  375|   125k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPvLb1EE13destroy_rangeEPS1_S3_:
  284|   194k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPvvE5beginEv:
  113|   877k|  iterator begin() { return (iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPvvE7isSmallEv:
   86|   125k|  bool isSmall() const {
   87|   125k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|   125k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIPvmEEvE5beginEv:
  113|   796k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairIPvmEEED2Ev:
  368|   125k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|   125k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|   125k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 6, False: 125k]
  ------------------
  374|      6|      free(this->begin());
  375|   125k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIPvmEELb1EE13destroy_rangeEPS4_S6_:
  284|   314k|  static void destroy_range(T *, T *) {}
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIPvmEEvE7isSmallEv:
   86|   125k|  bool isSmall() const {
   87|   125k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|   125k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPvvE4backEv:
  163|  90.0k|  reference back() {
  164|  90.0k|    assert(!empty());
  ------------------
  |  Branch (164:5): [True: 90.0k, False: 0]
  ------------------
  165|  90.0k|    return end()[-1];
  166|  90.0k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairIPvmEEE5clearEv:
  378|   188k|  void clear() {
  379|   188k|    this->destroy_range(this->begin(), this->end());
  380|   188k|    this->EndX = this->BeginX;
  381|   188k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPvvE5frontEv:
  154|  68.3k|  reference front() {
  155|  68.3k|    assert(!empty());
  ------------------
  |  Branch (155:5): [True: 68.3k, False: 0]
  ------------------
  156|  68.3k|    return begin()[0];
  157|  68.3k|  }
_ZN7llvm_ks15SmallVectorImplIPvE5eraseEPS1_S3_:
  474|  68.3k|  iterator erase(iterator S, iterator E) {
  475|  68.3k|    assert(S >= this->begin() && "Range to erase is out of bounds.");
  ------------------
  |  Branch (475:5): [True: 68.3k, False: 0]
  |  Branch (475:5): [True: 68.3k, Folded]
  |  Branch (475:5): [True: 68.3k, False: 0]
  ------------------
  476|  68.3k|    assert(S <= E && "Trying to erase invalid range.");
  ------------------
  |  Branch (476:5): [True: 68.3k, False: 0]
  |  Branch (476:5): [True: 68.3k, Folded]
  |  Branch (476:5): [True: 68.3k, False: 0]
  ------------------
  477|  68.3k|    assert(E <= this->end() && "Trying to erase past the end.");
  ------------------
  |  Branch (477:5): [True: 68.3k, False: 0]
  |  Branch (477:5): [True: 68.3k, Folded]
  |  Branch (477:5): [True: 68.3k, False: 0]
  ------------------
  478|       |
  479|  68.3k|    iterator N = S;
  480|       |    // Shift all elts down.
  481|  68.3k|    iterator I = this->move(E, this->end(), S);
  482|       |    // Drop the last elts.
  483|  68.3k|    this->destroy_range(I, this->end());
  484|  68.3k|    this->setEnd(I);
  485|  68.3k|    return(N);
  486|  68.3k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPvLb1EE4moveIPS1_S4_EET0_T_S6_S5_:
  289|  68.3k|  static It2 move(It1 I, It1 E, It2 Dest) {
  290|  68.3k|    return ::std::copy(I, E, Dest);
  291|  68.3k|  }
_ZN7llvm_ks11SmallVectorIcLj128EEC2IPKcEET_S5_:
  881|   343k|  SmallVector(ItTy S, ItTy E) : SmallVectorImpl<T>(N) {
  882|   343k|    this->append(S, E);
  883|   343k|  }
_ZN7llvm_ks15SmallVectorImplIcE6resizeEm:
  383|   118k|  void resize(size_type N) {
  384|   118k|    if (N < this->size()) {
  ------------------
  |  Branch (384:9): [True: 0, False: 118k]
  ------------------
  385|      0|      this->destroy_range(this->begin()+N, this->end());
  386|      0|      this->setEnd(this->begin()+N);
  387|   118k|    } else if (N > this->size()) {
  ------------------
  |  Branch (387:16): [True: 0, False: 118k]
  ------------------
  388|      0|      if (this->capacity() < N)
  ------------------
  |  Branch (388:11): [True: 0, False: 0]
  ------------------
  389|      0|        this->grow(N);
  390|      0|      for (auto I = this->end(), E = this->begin() + N; I != E; ++I)
  ------------------
  |  Branch (390:57): [True: 0, False: 0]
  ------------------
  391|      0|        new (&*I) T();
  392|      0|      this->setEnd(this->begin()+N);
  393|      0|    }
  394|   118k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonIcvE8capacityEv:
  136|   447k|  size_t capacity() const { return capacity_ptr() - begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonIcvE12capacity_ptrEv:
  122|   447k|  const_iterator capacity_ptr() const { return (const_iterator)this->CapacityX;}
_ZN7llvm_ks11SmallVectorIcLj128EEC2ERKS1_:
  895|   343k|  SmallVector(const SmallVector &RHS) : SmallVectorImpl<T>(N) {
  896|   343k|    if (!RHS.empty())
  ------------------
  |  Branch (896:9): [True: 343k, False: 0]
  ------------------
  897|   343k|      SmallVectorImpl<T>::operator=(RHS);
  898|   343k|  }
_ZN7llvm_ks15SmallVectorImplIcEaSERKS1_:
  739|   344k|  operator=(const SmallVectorImpl<T> &RHS) {
  740|       |  // Avoid self-assignment.
  741|   344k|  if (this == &RHS) return *this;
  ------------------
  |  Branch (741:7): [True: 0, False: 344k]
  ------------------
  742|       |
  743|       |  // If we already have sufficient space, assign the common elements, then
  744|       |  // destroy any excess.
  745|   344k|  size_t RHSSize = RHS.size();
  746|   344k|  size_t CurSize = this->size();
  747|   344k|  if (CurSize >= RHSSize) {
  ------------------
  |  Branch (747:7): [True: 18, False: 344k]
  ------------------
  748|       |    // Assign common elements.
  749|     18|    iterator NewEnd;
  750|     18|    if (RHSSize)
  ------------------
  |  Branch (750:9): [True: 18, False: 0]
  ------------------
  751|     18|      NewEnd = std::copy(RHS.begin(), RHS.begin()+RHSSize, this->begin());
  752|      0|    else
  753|      0|      NewEnd = this->begin();
  754|       |
  755|       |    // Destroy excess elements.
  756|     18|    this->destroy_range(NewEnd, this->end());
  757|       |
  758|       |    // Trim.
  759|     18|    this->setEnd(NewEnd);
  760|     18|    return *this;
  761|     18|  }
  762|       |
  763|       |  // If we have to grow to have enough elements, destroy the current elements.
  764|       |  // This allows us to avoid copying them during the grow.
  765|       |  // FIXME: don't do this if they're efficiently moveable.
  766|   344k|  if (this->capacity() < RHSSize) {
  ------------------
  |  Branch (766:7): [True: 111, False: 343k]
  ------------------
  767|       |    // Destroy current elements.
  768|    111|    this->destroy_range(this->begin(), this->end());
  769|    111|    this->setEnd(this->begin());
  770|    111|    CurSize = 0;
  771|    111|    this->grow(RHSSize);
  772|   343k|  } else if (CurSize) {
  ------------------
  |  Branch (772:14): [True: 153, False: 343k]
  ------------------
  773|       |    // Otherwise, use assignment for the already-constructed elements.
  774|    153|    std::copy(RHS.begin(), RHS.begin()+CurSize, this->begin());
  775|    153|  }
  776|       |
  777|       |  // Copy construct the new elements in place.
  778|   344k|  this->uninitialized_copy(RHS.begin()+CurSize, RHS.end(),
  779|   344k|                           this->begin()+CurSize);
  780|       |
  781|       |  // Set end.
  782|   344k|  this->setEnd(this->begin()+RHSSize);
  783|   344k|  return *this;
  784|   344k|}
_ZN7llvm_ks11SmallVectorIcLj64EEC2Ev:
  872|  2.72k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  2.72k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_11MCDwarfFileEvE4sizeEv:
  132|     59|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_11MCDwarfFileEvE3endEv:
  119|     59|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_11MCDwarfFileEvE5beginEv:
  115|     59|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks23SmallVectorTemplateBaseIcLb1EE18uninitialized_copyIccEEvPT_S4_PT0_PNSt3__19enable_ifIXsr3std7is_sameINS7_12remove_constIS3_E4typeES5_EE5valueEvE4typeE:
  322|  29.2k|                                           T2>::value>::type * = nullptr) {
  323|       |    // Use memcpy for PODs iterated by pointers (which includes SmallVector
  324|       |    // iterators): std::uninitialized_copy optimizes to memmove, but we can
  325|       |    // use memcpy here. Note that I and E are iterators and thus might be
  326|       |    // invalid for memcpy if they are equal.
  327|  29.2k|    if (I != E)
  ------------------
  |  Branch (327:9): [True: 29.2k, False: 0]
  ------------------
  328|  29.2k|      memcpy(Dest, I, (E - I) * sizeof(T));
  329|  29.2k|  }
_ZN7llvm_ks15SmallVectorImplIPNS_14MCDataFragmentEED2Ev:
  368|  20.9k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  20.9k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  20.9k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 20.9k]
  ------------------
  374|      0|      free(this->begin());
  375|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_14MCDataFragmentELb1EE13destroy_rangeEPS2_S4_:
  284|  20.9k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_14MCDataFragmentEvE5beginEv:
  113|  20.9k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_14MCDataFragmentEvE3endEv:
  117|  20.9k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPNS_14MCDataFragmentEvE7isSmallEv:
   86|  20.9k|  bool isSmall() const {
   87|  20.9k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  20.9k|  }
_ZN7llvm_ks11SmallVectorIcLj32EEC2Ev:
  872|  18.4k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  18.4k|  }
_ZN7llvm_ks15SmallVectorImplINS_7MCFixupEED2Ev:
  368|  47.9k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  47.9k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  47.9k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 1.40k, False: 46.5k]
  ------------------
  374|  1.40k|      free(this->begin());
  375|  47.9k|  }
_ZN7llvm_ks11SmallVectorIPNS_14MCDataFragmentELj4EEC2Ev:
  872|  20.9k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplIPNS_14MCDataFragmentEEC2Ej:
  364|  20.9k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_14MCDataFragmentELb1EEC2Em:
  281|  20.9k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_14MCDataFragmentEvEC2Em:
   78|  20.9k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks11SmallVectorIcLj256EEC2Ev:
  872|   400k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   400k|  }
_ZN7llvm_ks15SmallVectorImplIcE6appendIPcEEvT_S4_:
  423|  29.2k|  void append(in_iter in_start, in_iter in_end) {
  424|  29.2k|    size_type NumInputs = std::distance(in_start, in_end);
  425|       |    // Grow allocated space if needed.
  426|  29.2k|    if (NumInputs > size_type(this->capacity_ptr()-this->end()))
  ------------------
  |  Branch (426:9): [True: 772, False: 28.5k]
  ------------------
  427|    772|      this->grow(this->size()+NumInputs);
  428|       |
  429|       |    // Copy the new elements over.
  430|  29.2k|    this->uninitialized_copy(in_start, in_end, this->end());
  431|  29.2k|    this->setEnd(this->end() + NumInputs);
  432|  29.2k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE4sizeEv:
  132|   113k|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE3endEv:
  119|   115k|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE5beginEv:
  115|   126k|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvEixEm:
  144|  46.5k|  reference operator[](size_type idx) {
  145|  46.5k|    assert(idx < size());
  ------------------
  |  Branch (145:5): [True: 46.5k, False: 0]
  ------------------
  146|  46.5k|    return begin()[idx];
  147|  46.5k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_7MCFixupELb1EE9push_backERKS1_:
  337|   128k|  void push_back(const T &Elt) {
  338|   128k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|   128k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 2.90k, False: 125k]
  |  |  ------------------
  ------------------
  339|  2.90k|      this->grow();
  340|   128k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|   128k|    this->setEnd(this->end()+1);
  342|   128k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_7MCFixupELb1EE4growEm:
  333|  2.90k|  void grow(size_t MinSize = 0) {
  334|  2.90k|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|  2.90k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE8grow_podEmm:
   80|  2.90k|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|  2.90k|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|  2.90k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE6setEndEPS1_:
   95|   128k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks11SmallVectorINS_7MCFixupELj4EEC2Ev:
  872|  45.3k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  45.3k|  }
_ZN7llvm_ks15SmallVectorImplINS_7MCFixupEEC2Ej:
  364|  47.9k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  47.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_7MCFixupELb1EEC2Em:
  281|  47.9k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvEC2Em:
   78|  47.9k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplIPNS_9MCSectionEED2Ev:
  368|  8.98k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  8.98k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  8.98k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 8.98k]
  ------------------
  374|      0|      free(this->begin());
  375|  8.98k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_9MCSectionELb1EE13destroy_rangeEPS2_S4_:
  284|  8.98k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvE5beginEv:
  113|  27.5k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvE3endEv:
  117|  27.5k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvE7isSmallEv:
   86|  8.98k|  bool isSmall() const {
   87|  8.98k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  8.98k|  }
_ZN7llvm_ks15SmallVectorImplINS_9MCOperandEED2Ev:
  368|  39.8k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  39.8k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  39.8k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 39.8k]
  ------------------
  374|      0|      free(this->begin());
  375|  39.8k|  }
_ZN7llvm_ks11SmallVectorIPNS_9MCSectionELj16EEC2Ev:
  872|  8.98k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  8.98k|  }
_ZN7llvm_ks15SmallVectorImplIPNS_9MCSectionEEC2Ej:
  364|  8.98k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  8.98k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_9MCSectionELb1EEC2Em:
  281|  8.98k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvEC2Em:
   78|  8.98k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_9MCSectionELb1EE9push_backERKS2_:
  337|  9.30k|  void push_back(const T &Elt) {
  338|  9.30k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  9.30k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 9.30k]
  |  |  ------------------
  ------------------
  339|      0|      this->grow();
  340|  9.30k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  9.30k|    this->setEnd(this->end()+1);
  342|  9.30k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvE6setEndEPS2_:
   95|  9.30k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks15SmallVectorImplIPNS_8MCSymbolEED2Ev:
  368|  20.9k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  20.9k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  20.9k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 416, False: 20.5k]
  ------------------
  374|    416|      free(this->begin());
  375|  20.9k|  }
_ZN7llvm_ks11SmallVectorIcLj8EEC2Ev:
  872|  2.66k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  2.66k|  }
_ZN7llvm_ks11SmallVectorINS_9MCOperandELj8EEC2Ev:
  872|  37.1k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  37.1k|  }
_ZN7llvm_ks15SmallVectorImplINS_9MCOperandEEC2Ej:
  364|  39.8k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  39.8k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9MCOperandELb1EEC2Em:
  281|  39.8k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9MCOperandEvEC2Em:
   78|  39.8k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks11SmallVectorINS_7MCFixupELj1EEC2Ev:
  872|  2.66k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  2.66k|  }
_ZN7llvm_ks11SmallVectorINS_9MCOperandELj8EEC2ERKS2_:
  895|  2.66k|  SmallVector(const SmallVector &RHS) : SmallVectorImpl<T>(N) {
  896|  2.66k|    if (!RHS.empty())
  ------------------
  |  Branch (896:9): [True: 2.66k, False: 0]
  ------------------
  897|  2.66k|      SmallVectorImpl<T>::operator=(RHS);
  898|  2.66k|  }
_ZN7llvm_ks11SmallVectorIPNS_8MCSymbolELj2EEC2Ev:
  872|  20.9k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplIPNS_8MCSymbolEEC2Ej:
  364|  20.9k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_8MCSymbolELb1EEC2Em:
  281|  20.9k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_8MCSymbolEvEC2Em:
   78|  20.9k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplIcE6resizeEmRKc:
  396|   103k|  void resize(size_type N, const T &NV) {
  397|   103k|    if (N < this->size()) {
  ------------------
  |  Branch (397:9): [True: 0, False: 103k]
  ------------------
  398|      0|      this->destroy_range(this->begin()+N, this->end());
  399|      0|      this->setEnd(this->begin()+N);
  400|   103k|    } else if (N > this->size()) {
  ------------------
  |  Branch (400:16): [True: 103k, False: 0]
  ------------------
  401|   103k|      if (this->capacity() < N)
  ------------------
  |  Branch (401:11): [True: 1.21k, False: 102k]
  ------------------
  402|  1.21k|        this->grow(N);
  403|   103k|      std::uninitialized_fill(this->end(), this->begin()+N, NV);
  404|   103k|      this->setEnd(this->begin()+N);
  405|   103k|    }
  406|   103k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIPNS_8MCSymbolELb1EE9push_backERKS2_:
  337|  41.1k|  void push_back(const T &Elt) {
  338|  41.1k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  41.1k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 915, False: 40.2k]
  |  |  ------------------
  ------------------
  339|    915|      this->grow();
  340|  41.1k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  41.1k|    this->setEnd(this->end()+1);
  342|  41.1k|  }
_ZN7llvm_ks15SmallVectorImplINS_7SMFixItEED2Ev:
  368|  82.8k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  82.8k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  82.8k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 82.8k]
  ------------------
  374|      0|      free(this->begin());
  375|  82.8k|  }
_ZN7llvm_ks11SmallVectorINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELj8EEC2Ev:
  872|  5.52M|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  5.52M|  }
_ZN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEEC2Ej:
  364|  5.52M|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  5.52M|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EEC2Em:
  178|  5.52M|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvEC2Em:
   78|  5.52M|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks11SmallVectorINS_5SMLocELj4EEC2Ev:
  872|   165k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   165k|  }
_ZN7llvm_ks15SmallVectorImplINS_5SMLocEEC2Ej:
  364|   165k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|   165k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_5SMLocELb1EEC2Em:
  281|   165k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvEC2Em:
   78|   165k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplINS_5SMLocEE6resizeEm:
  383|  74.1k|  void resize(size_type N) {
  384|  74.1k|    if (N < this->size()) {
  ------------------
  |  Branch (384:9): [True: 0, False: 74.1k]
  ------------------
  385|      0|      this->destroy_range(this->begin()+N, this->end());
  386|      0|      this->setEnd(this->begin()+N);
  387|  74.1k|    } else if (N > this->size()) {
  ------------------
  |  Branch (387:16): [True: 22.4k, False: 51.7k]
  ------------------
  388|  22.4k|      if (this->capacity() < N)
  ------------------
  |  Branch (388:11): [True: 4.84k, False: 17.5k]
  ------------------
  389|  4.84k|        this->grow(N);
  390|   115k|      for (auto I = this->end(), E = this->begin() + N; I != E; ++I)
  ------------------
  |  Branch (390:57): [True: 93.4k, False: 22.4k]
  ------------------
  391|  93.4k|        new (&*I) T();
  392|  22.4k|      this->setEnd(this->begin()+N);
  393|  22.4k|    }
  394|  74.1k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_5SMLocELb1EE13destroy_rangeEPS1_S3_:
  284|   179k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE5beginEv:
  113|   253k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE3endEv:
  117|   206k|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE6setEndEPS1_:
   95|  31.3k|  void setEnd(T *P) { this->EndX = P; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE8capacityEv:
  136|  22.4k|  size_t capacity() const { return capacity_ptr() - begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE12capacity_ptrEv:
  122|  22.4k|  const_iterator capacity_ptr() const { return (const_iterator)this->CapacityX;}
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE5beginEv:
  115|   237k|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_5SMLocELb1EE4growEm:
  333|  4.95k|  void grow(size_t MinSize = 0) {
  334|  4.95k|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|  4.95k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE8grow_podEmm:
   80|  4.95k|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|  4.95k|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|  4.95k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE4sizeEv:
  132|   214k|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE3endEv:
  119|   215k|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvEixEm:
  144|  25.9k|  reference operator[](size_type idx) {
  145|  25.9k|    assert(idx < size());
  ------------------
  |  Branch (145:5): [True: 25.9k, False: 0]
  ------------------
  146|  25.9k|    return begin()[idx];
  147|  25.9k|  }
_ZN7llvm_ks15SmallVectorImplINS_5SMLocEED2Ev:
  368|   165k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|   165k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|   165k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 3.26k, False: 162k]
  ------------------
  374|  3.26k|      free(this->begin());
  375|   165k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_5SMLocEvE7isSmallEv:
   86|   172k|  bool isSmall() const {
   87|   172k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|   172k|  }
_ZN7llvm_ks11SmallVectorIjLj8EEC2Ev:
  872|   217k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   217k|  }
_ZN7llvm_ks15SmallVectorImplIjEC2Ej:
  364|   217k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|   217k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIjLb1EEC2Em:
  281|   217k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIjvEC2Em:
   78|   217k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks23SmallVectorTemplateBaseIjLb1EE9push_backERKj:
  337|    513|  void push_back(const T &Elt) {
  338|    513|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|    513|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 18, False: 495]
  |  |  ------------------
  ------------------
  339|     18|      this->grow();
  340|    513|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|    513|    this->setEnd(this->end()+1);
  342|    513|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIjLb1EE4growEm:
  333|     18|  void grow(size_t MinSize = 0) {
  334|     18|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|     18|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIjvE8grow_podEmm:
   80|     18|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|     18|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|     18|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIjvE3endEv:
  117|   218k|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIjvE6setEndEPj:
   95|    563|  void setEnd(T *P) { this->EndX = P; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIjvE5beginEv:
  115|    100|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIjvE4sizeEv:
  132|    100|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonIjvE3endEv:
  119|    100|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks15SmallVectorImplIjED2Ev:
  368|   217k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|   217k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|   217k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 9, False: 217k]
  ------------------
  374|      9|      free(this->begin());
  375|   217k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIjLb1EE13destroy_rangeEPjS2_:
  284|   217k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIjvE5beginEv:
  113|   217k|  iterator begin() { return (iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIjvE7isSmallEv:
   86|   217k|  bool isSmall() const {
   87|   217k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|   217k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEED2Ev:
  368|  5.52M|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  5.52M|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  5.52M|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 667, False: 5.52M]
  ------------------
  374|    667|      free(this->begin());
  375|  5.52M|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EE13destroy_rangeEPS6_S8_:
  180|  5.52M|  static void destroy_range(T *S, T *E) {
  181|  5.80M|    while (S != E) {
  ------------------
  |  Branch (181:12): [True: 278k, False: 5.52M]
  ------------------
  182|   278k|      --E;
  183|   278k|      E->~T();
  184|   278k|    }
  185|  5.52M|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE5beginEv:
  113|  5.55M|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE3endEv:
  117|  5.97M|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE7isSmallEv:
   86|  5.52M|  bool isSmall() const {
   87|  5.52M|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  5.52M|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE4sizeEv:
  132|  1.59M|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE3endEv:
  119|  1.59M|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE5beginEv:
  115|  2.31M|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvEixEm:
  144|  19.5k|  reference operator[](size_type idx) {
  145|  19.5k|    assert(idx < size());
  ------------------
  |  Branch (145:5): [True: 19.5k, False: 0]
  ------------------
  146|  19.5k|    return begin()[idx];
  147|  19.5k|  }
_ZN7llvm_ks15SmallVectorImplINS_8AsmTokenEED2Ev:
  368|  20.9k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  20.9k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  20.9k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 20.9k]
  ------------------
  374|      0|      free(this->begin());
  375|  20.9k|  }
_ZN7llvm_ks11SmallVectorINS_8AsmTokenELj1EEC2Ev:
  872|  20.9k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplINS_8AsmTokenEEC2Ej:
  364|  20.9k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_8AsmTokenELb0EEC2Em:
  178|  20.9k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_8AsmTokenEvEC2Em:
   78|  20.9k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplINS_8AsmTokenEE12emplace_backIJNS1_9TokenKindENS_9StringRefEEEEvDpOT_:
  659|  20.9k|  template <typename... ArgTypes> void emplace_back(ArgTypes &&... Args) {
  660|  20.9k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  20.9k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 20.9k]
  |  |  ------------------
  ------------------
  661|      0|      this->grow();
  662|  20.9k|    ::new ((void *)this->end()) T(std::forward<ArgTypes>(Args)...);
  663|  20.9k|    this->setEnd(this->end() + 1);
  664|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairIjPNS_10MCFragmentEEEED2Ev:
  368|   910k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|   910k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|   910k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 910k]
  ------------------
  374|      0|      free(this->begin());
  375|   910k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIjPNS_10MCFragmentEEELb1EE13destroy_rangeEPS5_S7_:
  284|   910k|  static void destroy_range(T *, T *) {}
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjPNS_10MCFragmentEEEvE7isSmallEv:
   86|   910k|  bool isSmall() const {
   87|   910k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|   910k|  }
_ZN7llvm_ks11SmallVectorINSt3__14pairIjPNS_10MCFragmentEEELj1EEC2Ev:
  872|   910k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   910k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairIjPNS_10MCFragmentEEEEC2Ej:
  364|   910k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|   910k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIjPNS_10MCFragmentEEELb1EEC2Em:
  281|   910k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjPNS_10MCFragmentEEEvEC2Em:
   78|   910k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjPNS_10MCFragmentEEEvE5beginEv:
  113|   910k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjPNS_10MCFragmentEEEvE3endEv:
  117|   910k|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvEixEm:
  144|   426k|  reference operator[](size_type idx) {
  145|   426k|    assert(idx < size());
  ------------------
  |  Branch (145:5): [True: 426k, False: 0]
  ------------------
  146|   426k|    return begin()[idx];
  147|   426k|  }
_ZN7llvm_ks15SmallVectorImplINS_9StringRefEED2Ev:
  368|   276k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|   276k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|   276k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 1.20k, False: 275k]
  ------------------
  374|  1.20k|      free(this->begin());
  375|   276k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9StringRefELb1EE13destroy_rangeEPS1_S3_:
  284|   276k|  static void destroy_range(T *, T *) {}
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE7isSmallEv:
   86|   276k|  bool isSmall() const {
   87|   276k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|   276k|  }
_ZN7llvm_ks11SmallVectorINS_9StringRefELj5EEC2Ev:
  872|  1.55k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  1.55k|  }
_ZN7llvm_ks15SmallVectorImplINS_9StringRefEEC2Ej:
  364|   276k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|   276k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9StringRefELb1EEC2Em:
  281|   276k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvEC2Em:
   78|   276k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks11SmallVectorINS_9StringRefELj1EEC2Ev:
  872|     18|  SmallVector() : SmallVectorImpl<T>(N) {
  873|     18|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE5beginEv:
  113|   768k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE3endEv:
  117|   971k|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEED2Ev:
  368|  20.9k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  20.9k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  20.9k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 20.9k]
  ------------------
  374|      0|      free(this->begin());
  375|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EELb1EE13destroy_rangeEPS9_SB_:
  284|  20.9k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvE5beginEv:
  113|  20.9k|  iterator begin() { return (iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvE7isSmallEv:
   86|  20.9k|  bool isSmall() const {
   87|  20.9k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  20.9k|  }
_ZN7llvm_ks11SmallVectorINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EELj4EEC2Ev:
  872|  20.9k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEEC2Ej:
  364|  20.9k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EELb1EEC2Em:
  281|  20.9k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairINS2_IPNS_9MCSectionEPKNS_6MCExprEEES8_EEvEC2Em:
   78|  20.9k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplIjE5clearEv:
  378|     50|  void clear() {
  379|     50|    this->destroy_range(this->begin(), this->end());
  380|     50|    this->EndX = this->BeginX;
  381|     50|  }
_ZN7llvm_ks11SmallVectorIcLj16384EEC2Ev:
  872|      1|  SmallVector() : SmallVectorImpl<T>(N) {
  873|      1|  }
_ZN7llvm_ks15SmallVectorImplIcE7reserveEm:
  408|      1|  void reserve(size_type N) {
  409|      1|    if (this->capacity() < N)
  ------------------
  |  Branch (409:9): [True: 0, False: 1]
  ------------------
  410|      0|      this->grow(N);
  411|      1|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE6setEndEPS1_:
   95|   315k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks11SmallVectorINS_9StringRefELj4EEC2Ev:
  872|   209k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|   209k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9StringRefELb1EE9push_backERKS1_:
  337|   315k|  void push_back(const T &Elt) {
  338|   315k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|   315k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 3.19k, False: 311k]
  |  |  ------------------
  ------------------
  339|  3.19k|      this->grow();
  340|   315k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|   315k|    this->setEnd(this->end()+1);
  342|   315k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_9StringRefELb1EE4growEm:
  333|  3.19k|  void grow(size_t MinSize = 0) {
  334|  3.19k|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|  3.19k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_9StringRefEvE8grow_podEmm:
   80|  3.19k|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|  3.19k|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|  3.19k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairIjjEEED2Ev:
  368|  80.8k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  80.8k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  80.8k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 24, False: 80.7k]
  ------------------
  374|     24|      free(this->begin());
  375|  80.8k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIjjEELb1EE13destroy_rangeEPS3_S5_:
  284|  80.8k|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE5beginEv:
  113|  81.2k|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE3endEv:
  117|  84.4k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE7isSmallEv:
   86|  80.8k|  bool isSmall() const {
   87|  80.8k|    return BeginX == static_cast<const void*>(&FirstEl);
   88|  80.8k|  }
_ZN7llvm_ks11SmallVectorINSt3__14pairIjjEELj4EEC2Ev:
  872|  80.5k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  80.5k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__14pairIjjEEEC2Ej:
  364|  80.8k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  80.8k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIjjEELb1EEC2Em:
  281|  80.8k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvEC2Em:
   78|  80.8k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIjjEELb1EE9push_backERKS3_:
  337|  1.71k|  void push_back(const T &Elt) {
  338|  1.71k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  1.71k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 40, False: 1.67k]
  |  |  ------------------
  ------------------
  339|     40|      this->grow();
  340|  1.71k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  1.71k|    this->setEnd(this->end()+1);
  342|  1.71k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__14pairIjjEELb1EE4growEm:
  333|     40|  void grow(size_t MinSize = 0) {
  334|     40|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|     40|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE8grow_podEmm:
   80|     40|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|     40|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|     40|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE6setEndEPS3_:
   95|  1.71k|  void setEnd(T *P) { this->EndX = P; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE4dataEv:
  141|  80.5k|  const_pointer data() const { return const_pointer(begin()); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE5beginEv:
  115|   161k|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE4sizeEv:
  132|  80.6k|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE3endEv:
  119|  80.6k|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZN7llvm_ks11SmallVectorINS_7SMFixItELj4EEC2IPKS1_EET_S6_:
  881|  82.8k|  SmallVector(ItTy S, ItTy E) : SmallVectorImpl<T>(N) {
  882|  82.8k|    this->append(S, E);
  883|  82.8k|  }
_ZN7llvm_ks15SmallVectorImplINS_7SMFixItEEC2Ej:
  364|  82.8k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  82.8k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_7SMFixItELb0EEC2Em:
  178|  82.8k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvEC2Em:
   78|  82.8k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplINS_7SMFixItEE6appendIPKS1_EEvT_S6_:
  423|  82.8k|  void append(in_iter in_start, in_iter in_end) {
  424|  82.8k|    size_type NumInputs = std::distance(in_start, in_end);
  425|       |    // Grow allocated space if needed.
  426|  82.8k|    if (NumInputs > size_type(this->capacity_ptr()-this->end()))
  ------------------
  |  Branch (426:9): [True: 0, False: 82.8k]
  ------------------
  427|      0|      this->grow(this->size()+NumInputs);
  428|       |
  429|       |    // Copy the new elements over.
  430|  82.8k|    this->uninitialized_copy(in_start, in_end, this->end());
  431|  82.8k|    this->setEnd(this->end() + NumInputs);
  432|  82.8k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_7SMFixItEvE12capacity_ptrEv:
  121|  82.8k|  iterator capacity_ptr() { return (iterator)this->CapacityX; }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_7SMFixItELb0EE18uninitialized_copyIPKS1_PS1_EEvT_S7_T0_:
  219|  82.8k|  static void uninitialized_copy(It1 I, It1 E, It2 Dest) {
  220|  82.8k|    std::uninitialized_copy(I, E, Dest);
  221|  82.8k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EE9push_backEOS6_:
  236|   217k|  void push_back(T &&Elt) {
  237|   217k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|   217k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 1.61k, False: 216k]
  |  |  ------------------
  ------------------
  238|  1.61k|      this->grow();
  239|   217k|    ::new ((void*) this->end()) T(::std::move(Elt));
  240|   217k|    this->setEnd(this->end()+1);
  241|   217k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EE4growEm:
  251|  1.61k|void SmallVectorTemplateBase<T, isPodLike>::grow(size_t MinSize) {
  252|  1.61k|  size_t CurCapacity = this->capacity();
  253|  1.61k|  size_t CurSize = this->size();
  254|       |  // Always grow, even from zero.
  255|  1.61k|  size_t NewCapacity = size_t(NextPowerOf2(CurCapacity+2));
  256|  1.61k|  if (NewCapacity < MinSize)
  ------------------
  |  Branch (256:7): [True: 0, False: 1.61k]
  ------------------
  257|      0|    NewCapacity = MinSize;
  258|  1.61k|  T *NewElts = static_cast<T*>(malloc(NewCapacity*sizeof(T)));
  259|       |
  260|       |  // Move the elements over.
  261|  1.61k|  this->uninitialized_move(this->begin(), this->end(), NewElts);
  262|       |
  263|       |  // Destroy the original elements.
  264|  1.61k|  destroy_range(this->begin(), this->end());
  265|       |
  266|       |  // If this wasn't grown from the inline copy, deallocate the old space.
  267|  1.61k|  if (!this->isSmall())
  ------------------
  |  Branch (267:7): [True: 952, False: 667]
  ------------------
  268|    952|    free(this->begin());
  269|       |
  270|  1.61k|  this->setEnd(NewElts+CurSize);
  271|  1.61k|  this->BeginX = NewElts;
  272|  1.61k|  this->CapacityX = this->begin()+NewCapacity;
  273|  1.61k|}
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE8capacityEv:
  136|  1.61k|  size_t capacity() const { return capacity_ptr() - begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE12capacity_ptrEv:
  122|  1.61k|  const_iterator capacity_ptr() const { return (const_iterator)this->CapacityX;}
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EE18uninitialized_moveIPS6_S9_EEvT_SA_T0_:
  211|  1.61k|  static void uninitialized_move(It1 I, It1 E, It2 Dest) {
  212|  65.0k|    for (; I != E; ++I, ++Dest)
  ------------------
  |  Branch (212:12): [True: 63.4k, False: 1.61k]
  ------------------
  213|  63.4k|      ::new ((void*) &*Dest) T(::std::move(*I));
  214|  1.61k|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE6setEndEPS6_:
   95|   221k|  void setEnd(T *P) { this->EndX = P; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvEixEm:
  149|   724k|  const_reference operator[](size_type idx) const {
  150|   724k|    assert(idx < size());
  ------------------
  |  Branch (150:5): [True: 724k, False: 0]
  ------------------
  151|   724k|    return begin()[idx];
  152|   724k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_5SMLocELb1EE9push_backERKS1_:
  337|  1.95k|  void push_back(const T &Elt) {
  338|  1.95k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  1.95k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 103, False: 1.85k]
  |  |  ------------------
  ------------------
  339|    103|      this->grow();
  340|  1.95k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  1.95k|    this->setEnd(this->end()+1);
  342|  1.95k|  }
_ZN7llvm_ks15SmallVectorImplINS_17ConstantPoolEntryEED2Ev:
  368|    345|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|    345|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|    345|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 42, False: 303]
  ------------------
  374|     42|      free(this->begin());
  375|    345|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_17ConstantPoolEntryELb1EE13destroy_rangeEPS1_S3_:
  284|    425|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_17ConstantPoolEntryEvE5beginEv:
  113|    547|  iterator begin() { return (iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_17ConstantPoolEntryEvE3endEv:
  117|  3.68k|  iterator end() { return (iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_17ConstantPoolEntryEvE7isSmallEv:
   86|    345|  bool isSmall() const {
   87|    345|    return BeginX == static_cast<const void*>(&FirstEl);
   88|    345|  }
_ZN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEE12pop_back_valEv:
  413|    475|  T LLVM_ATTRIBUTE_UNUSED_RESULT pop_back_val() {
  414|    475|    T Result = ::std::move(this->back());
  415|    475|    this->pop_back();
  416|    475|    return Result;
  417|    475|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EE8pop_backEv:
  243|  2.64k|  void pop_back() {
  244|  2.64k|    this->setEnd(this->end()-1);
  245|  2.64k|    this->end()->~T();
  246|  2.64k|  }
_ZN7llvm_ks11SmallVectorINSt3__14pairIjjEELj16EEC2Ev:
  872|    287|  SmallVector() : SmallVectorImpl<T>(N) {
  873|    287|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__14pairIjjEEvE5frontEv:
  154|    191|  reference front() {
  155|    191|    assert(!empty());
  ------------------
  |  Branch (155:5): [True: 191, False: 0]
  ------------------
  156|    191|    return begin()[0];
  157|    191|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEvE4backEv:
  163|    530|  reference back() {
  164|    530|    assert(!empty());
  ------------------
  |  Branch (164:5): [True: 530, False: 0]
  ------------------
  165|    530|    return end()[-1];
  166|    530|  }
_ZN7llvm_ks11SmallVectorIjLj8EEC2EOS1_:
  905|     25|  SmallVector(SmallVector &&RHS) : SmallVectorImpl<T>(N) {
  906|     25|    if (!RHS.empty())
  ------------------
  |  Branch (906:9): [True: 0, False: 25]
  ------------------
  907|      0|      SmallVectorImpl<T>::operator=(::std::move(RHS));
  908|     25|  }
_ZN7llvm_ks15SmallVectorImplIjEaSEOS1_:
  787|     50|SmallVectorImpl<T> &SmallVectorImpl<T>::operator=(SmallVectorImpl<T> &&RHS) {
  788|       |  // Avoid self-assignment.
  789|     50|  if (this == &RHS) return *this;
  ------------------
  |  Branch (789:7): [True: 0, False: 50]
  ------------------
  790|       |
  791|       |  // If the RHS isn't small, clear this vector and then steal its buffer.
  792|     50|  if (!RHS.isSmall()) {
  ------------------
  |  Branch (792:7): [True: 0, False: 50]
  ------------------
  793|      0|    this->destroy_range(this->begin(), this->end());
  794|      0|    if (!this->isSmall()) free(this->begin());
  ------------------
  |  Branch (794:9): [True: 0, False: 0]
  ------------------
  795|      0|    this->BeginX = RHS.BeginX;
  796|      0|    this->EndX = RHS.EndX;
  797|      0|    this->CapacityX = RHS.CapacityX;
  798|      0|    RHS.resetToSmall();
  799|      0|    return *this;
  800|      0|  }
  801|       |
  802|       |  // If we already have sufficient space, assign the common elements, then
  803|       |  // destroy any excess.
  804|     50|  size_t RHSSize = RHS.size();
  805|     50|  size_t CurSize = this->size();
  806|     50|  if (CurSize >= RHSSize) {
  ------------------
  |  Branch (806:7): [True: 50, False: 0]
  ------------------
  807|       |    // Assign common elements.
  808|     50|    iterator NewEnd = this->begin();
  809|     50|    if (RHSSize)
  ------------------
  |  Branch (809:9): [True: 0, False: 50]
  ------------------
  810|      0|      NewEnd = this->move(RHS.begin(), RHS.end(), NewEnd);
  811|       |
  812|       |    // Destroy excess elements and trim the bounds.
  813|     50|    this->destroy_range(NewEnd, this->end());
  814|     50|    this->setEnd(NewEnd);
  815|       |
  816|       |    // Clear the RHS.
  817|     50|    RHS.clear();
  818|       |
  819|     50|    return *this;
  820|     50|  }
  821|       |
  822|       |  // If we have to grow to have enough elements, destroy the current elements.
  823|       |  // This allows us to avoid copying them during the grow.
  824|       |  // FIXME: this may not actually make any sense if we can efficiently move
  825|       |  // elements.
  826|      0|  if (this->capacity() < RHSSize) {
  ------------------
  |  Branch (826:7): [True: 0, False: 0]
  ------------------
  827|       |    // Destroy current elements.
  828|      0|    this->destroy_range(this->begin(), this->end());
  829|      0|    this->setEnd(this->begin());
  830|      0|    CurSize = 0;
  831|      0|    this->grow(RHSSize);
  832|      0|  } else if (CurSize) {
  ------------------
  |  Branch (832:14): [True: 0, False: 0]
  ------------------
  833|       |    // Otherwise, use assignment for the already-constructed elements.
  834|      0|    this->move(RHS.begin(), RHS.begin()+CurSize, this->begin());
  835|      0|  }
  836|       |
  837|       |  // Move-construct the new elements in place.
  838|      0|  this->uninitialized_move(RHS.begin()+CurSize, RHS.end(),
  839|      0|                           this->begin()+CurSize);
  840|       |
  841|       |  // Set end.
  842|      0|  this->setEnd(this->begin()+RHSSize);
  843|       |
  844|      0|  RHS.clear();
  845|      0|  return *this;
  846|     50|}
_ZN7llvm_ks11SmallVectorIjLj8EEaSEOS1_:
  910|     50|  const SmallVector &operator=(SmallVector &&RHS) {
  911|     50|    SmallVectorImpl<T>::operator=(::std::move(RHS));
  912|     50|    return *this;
  913|     50|  }
_ZN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEE5eraseEPS6_:
  462|  2.16k|  iterator erase(iterator I) {
  463|  2.16k|    assert(I >= this->begin() && "Iterator to erase is out of bounds.");
  ------------------
  |  Branch (463:5): [True: 2.16k, False: 0]
  |  Branch (463:5): [True: 2.16k, Folded]
  |  Branch (463:5): [True: 2.16k, False: 0]
  ------------------
  464|  2.16k|    assert(I < this->end() && "Erasing at past-the-end iterator.");
  ------------------
  |  Branch (464:5): [True: 2.16k, False: 0]
  |  Branch (464:5): [True: 2.16k, Folded]
  |  Branch (464:5): [True: 2.16k, False: 0]
  ------------------
  465|       |
  466|  2.16k|    iterator N = I;
  467|       |    // Shift all elts down one.
  468|  2.16k|    this->move(I+1, this->end(), I);
  469|       |    // Drop the last elt.
  470|  2.16k|    this->pop_back();
  471|  2.16k|    return(N);
  472|  2.16k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EE4moveIPS6_S9_EET0_T_SB_SA_:
  191|  2.16k|  static It2 move(It1 I, It1 E, It2 Dest) {
  192|  7.72k|    for (; I != E; ++I, ++Dest)
  ------------------
  |  Branch (192:12): [True: 5.55k, False: 2.16k]
  ------------------
  193|  5.55k|      *Dest = ::std::move(*I);
  194|  2.16k|    return Dest;
  195|  2.16k|  }
_ZN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEEE6insertEPS6_OS6_:
  488|     27|  iterator insert(iterator I, T &&Elt) {
  489|     27|    if (I == this->end()) {  // Important special case for empty vector.
  ------------------
  |  Branch (489:9): [True: 0, False: 27]
  ------------------
  490|      0|      this->push_back(::std::move(Elt));
  491|      0|      return this->end()-1;
  492|      0|    }
  493|       |
  494|     27|    assert(I >= this->begin() && "Insertion iterator is out of bounds.");
  ------------------
  |  Branch (494:5): [True: 27, False: 0]
  |  Branch (494:5): [True: 27, Folded]
  |  Branch (494:5): [True: 27, False: 0]
  ------------------
  495|     27|    assert(I <= this->end() && "Inserting past the end of the vector.");
  ------------------
  |  Branch (495:5): [True: 27, False: 0]
  |  Branch (495:5): [True: 27, Folded]
  |  Branch (495:5): [True: 27, False: 0]
  ------------------
  496|       |
  497|     27|    if (this->EndX >= this->CapacityX) {
  ------------------
  |  Branch (497:9): [True: 0, False: 27]
  ------------------
  498|      0|      size_t EltNo = I-this->begin();
  499|      0|      this->grow();
  500|      0|      I = this->begin()+EltNo;
  501|      0|    }
  502|       |
  503|     27|    ::new ((void*) this->end()) T(::std::move(this->back()));
  504|       |    // Push everything else over.
  505|     27|    this->move_backward(I, this->end()-1, this->end());
  506|     27|    this->setEnd(this->end()+1);
  507|       |
  508|       |    // If we just moved the element we're inserting, be sure to update
  509|       |    // the reference.
  510|     27|    T *EltPtr = &Elt;
  511|     27|    if (I <= EltPtr && EltPtr < this->EndX)
  ------------------
  |  Branch (511:9): [True: 0, False: 27]
  |  Branch (511:24): [True: 0, False: 0]
  ------------------
  512|      0|      ++EltPtr;
  513|       |
  514|     27|    *I = ::std::move(*EltPtr);
  515|     27|    return I;
  516|     27|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINSt3__110unique_ptrINS_18MCParsedAsmOperandENS1_14default_deleteIS3_EEEELb0EE13move_backwardIPS6_S9_EET0_T_SB_SA_:
  202|     27|  static It2 move_backward(It1 I, It1 E, It2 Dest) {
  203|     48|    while (I != E)
  ------------------
  |  Branch (203:12): [True: 21, False: 27]
  ------------------
  204|     21|      *--Dest = ::std::move(*--E);
  205|     27|    return Dest;
  206|     27|  }
_ZN7llvm_ks11SmallVectorINS_5SMLocELj4EEaSEOS2_:
  910|  6.94k|  const SmallVector &operator=(SmallVector &&RHS) {
  911|  6.94k|    SmallVectorImpl<T>::operator=(::std::move(RHS));
  912|  6.94k|    return *this;
  913|  6.94k|  }
_ZN7llvm_ks15SmallVectorImplINS_5SMLocEEaSEOS2_:
  787|  6.94k|SmallVectorImpl<T> &SmallVectorImpl<T>::operator=(SmallVectorImpl<T> &&RHS) {
  788|       |  // Avoid self-assignment.
  789|  6.94k|  if (this == &RHS) return *this;
  ------------------
  |  Branch (789:7): [True: 0, False: 6.94k]
  ------------------
  790|       |
  791|       |  // If the RHS isn't small, clear this vector and then steal its buffer.
  792|  6.94k|  if (!RHS.isSmall()) {
  ------------------
  |  Branch (792:7): [True: 0, False: 6.94k]
  ------------------
  793|      0|    this->destroy_range(this->begin(), this->end());
  794|      0|    if (!this->isSmall()) free(this->begin());
  ------------------
  |  Branch (794:9): [True: 0, False: 0]
  ------------------
  795|      0|    this->BeginX = RHS.BeginX;
  796|      0|    this->EndX = RHS.EndX;
  797|      0|    this->CapacityX = RHS.CapacityX;
  798|      0|    RHS.resetToSmall();
  799|      0|    return *this;
  800|      0|  }
  801|       |
  802|       |  // If we already have sufficient space, assign the common elements, then
  803|       |  // destroy any excess.
  804|  6.94k|  size_t RHSSize = RHS.size();
  805|  6.94k|  size_t CurSize = this->size();
  806|  6.94k|  if (CurSize >= RHSSize) {
  ------------------
  |  Branch (806:7): [True: 6.94k, False: 0]
  ------------------
  807|       |    // Assign common elements.
  808|  6.94k|    iterator NewEnd = this->begin();
  809|  6.94k|    if (RHSSize)
  ------------------
  |  Branch (809:9): [True: 0, False: 6.94k]
  ------------------
  810|      0|      NewEnd = this->move(RHS.begin(), RHS.end(), NewEnd);
  811|       |
  812|       |    // Destroy excess elements and trim the bounds.
  813|  6.94k|    this->destroy_range(NewEnd, this->end());
  814|  6.94k|    this->setEnd(NewEnd);
  815|       |
  816|       |    // Clear the RHS.
  817|  6.94k|    RHS.clear();
  818|       |
  819|  6.94k|    return *this;
  820|  6.94k|  }
  821|       |
  822|       |  // If we have to grow to have enough elements, destroy the current elements.
  823|       |  // This allows us to avoid copying them during the grow.
  824|       |  // FIXME: this may not actually make any sense if we can efficiently move
  825|       |  // elements.
  826|      0|  if (this->capacity() < RHSSize) {
  ------------------
  |  Branch (826:7): [True: 0, False: 0]
  ------------------
  827|       |    // Destroy current elements.
  828|      0|    this->destroy_range(this->begin(), this->end());
  829|      0|    this->setEnd(this->begin());
  830|      0|    CurSize = 0;
  831|      0|    this->grow(RHSSize);
  832|      0|  } else if (CurSize) {
  ------------------
  |  Branch (832:14): [True: 0, False: 0]
  ------------------
  833|       |    // Otherwise, use assignment for the already-constructed elements.
  834|      0|    this->move(RHS.begin(), RHS.begin()+CurSize, this->begin());
  835|      0|  }
  836|       |
  837|       |  // Move-construct the new elements in place.
  838|      0|  this->uninitialized_move(RHS.begin()+CurSize, RHS.end(),
  839|      0|                           this->begin()+CurSize);
  840|       |
  841|       |  // Set end.
  842|      0|  this->setEnd(this->begin()+RHSSize);
  843|       |
  844|      0|  RHS.clear();
  845|      0|  return *this;
  846|  6.94k|}
_ZN7llvm_ks15SmallVectorImplINS_5SMLocEE5clearEv:
  378|  6.94k|  void clear() {
  379|  6.94k|    this->destroy_range(this->begin(), this->end());
  380|  6.94k|    this->EndX = this->BeginX;
  381|  6.94k|  }
_ZN7llvm_ks11SmallVectorIhLj16EEC2Ev:
  872|     67|  SmallVector() : SmallVectorImpl<T>(N) {
  873|     67|  }
_ZN7llvm_ks15SmallVectorImplIhEC2Ej:
  364|     67|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|     67|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIhLb1EEC2Em:
  281|     67|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIhvEC2Em:
   78|     67|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks23SmallVectorTemplateBaseIhLb1EE9push_backERKh:
  337|     59|  void push_back(const T &Elt) {
  338|     59|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|     59|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 59]
  |  |  ------------------
  ------------------
  339|      0|      this->grow();
  340|     59|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|     59|    this->setEnd(this->end()+1);
  342|     59|  }
_ZN7llvm_ks25SmallVectorTemplateCommonIhvE3endEv:
  117|    185|  iterator end() { return (iterator)this->EndX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIhvE6setEndEPh:
   95|     59|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks15SmallVectorImplIhED2Ev:
  368|     67|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|     67|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|     67|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 67]
  ------------------
  374|      0|      free(this->begin());
  375|     67|  }
_ZN7llvm_ks23SmallVectorTemplateBaseIhLb1EE13destroy_rangeEPhS2_:
  284|     67|  static void destroy_range(T *, T *) {}
_ZN7llvm_ks25SmallVectorTemplateCommonIhvE5beginEv:
  113|     67|  iterator begin() { return (iterator)this->BeginX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIhvE7isSmallEv:
   86|     67|  bool isSmall() const {
   87|     67|    return BeginX == static_cast<const void*>(&FirstEl);
   88|     67|  }
_ZN7llvm_ks15SmallVectorImplINS_17ConstantPoolEntryEE5clearEv:
  378|     80|  void clear() {
  379|     80|    this->destroy_range(this->begin(), this->end());
  380|     80|    this->EndX = this->BeginX;
  381|     80|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_17ConstantPoolEntryELb1EE9push_backERKS1_:
  337|  1.59k|  void push_back(const T &Elt) {
  338|  1.59k|    if (LLVM_UNLIKELY(this->EndX >= this->CapacityX))
  ------------------
  |  |  172|  1.59k|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 113, False: 1.47k]
  |  |  ------------------
  ------------------
  339|    113|      this->grow();
  340|  1.59k|    memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
  341|  1.59k|    this->setEnd(this->end()+1);
  342|  1.59k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_17ConstantPoolEntryELb1EE4growEm:
  333|    113|  void grow(size_t MinSize = 0) {
  334|    113|    this->grow_pod(MinSize*sizeof(T), sizeof(T));
  335|    113|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_17ConstantPoolEntryEvE8grow_podEmm:
   80|    113|  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
   81|    113|    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
   82|    113|  }
_ZN7llvm_ks25SmallVectorTemplateCommonINS_17ConstantPoolEntryEvE6setEndEPS1_:
   95|  1.59k|  void setEnd(T *P) { this->EndX = P; }
_ZN7llvm_ks11SmallVectorINS_17ConstantPoolEntryELj4EEC2EOS2_:
  905|    230|  SmallVector(SmallVector &&RHS) : SmallVectorImpl<T>(N) {
  906|    230|    if (!RHS.empty())
  ------------------
  |  Branch (906:9): [True: 0, False: 230]
  ------------------
  907|      0|      SmallVectorImpl<T>::operator=(::std::move(RHS));
  908|    230|  }
_ZN7llvm_ks15SmallVectorImplINS_17ConstantPoolEntryEEC2Ej:
  364|    345|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|    345|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_17ConstantPoolEntryELb1EEC2Em:
  281|    345|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_17ConstantPoolEntryEvEC2Em:
   78|    345|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks11SmallVectorINS_17ConstantPoolEntryELj4EEC2Ev:
  872|    115|  SmallVector() : SmallVectorImpl<T>(N) {
  873|    115|  }
_ZN7llvm_ks11SmallVectorINS_14MCLOHDirectiveELj32EEC2Ev:
  872|  20.9k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  20.9k|  }
_ZN7llvm_ks15SmallVectorImplINS_14MCLOHDirectiveEEC2Ej:
  364|  20.9k|    : SmallVectorTemplateBase<T, isPodLike<T>::value>(N*sizeof(T)) {
  365|  20.9k|  }
_ZN7llvm_ks23SmallVectorTemplateBaseINS_14MCLOHDirectiveELb0EEC2Em:
  178|  20.9k|  SmallVectorTemplateBase(size_t Size) : SmallVectorTemplateCommon<T>(Size) {}
_ZN7llvm_ks25SmallVectorTemplateCommonINS_14MCLOHDirectiveEvEC2Em:
   78|  20.9k|  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
_ZN7llvm_ks15SmallVectorImplINS_14MCLOHDirectiveEED2Ev:
  368|  20.9k|  ~SmallVectorImpl() {
  369|       |    // Destroy the constructed elements in the vector.
  370|  20.9k|    this->destroy_range(this->begin(), this->end());
  371|       |
  372|       |    // If this wasn't grown from the inline copy, deallocate the old space.
  373|  20.9k|    if (!this->isSmall())
  ------------------
  |  Branch (373:9): [True: 0, False: 20.9k]
  ------------------
  374|      0|      free(this->begin());
  375|  20.9k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvE4sizeEv:
  132|  36.5k|  size_type size() const { return end()-begin(); }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvE3endEv:
  119|  36.5k|  const_iterator end() const { return (const_iterator)this->EndX; }
_ZNK7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvE5beginEv:
  115|  36.5k|  const_iterator begin() const { return (const_iterator)this->BeginX; }
_ZN7llvm_ks25SmallVectorTemplateCommonIPNS_9MCSectionEvEixEm:
  144|  18.6k|  reference operator[](size_type idx) {
  145|  18.6k|    assert(idx < size());
  ------------------
  |  Branch (145:5): [True: 18.6k, False: 0]
  ------------------
  146|  18.6k|    return begin()[idx];
  147|  18.6k|  }
_ZNK7llvm_ks25SmallVectorTemplateCommonINS_7MCFixupEvE4dataEv:
  141|  10.7k|  const_pointer data() const { return const_pointer(begin()); }
_ZN7llvm_ks15SmallVectorImplINS_7MCFixupEEaSERKS2_:
  739|    171|  operator=(const SmallVectorImpl<T> &RHS) {
  740|       |  // Avoid self-assignment.
  741|    171|  if (this == &RHS) return *this;
  ------------------
  |  Branch (741:7): [True: 0, False: 171]
  ------------------
  742|       |
  743|       |  // If we already have sufficient space, assign the common elements, then
  744|       |  // destroy any excess.
  745|    171|  size_t RHSSize = RHS.size();
  746|    171|  size_t CurSize = this->size();
  747|    171|  if (CurSize >= RHSSize) {
  ------------------
  |  Branch (747:7): [True: 171, False: 0]
  ------------------
  748|       |    // Assign common elements.
  749|    171|    iterator NewEnd;
  750|    171|    if (RHSSize)
  ------------------
  |  Branch (750:9): [True: 153, False: 18]
  ------------------
  751|    153|      NewEnd = std::copy(RHS.begin(), RHS.begin()+RHSSize, this->begin());
  752|     18|    else
  753|     18|      NewEnd = this->begin();
  754|       |
  755|       |    // Destroy excess elements.
  756|    171|    this->destroy_range(NewEnd, this->end());
  757|       |
  758|       |    // Trim.
  759|    171|    this->setEnd(NewEnd);
  760|    171|    return *this;
  761|    171|  }
  762|       |
  763|       |  // If we have to grow to have enough elements, destroy the current elements.
  764|       |  // This allows us to avoid copying them during the grow.
  765|       |  // FIXME: don't do this if they're efficiently moveable.
  766|      0|  if (this->capacity() < RHSSize) {
  ------------------
  |  Branch (766:7): [True: 0, False: 0]
  ------------------
  767|       |    // Destroy current elements.
  768|      0|    this->destroy_range(this->begin(), this->end());
  769|      0|    this->setEnd(this->begin());
  770|      0|    CurSize = 0;
  771|      0|    this->grow(RHSSize);
  772|      0|  } else if (CurSize) {
  ------------------
  |  Branch (772:14): [True: 0, False: 0]
  ------------------
  773|       |    // Otherwise, use assignment for the already-constructed elements.
  774|      0|    std::copy(RHS.begin(), RHS.begin()+CurSize, this->begin());
  775|      0|  }
  776|       |
  777|       |  // Copy construct the new elements in place.
  778|      0|  this->uninitialized_copy(RHS.begin()+CurSize, RHS.end(),
  779|      0|                           this->begin()+CurSize);
  780|       |
  781|       |  // Set end.
  782|      0|  this->setEnd(this->begin()+RHSSize);
  783|      0|  return *this;
  784|    171|}
_ZN7llvm_ks11SmallVectorINS_9StringRefELj3EEC2Ev:
  872|  64.9k|  SmallVector() : SmallVectorImpl<T>(N) {
  873|  64.9k|  }

APFloat.cpp:_ZN7llvm_ksL13hexDigitValueEc:
   40|  44.1k|static inline unsigned hexDigitValue(char C) {
   41|  44.1k|  if (C >= '0' && C <= '9') return C-'0';
  ------------------
  |  Branch (41:7): [True: 44.1k, False: 0]
  |  Branch (41:19): [True: 26.4k, False: 17.6k]
  ------------------
   42|  17.6k|  if (C >= 'a' && C <= 'f') return C-'a'+10U;
  ------------------
  |  Branch (42:7): [True: 7.71k, False: 9.96k]
  |  Branch (42:19): [True: 5.04k, False: 2.66k]
  ------------------
   43|  12.6k|  if (C >= 'A' && C <= 'F') return C-'A'+10U;
  ------------------
  |  Branch (43:7): [True: 12.6k, False: 0]
  |  Branch (43:19): [True: 7.01k, False: 5.61k]
  ------------------
   44|  5.61k|  return -1U;
   45|  12.6k|}
StringMap.cpp:_ZN7llvm_ksL10HashStringENS_9StringRefEj:
  112|  7.00M|static inline unsigned HashString(StringRef Str, unsigned Result = 0) {
  113|  67.7M|  for (StringRef::size_type i = 0, e = Str.size(); i != e; ++i)
  ------------------
  |  Branch (113:52): [True: 60.7M, False: 7.00M]
  ------------------
  114|  60.7M|    Result = Result * 33 + (unsigned char)Str[i];
  115|  7.00M|  return Result;
  116|  7.00M|}

_ZN7llvm_ks18StringMapEntryBaseC2Ej:
   35|  4.57M|  explicit StringMapEntryBase(unsigned Len) : StrLen(Len) {}
_ZNK7llvm_ks18StringMapEntryBase12getKeyLengthEv:
   37|  5.60M|  unsigned getKeyLength() const { return StrLen; }
_ZN7llvm_ks13StringMapImplC2Ej:
   55|   188k|      : TheTable(nullptr),
   56|       |        // Initialize the map with zero buckets to allocation.
   57|   188k|        NumBuckets(0), NumItems(0), NumTombstones(0), ItemSize(itemSize) {}
_ZN7llvm_ks13StringMapImpl15getTombstoneValEv:
   95|  29.6M|  static StringMapEntryBase *getTombstoneVal() {
   96|  29.6M|    return (StringMapEntryBase*)-1;
   97|  29.6M|  }
_ZNK7llvm_ks13StringMapImpl5emptyEv:
  102|   293k|  bool empty() const { return NumItems == 0; }
_ZN7llvm_ks14StringMapEntryIjE7DestroyINS_15MallocAllocatorEEEvRT_:
  198|   227k|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|   227k|    unsigned AllocSize =
  201|   227k|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|   227k|    this->~StringMapEntry();
  203|   227k|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|   227k|  }
_ZNK7llvm_ks14StringMapEntryIbE5firstEv:
  143|  4.91k|  StringRef first() const { return StringRef(getKeyData(), getKeyLength()); }
_ZNK7llvm_ks14StringMapEntryIbE10getKeyDataEv:
  141|   370k|  const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEEC2Ev:
  224|  42.0k|  StringMap() : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {}
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEED2Ev:
  385|  42.0k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  42.0k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 1, False: 42.0k]
  ------------------
  390|     17|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 16, False: 1]
  ------------------
  391|     16|        StringMapEntryBase *Bucket = TheTable[I];
  392|     16|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 1, False: 15]
  |  Branch (392:23): [True: 1, False: 0]
  ------------------
  393|      1|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|      1|        }
  395|     16|      }
  396|      1|    }
  397|  42.0k|    free(TheTable);
  398|  42.0k|  }
_ZN7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEEC2ES6_:
  229|  20.9k|    : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))), Allocator(A) {}
_ZN7llvm_ks9StringMapIbRNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEEC2ES4_:
  229|  20.9k|    : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))), Allocator(A) {}
_ZN7llvm_ks9StringMapIPNS_14MCSectionMachOENS_15MallocAllocatorEEC2Ev:
  224|  20.9k|  StringMap() : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {}
_ZN7llvm_ks9StringMapIbNS_15MallocAllocatorEEC2Ev:
  224|  20.9k|  StringMap() : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {}
_ZN7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEED2Ev:
  385|  20.9k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  20.9k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 0, False: 20.9k]
  ------------------
  390|      0|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 0, False: 0]
  ------------------
  391|      0|        StringMapEntryBase *Bucket = TheTable[I];
  392|      0|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 0, False: 0]
  |  Branch (392:23): [True: 0, False: 0]
  ------------------
  393|      0|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|      0|        }
  395|      0|      }
  396|      0|    }
  397|  20.9k|    free(TheTable);
  398|  20.9k|  }
_ZN7llvm_ks14StringMapEntryIPNS_8MCSymbolEE7DestroyINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEEEvRT_:
  198|  37.0k|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|  37.0k|    unsigned AllocSize =
  201|  37.0k|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|  37.0k|    this->~StringMapEntry();
  203|  37.0k|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|  37.0k|  }
_ZN7llvm_ks9StringMapIbRNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEED2Ev:
  385|  20.9k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  20.9k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 0, False: 20.9k]
  ------------------
  390|      0|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 0, False: 0]
  ------------------
  391|      0|        StringMapEntryBase *Bucket = TheTable[I];
  392|      0|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 0, False: 0]
  |  Branch (392:23): [True: 0, False: 0]
  ------------------
  393|      0|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|      0|        }
  395|      0|      }
  396|      0|    }
  397|  20.9k|    free(TheTable);
  398|  20.9k|  }
_ZN7llvm_ks14StringMapEntryIbE7DestroyINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEEEvRT_:
  198|   365k|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|   365k|    unsigned AllocSize =
  201|   365k|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|   365k|    this->~StringMapEntry();
  203|   365k|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|   365k|  }
_ZN7llvm_ks9StringMapIPNS_14MCSectionMachOENS_15MallocAllocatorEED2Ev:
  385|  20.9k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  20.9k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 0, False: 20.9k]
  ------------------
  390|      0|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 0, False: 0]
  ------------------
  391|      0|        StringMapEntryBase *Bucket = TheTable[I];
  392|      0|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 0, False: 0]
  |  Branch (392:23): [True: 0, False: 0]
  ------------------
  393|      0|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|      0|        }
  395|      0|      }
  396|      0|    }
  397|  20.9k|    free(TheTable);
  398|  20.9k|  }
_ZN7llvm_ks14StringMapEntryIPNS_14MCSectionMachOEE7DestroyINS_15MallocAllocatorEEEvRT_:
  198|    373|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|    373|    unsigned AllocSize =
  201|    373|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|    373|    this->~StringMapEntry();
  203|    373|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|    373|  }
_ZN7llvm_ks9StringMapIbNS_15MallocAllocatorEED2Ev:
  385|  20.9k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  20.9k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 202, False: 20.7k]
  ------------------
  390|  3.43k|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 3.23k, False: 202]
  ------------------
  391|  3.23k|        StringMapEntryBase *Bucket = TheTable[I];
  392|  3.23k|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 202, False: 3.03k]
  |  Branch (392:23): [True: 202, False: 0]
  ------------------
  393|    202|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|    202|        }
  395|  3.23k|      }
  396|    202|    }
  397|  20.9k|    free(TheTable);
  398|  20.9k|  }
_ZN7llvm_ks14StringMapEntryIbE7DestroyINS_15MallocAllocatorEEEvRT_:
  198|    202|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|    202|    unsigned AllocSize =
  201|    202|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|    202|    this->~StringMapEntry();
  203|    202|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|    202|  }
_ZN7llvm_ks9StringMapIbRNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE5clearEv:
  349|  20.9k|  void clear() {
  350|  20.9k|    if (empty()) return;
  ------------------
  |  Branch (350:9): [True: 0, False: 20.9k]
  ------------------
  351|       |
  352|       |    // Zap all values, resetting the keys back to non-present (not tombstone),
  353|       |    // which is safe because we're removing all elements.
  354|   658k|    for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (354:42): [True: 637k, False: 20.9k]
  ------------------
  355|   637k|      StringMapEntryBase *&Bucket = TheTable[I];
  356|   637k|      if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (356:11): [True: 365k, False: 272k]
  |  Branch (356:21): [True: 365k, False: 0]
  ------------------
  357|   365k|        static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  358|   365k|      }
  359|   637k|      Bucket = nullptr;
  360|   637k|    }
  361|       |
  362|  20.9k|    NumItems = 0;
  363|  20.9k|    NumTombstones = 0;
  364|  20.9k|  }
_ZN7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE5clearEv:
  349|  20.9k|  void clear() {
  350|  20.9k|    if (empty()) return;
  ------------------
  |  Branch (350:9): [True: 0, False: 20.9k]
  ------------------
  351|       |
  352|       |    // Zap all values, resetting the keys back to non-present (not tombstone),
  353|       |    // which is safe because we're removing all elements.
  354|   362k|    for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (354:42): [True: 341k, False: 20.9k]
  ------------------
  355|   341k|      StringMapEntryBase *&Bucket = TheTable[I];
  356|   341k|      if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (356:11): [True: 37.0k, False: 304k]
  |  Branch (356:21): [True: 37.0k, False: 0]
  ------------------
  357|  37.0k|        static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  358|  37.0k|      }
  359|   341k|      Bucket = nullptr;
  360|   341k|    }
  361|       |
  362|  20.9k|    NumItems = 0;
  363|  20.9k|    NumTombstones = 0;
  364|  20.9k|  }
_ZN7llvm_ks9StringMapIPNS_14MCSectionMachOENS_15MallocAllocatorEE5clearEv:
  349|  20.9k|  void clear() {
  350|  20.9k|    if (empty()) return;
  ------------------
  |  Branch (350:9): [True: 20.7k, False: 206]
  ------------------
  351|       |
  352|       |    // Zap all values, resetting the keys back to non-present (not tombstone),
  353|       |    // which is safe because we're removing all elements.
  354|  3.55k|    for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (354:42): [True: 3.34k, False: 206]
  ------------------
  355|  3.34k|      StringMapEntryBase *&Bucket = TheTable[I];
  356|  3.34k|      if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (356:11): [True: 373, False: 2.97k]
  |  Branch (356:21): [True: 373, False: 0]
  ------------------
  357|    373|        static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  358|    373|      }
  359|  3.34k|      Bucket = nullptr;
  360|  3.34k|    }
  361|       |
  362|    206|    NumItems = 0;
  363|    206|    NumTombstones = 0;
  364|    206|  }
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEE5clearEv:
  349|  20.9k|  void clear() {
  350|  20.9k|    if (empty()) return;
  ------------------
  |  Branch (350:9): [True: 0, False: 20.9k]
  ------------------
  351|       |
  352|       |    // Zap all values, resetting the keys back to non-present (not tombstone),
  353|       |    // which is safe because we're removing all elements.
  354|   390k|    for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (354:42): [True: 369k, False: 20.9k]
  ------------------
  355|   369k|      StringMapEntryBase *&Bucket = TheTable[I];
  356|   369k|      if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (356:11): [True: 227k, False: 141k]
  |  Branch (356:21): [True: 227k, False: 0]
  ------------------
  357|   227k|        static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  358|   227k|      }
  359|   369k|      Bucket = nullptr;
  360|   369k|    }
  361|       |
  362|  20.9k|    NumItems = 0;
  363|  20.9k|    NumTombstones = 0;
  364|  20.9k|  }
_ZN7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEEixENS_9StringRefE:
  298|   287k|  ValueTy &operator[](StringRef Key) {
  299|   287k|    return insert(std::make_pair(Key, ValueTy())).first->second;
  300|   287k|  }
_ZN7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE6insertENSt3__14pairINS_9StringRefES2_EE:
  330|   287k|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|   287k|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|   287k|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|   287k|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 250k, False: 37.0k]
  |  Branch (333:19): [True: 250k, False: 0]
  ------------------
  334|   250k|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|   250k|                            false); // Already exists in map.
  336|       |
  337|  37.0k|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 37.0k]
  ------------------
  338|      0|      --NumTombstones;
  339|  37.0k|    Bucket =
  340|  37.0k|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|  37.0k|    ++NumItems;
  342|  37.0k|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 37.0k, False: 0]
  ------------------
  343|       |
  344|  37.0k|    BucketNo = RehashTable(BucketNo);
  345|  37.0k|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|  37.0k|  }
_ZN7llvm_ks17StringMapIteratorIPNS_8MCSymbolEEC2EPPNS_18StringMapEntryBaseEb:
  452|   287k|    : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
  453|   287k|  }
_ZN7llvm_ks22StringMapConstIteratorIPNS_8MCSymbolEEC2EPPNS_18StringMapEntryBaseEb:
  412|   532k|  : Ptr(Bucket) {
  413|   532k|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (413:9): [True: 287k, False: 245k]
  ------------------
  414|   532k|  }
_ZN7llvm_ks22StringMapConstIteratorIPNS_8MCSymbolEE23AdvancePastEmptyBucketsEv:
  440|   287k|  void AdvancePastEmptyBuckets() {
  441|   287k|    while (*Ptr == nullptr || *Ptr == StringMapImpl::getTombstoneVal())
  ------------------
  |  Branch (441:12): [True: 0, False: 287k]
  |  Branch (441:31): [True: 0, False: 287k]
  ------------------
  442|      0|      ++Ptr;
  443|   287k|  }
_ZN7llvm_ks14StringMapEntryIPNS_8MCSymbolEE6CreateINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEES2_EEPS3_NS_9StringRefERT_OT0_:
  149|  37.0k|                                InitType &&InitVal) {
  150|  37.0k|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|  37.0k|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|  37.0k|      KeyLength+1;
  156|  37.0k|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|  37.0k|    StringMapEntry *NewItem =
  159|  37.0k|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|  37.0k|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|  37.0k|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|  37.0k|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 36.8k, False: 206]
  ------------------
  167|  36.8k|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|  37.0k|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|  37.0k|    return NewItem;
  170|  37.0k|  }
_ZN7llvm_ks14StringMapEntryIPNS_8MCSymbolEEC2IS2_EEjOT_:
  127|  37.0k|      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
_ZNK7llvm_ks14StringMapEntryIPNS_8MCSymbolEE10getKeyDataEv:
  141|  37.0k|  const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
_ZNK7llvm_ks17StringMapIteratorIPNS_8MCSymbolEEptEv:
  457|   287k|  StringMapEntry<ValueTy> *operator->() const {
  458|   287k|    return static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  459|   287k|  }
_ZN7llvm_ks9StringMapIbRNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE6insertENSt3__14pairINS_9StringRefEbEE:
  330|   365k|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|   365k|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|   365k|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|   365k|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 167, False: 365k]
  |  Branch (333:19): [True: 167, False: 0]
  ------------------
  334|    167|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|    167|                            false); // Already exists in map.
  336|       |
  337|   365k|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 365k]
  ------------------
  338|      0|      --NumTombstones;
  339|   365k|    Bucket =
  340|   365k|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|   365k|    ++NumItems;
  342|   365k|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 365k, False: 0]
  ------------------
  343|       |
  344|   365k|    BucketNo = RehashTable(BucketNo);
  345|   365k|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|   365k|  }
_ZN7llvm_ks17StringMapIteratorIbEC2EPPNS_18StringMapEntryBaseEb:
  452|   365k|    : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
  453|   365k|  }
_ZN7llvm_ks22StringMapConstIteratorIbEC2EPPNS_18StringMapEntryBaseEb:
  412|   365k|  : Ptr(Bucket) {
  413|   365k|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (413:9): [True: 365k, False: 0]
  ------------------
  414|   365k|  }
_ZN7llvm_ks22StringMapConstIteratorIbE23AdvancePastEmptyBucketsEv:
  440|   365k|  void AdvancePastEmptyBuckets() {
  441|   365k|    while (*Ptr == nullptr || *Ptr == StringMapImpl::getTombstoneVal())
  ------------------
  |  Branch (441:12): [True: 0, False: 365k]
  |  Branch (441:31): [True: 0, False: 365k]
  ------------------
  442|      0|      ++Ptr;
  443|   365k|  }
_ZN7llvm_ks14StringMapEntryIbE6CreateINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEbEEPS1_NS_9StringRefERT_OT0_:
  149|   365k|                                InitType &&InitVal) {
  150|   365k|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|   365k|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|   365k|      KeyLength+1;
  156|   365k|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|   365k|    StringMapEntry *NewItem =
  159|   365k|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|   365k|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|   365k|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|   365k|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 364k, False: 206]
  ------------------
  167|   364k|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|   365k|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|   365k|    return NewItem;
  170|   365k|  }
_ZN7llvm_ks14StringMapEntryIbEC2IbEEjOT_:
  127|   365k|      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
_ZNK7llvm_ks17StringMapIteratorIbEdeEv:
  454|   386k|  StringMapEntry<ValueTy> &operator*() const {
  455|   386k|    return *static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  456|   386k|  }
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEEixENS_9StringRefE:
  298|   343k|  ValueTy &operator[](StringRef Key) {
  299|   343k|    return insert(std::make_pair(Key, ValueTy())).first->second;
  300|   343k|  }
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEE6insertENSt3__14pairINS_9StringRefEjEE:
  330|   343k|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|   343k|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|   343k|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|   343k|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 116k, False: 227k]
  |  Branch (333:19): [True: 116k, False: 0]
  ------------------
  334|   116k|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|   116k|                            false); // Already exists in map.
  336|       |
  337|   227k|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 227k]
  ------------------
  338|      0|      --NumTombstones;
  339|   227k|    Bucket =
  340|   227k|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|   227k|    ++NumItems;
  342|   227k|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 227k, False: 0]
  ------------------
  343|       |
  344|   227k|    BucketNo = RehashTable(BucketNo);
  345|   227k|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|   227k|  }
_ZN7llvm_ks17StringMapIteratorIjEC2EPPNS_18StringMapEntryBaseEb:
  452|   431k|    : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
  453|   431k|  }
_ZN7llvm_ks22StringMapConstIteratorIjEC2EPPNS_18StringMapEntryBaseEb:
  412|   431k|  : Ptr(Bucket) {
  413|   431k|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (413:9): [True: 343k, False: 87.1k]
  ------------------
  414|   431k|  }
_ZN7llvm_ks22StringMapConstIteratorIjE23AdvancePastEmptyBucketsEv:
  440|   343k|  void AdvancePastEmptyBuckets() {
  441|   343k|    while (*Ptr == nullptr || *Ptr == StringMapImpl::getTombstoneVal())
  ------------------
  |  Branch (441:12): [True: 0, False: 343k]
  |  Branch (441:31): [True: 0, False: 343k]
  ------------------
  442|      0|      ++Ptr;
  443|   343k|  }
_ZN7llvm_ks14StringMapEntryIjE6CreateINS_15MallocAllocatorEjEEPS1_NS_9StringRefERT_OT0_:
  149|   227k|                                InitType &&InitVal) {
  150|   227k|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|   227k|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|   227k|      KeyLength+1;
  156|   227k|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|   227k|    StringMapEntry *NewItem =
  159|   227k|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|   227k|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|   227k|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|   227k|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 227k, False: 0]
  ------------------
  167|   227k|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|   227k|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|   227k|    return NewItem;
  170|   227k|  }
_ZN7llvm_ks14StringMapEntryIjEC2IjEEjOT_:
  127|   227k|      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
_ZNK7llvm_ks14StringMapEntryIjE10getKeyDataEv:
  141|   227k|  const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
_ZNK7llvm_ks17StringMapIteratorIjEptEv:
  457|   343k|  StringMapEntry<ValueTy> *operator->() const {
  458|   343k|    return static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  459|   343k|  }
_ZNK7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE6lookupENS_9StringRefE:
  291|   122k|  ValueTy lookup(StringRef Key) const {
  292|   122k|    const_iterator it = find(Key);
  293|   122k|    if (it != end())
  ------------------
  |  Branch (293:9): [True: 99.7k, False: 22.9k]
  ------------------
  294|  99.7k|      return it->second;
  295|  22.9k|    return ValueTy();
  296|   122k|  }
_ZNK7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE4findENS_9StringRefE:
  283|   122k|  const_iterator find(StringRef Key) const {
  284|   122k|    int Bucket = FindKey(Key);
  285|   122k|    if (Bucket == -1) return end();
  ------------------
  |  Branch (285:9): [True: 22.9k, False: 99.7k]
  ------------------
  286|  99.7k|    return const_iterator(TheTable+Bucket, true);
  287|   122k|  }
_ZNK7llvm_ks22StringMapConstIteratorIPNS_8MCSymbolEEneERKS3_:
  426|   122k|  bool operator!=(const StringMapConstIterator &RHS) const {
  427|   122k|    return Ptr != RHS.Ptr;
  428|   122k|  }
_ZNK7llvm_ks9StringMapIPNS_8MCSymbolERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE3endEv:
  273|   145k|  const_iterator end() const {
  274|   145k|    return const_iterator(TheTable+NumBuckets, true);
  275|   145k|  }
_ZNK7llvm_ks22StringMapConstIteratorIPNS_8MCSymbolEEptEv:
  419|  99.7k|  const value_type *operator->() const {
  420|  99.7k|    return static_cast<StringMapEntry<ValueTy>*>(*Ptr);
  421|  99.7k|  }
_ZN7llvm_ks9StringMapIPNS_14MCSectionMachOENS_15MallocAllocatorEEixENS_9StringRefE:
  298|  2.72k|  ValueTy &operator[](StringRef Key) {
  299|  2.72k|    return insert(std::make_pair(Key, ValueTy())).first->second;
  300|  2.72k|  }
_ZN7llvm_ks9StringMapIPNS_14MCSectionMachOENS_15MallocAllocatorEE6insertENSt3__14pairINS_9StringRefES2_EE:
  330|  2.72k|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|  2.72k|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|  2.72k|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|  2.72k|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 2.35k, False: 373]
  |  Branch (333:19): [True: 2.35k, False: 0]
  ------------------
  334|  2.35k|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|  2.35k|                            false); // Already exists in map.
  336|       |
  337|    373|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 373]
  ------------------
  338|      0|      --NumTombstones;
  339|    373|    Bucket =
  340|    373|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|    373|    ++NumItems;
  342|    373|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 373, False: 0]
  ------------------
  343|       |
  344|    373|    BucketNo = RehashTable(BucketNo);
  345|    373|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|    373|  }
_ZN7llvm_ks17StringMapIteratorIPNS_14MCSectionMachOEEC2EPPNS_18StringMapEntryBaseEb:
  452|  2.72k|    : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
  453|  2.72k|  }
_ZN7llvm_ks22StringMapConstIteratorIPNS_14MCSectionMachOEEC2EPPNS_18StringMapEntryBaseEb:
  412|  2.72k|  : Ptr(Bucket) {
  413|  2.72k|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (413:9): [True: 2.72k, False: 0]
  ------------------
  414|  2.72k|  }
_ZN7llvm_ks22StringMapConstIteratorIPNS_14MCSectionMachOEE23AdvancePastEmptyBucketsEv:
  440|  2.72k|  void AdvancePastEmptyBuckets() {
  441|  2.72k|    while (*Ptr == nullptr || *Ptr == StringMapImpl::getTombstoneVal())
  ------------------
  |  Branch (441:12): [True: 0, False: 2.72k]
  |  Branch (441:31): [True: 0, False: 2.72k]
  ------------------
  442|      0|      ++Ptr;
  443|  2.72k|  }
_ZN7llvm_ks14StringMapEntryIPNS_14MCSectionMachOEE6CreateINS_15MallocAllocatorES2_EEPS3_NS_9StringRefERT_OT0_:
  149|    373|                                InitType &&InitVal) {
  150|    373|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|    373|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|    373|      KeyLength+1;
  156|    373|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|    373|    StringMapEntry *NewItem =
  159|    373|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|    373|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|    373|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|    373|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 373, False: 0]
  ------------------
  167|    373|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|    373|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|    373|    return NewItem;
  170|    373|  }
_ZN7llvm_ks14StringMapEntryIPNS_14MCSectionMachOEEC2IS2_EEjOT_:
  127|    373|      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
_ZNK7llvm_ks14StringMapEntryIPNS_14MCSectionMachOEE10getKeyDataEv:
  141|    373|  const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
_ZNK7llvm_ks17StringMapIteratorIPNS_14MCSectionMachOEEptEv:
  457|  2.72k|  StringMapEntry<ValueTy> *operator->() const {
  458|  2.72k|    return static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  459|  2.72k|  }
_ZN7llvm_ks17StringMapIteratorIbEC2Ev:
  449|    202|  StringMapIterator() {}
_ZN7llvm_ks22StringMapConstIteratorIbEC2Ev:
  408|    202|  StringMapConstIterator() : Ptr(nullptr) { }
_ZN7llvm_ks9StringMapIbNS_15MallocAllocatorEE6insertENSt3__14pairINS_9StringRefEbEE:
  330|    202|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|    202|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|    202|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|    202|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 0, False: 202]
  |  Branch (333:19): [True: 0, False: 0]
  ------------------
  334|      0|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|      0|                            false); // Already exists in map.
  336|       |
  337|    202|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 202]
  ------------------
  338|      0|      --NumTombstones;
  339|    202|    Bucket =
  340|    202|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|    202|    ++NumItems;
  342|    202|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 202, False: 0]
  ------------------
  343|       |
  344|    202|    BucketNo = RehashTable(BucketNo);
  345|    202|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|    202|  }
_ZN7llvm_ks14StringMapEntryIbE6CreateINS_15MallocAllocatorEbEEPS1_NS_9StringRefERT_OT0_:
  149|    202|                                InitType &&InitVal) {
  150|    202|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|    202|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|    202|      KeyLength+1;
  156|    202|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|    202|    StringMapEntry *NewItem =
  159|    202|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|    202|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|    202|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|    202|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 202, False: 0]
  ------------------
  167|    202|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|    202|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|    202|    return NewItem;
  170|    202|  }
_ZNK7llvm_ks17StringMapIteratorIbEptEv:
  457|    202|  StringMapEntry<ValueTy> *operator->() const {
  458|    202|    return static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  459|    202|  }
_ZNK7llvm_ks14StringMapEntryIbE6getKeyEv:
  129|    202|  StringRef getKey() const {
  130|    202|    return StringRef(getKeyData(), getKeyLength());
  131|    202|  }
_ZN7llvm_ks9StringMapINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEENS_15MallocAllocatorEEC2Ev:
  224|  20.9k|  StringMap() : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {}
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_110MCAsmMacroENS_15MallocAllocatorEEC2Ev:
  224|  20.9k|  StringMap() : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {}
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_19AsmParser13DirectiveKindENS_15MallocAllocatorEEC2Ev:
  224|  20.9k|  StringMap() : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {}
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_19AsmParser13DirectiveKindENS_15MallocAllocatorEED2Ev:
  385|  20.9k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  20.9k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 20.9k, False: 0]
  ------------------
  390|  5.38M|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 5.36M, False: 20.9k]
  ------------------
  391|  5.36M|        StringMapEntryBase *Bucket = TheTable[I];
  392|  5.36M|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 2.55M, False: 2.81M]
  |  Branch (392:23): [True: 2.55M, False: 0]
  ------------------
  393|  2.55M|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|  2.55M|        }
  395|  5.36M|      }
  396|  20.9k|    }
  397|  20.9k|    free(TheTable);
  398|  20.9k|  }
AsmParser.cpp:_ZN7llvm_ks14StringMapEntryIN12_GLOBAL__N_19AsmParser13DirectiveKindEE7DestroyINS_15MallocAllocatorEEEvRT_:
  198|  2.55M|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|  2.55M|    unsigned AllocSize =
  201|  2.55M|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|  2.55M|    this->~StringMapEntry();
  203|  2.55M|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|  2.55M|  }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_110MCAsmMacroENS_15MallocAllocatorEED2Ev:
  385|  20.9k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  20.9k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 543, False: 20.4k]
  ------------------
  390|  9.23k|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 8.68k, False: 543]
  ------------------
  391|  8.68k|        StringMapEntryBase *Bucket = TheTable[I];
  392|  8.68k|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 588, False: 8.10k]
  |  Branch (392:23): [True: 588, False: 0]
  ------------------
  393|    588|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|    588|        }
  395|  8.68k|      }
  396|    543|    }
  397|  20.9k|    free(TheTable);
  398|  20.9k|  }
AsmParser.cpp:_ZN7llvm_ks14StringMapEntryIN12_GLOBAL__N_110MCAsmMacroEE7DestroyINS_15MallocAllocatorEEEvRT_:
  198|    588|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|    588|    unsigned AllocSize =
  201|    588|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|    588|    this->~StringMapEntry();
  203|    588|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|    588|  }
_ZN7llvm_ks9StringMapINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEENS_15MallocAllocatorEED2Ev:
  385|  20.9k|  ~StringMap() {
  386|       |    // Delete all the elements in the map, but don't reset the elements
  387|       |    // to default values.  This is a copy of clear(), but avoids unnecessary
  388|       |    // work not required in the destructor.
  389|  20.9k|    if (!empty()) {
  ------------------
  |  Branch (389:9): [True: 20.9k, False: 0]
  ------------------
  390|  2.70M|      for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (390:44): [True: 2.68M, False: 20.9k]
  ------------------
  391|  2.68M|        StringMapEntryBase *Bucket = TheTable[I];
  392|  2.68M|        if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (392:13): [True: 1.38M, False: 1.30M]
  |  Branch (392:23): [True: 1.38M, False: 0]
  ------------------
  393|  1.38M|          static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  394|  1.38M|        }
  395|  2.68M|      }
  396|  20.9k|    }
  397|  20.9k|    free(TheTable);
  398|  20.9k|  }
_ZN7llvm_ks14StringMapEntryINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEE7DestroyINS_15MallocAllocatorEEEvRT_:
  198|  1.38M|  void Destroy(AllocatorTy &Allocator) {
  199|       |    // Free memory referenced by the item.
  200|  1.38M|    unsigned AllocSize =
  201|  1.38M|        static_cast<unsigned>(sizeof(StringMapEntry)) + getKeyLength() + 1;
  202|  1.38M|    this->~StringMapEntry();
  203|  1.38M|    Allocator.Deallocate(static_cast<void *>(this), AllocSize);
  204|  1.38M|  }
_ZN7llvm_ks9StringMapINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEENS_15MallocAllocatorEEixES5_:
  298|  1.38M|  ValueTy &operator[](StringRef Key) {
  299|  1.38M|    return insert(std::make_pair(Key, ValueTy())).first->second;
  300|  1.38M|  }
_ZN7llvm_ks9StringMapINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEENS_15MallocAllocatorEE6insertENS2_IS5_S9_EE:
  330|  1.38M|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|  1.38M|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|  1.38M|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|  1.38M|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 0, False: 1.38M]
  |  Branch (333:19): [True: 0, False: 0]
  ------------------
  334|      0|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|      0|                            false); // Already exists in map.
  336|       |
  337|  1.38M|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 1.38M]
  ------------------
  338|      0|      --NumTombstones;
  339|  1.38M|    Bucket =
  340|  1.38M|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|  1.38M|    ++NumItems;
  342|  1.38M|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 1.38M, False: 0]
  ------------------
  343|       |
  344|  1.38M|    BucketNo = RehashTable(BucketNo);
  345|  1.38M|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|  1.38M|  }
_ZN7llvm_ks17StringMapIteratorINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEEC2EPPNS_18StringMapEntryBaseEb:
  452|  1.38M|    : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
  453|  1.38M|  }
_ZN7llvm_ks22StringMapConstIteratorINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEEC2EPPNS_18StringMapEntryBaseEb:
  412|  2.33M|  : Ptr(Bucket) {
  413|  2.33M|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (413:9): [True: 1.38M, False: 954k]
  ------------------
  414|  2.33M|  }
_ZN7llvm_ks22StringMapConstIteratorINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEE23AdvancePastEmptyBucketsEv:
  440|  1.38M|  void AdvancePastEmptyBuckets() {
  441|  1.38M|    while (*Ptr == nullptr || *Ptr == StringMapImpl::getTombstoneVal())
  ------------------
  |  Branch (441:12): [True: 0, False: 1.38M]
  |  Branch (441:31): [True: 0, False: 1.38M]
  ------------------
  442|      0|      ++Ptr;
  443|  1.38M|  }
_ZN7llvm_ks14StringMapEntryINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEE6CreateINS_15MallocAllocatorES9_EEPSA_S5_RT_OT0_:
  149|  1.38M|                                InitType &&InitVal) {
  150|  1.38M|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|  1.38M|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|  1.38M|      KeyLength+1;
  156|  1.38M|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|  1.38M|    StringMapEntry *NewItem =
  159|  1.38M|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|  1.38M|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|  1.38M|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|  1.38M|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 1.38M, False: 0]
  ------------------
  167|  1.38M|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|  1.38M|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|  1.38M|    return NewItem;
  170|  1.38M|  }
_ZN7llvm_ks14StringMapEntryINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEEC2IS9_EEjOT_:
  127|  1.38M|      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
_ZNK7llvm_ks14StringMapEntryINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEE10getKeyDataEv:
  141|  1.38M|  const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
_ZNK7llvm_ks17StringMapIteratorINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEEptEv:
  457|  1.38M|  StringMapEntry<ValueTy> *operator->() const {
  458|  1.38M|    return static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  459|  1.38M|  }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_19AsmParser13DirectiveKindENS_15MallocAllocatorEEixENS_9StringRefE:
  298|  2.55M|  ValueTy &operator[](StringRef Key) {
  299|  2.55M|    return insert(std::make_pair(Key, ValueTy())).first->second;
  300|  2.55M|  }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_19AsmParser13DirectiveKindENS_15MallocAllocatorEE6insertENSt3__14pairINS_9StringRefES3_EE:
  330|  2.55M|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|  2.55M|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|  2.55M|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|  2.55M|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 0, False: 2.55M]
  |  Branch (333:19): [True: 0, False: 0]
  ------------------
  334|      0|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|      0|                            false); // Already exists in map.
  336|       |
  337|  2.55M|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 2.55M]
  ------------------
  338|      0|      --NumTombstones;
  339|  2.55M|    Bucket =
  340|  2.55M|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|  2.55M|    ++NumItems;
  342|  2.55M|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 2.55M, False: 0]
  ------------------
  343|       |
  344|  2.55M|    BucketNo = RehashTable(BucketNo);
  345|  2.55M|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|  2.55M|  }
AsmParser.cpp:_ZN7llvm_ks17StringMapIteratorIN12_GLOBAL__N_19AsmParser13DirectiveKindEEC2EPPNS_18StringMapEntryBaseEb:
  452|  5.01M|    : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
  453|  5.01M|  }
AsmParser.cpp:_ZN7llvm_ks22StringMapConstIteratorIN12_GLOBAL__N_19AsmParser13DirectiveKindEEC2EPPNS_18StringMapEntryBaseEb:
  412|  5.01M|  : Ptr(Bucket) {
  413|  5.01M|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (413:9): [True: 2.55M, False: 2.45M]
  ------------------
  414|  5.01M|  }
AsmParser.cpp:_ZN7llvm_ks22StringMapConstIteratorIN12_GLOBAL__N_19AsmParser13DirectiveKindEE23AdvancePastEmptyBucketsEv:
  440|  2.55M|  void AdvancePastEmptyBuckets() {
  441|  2.55M|    while (*Ptr == nullptr || *Ptr == StringMapImpl::getTombstoneVal())
  ------------------
  |  Branch (441:12): [True: 0, False: 2.55M]
  |  Branch (441:31): [True: 0, False: 2.55M]
  ------------------
  442|      0|      ++Ptr;
  443|  2.55M|  }
AsmParser.cpp:_ZN7llvm_ks14StringMapEntryIN12_GLOBAL__N_19AsmParser13DirectiveKindEE6CreateINS_15MallocAllocatorES3_EEPS4_NS_9StringRefERT_OT0_:
  149|  2.55M|                                InitType &&InitVal) {
  150|  2.55M|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|  2.55M|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|  2.55M|      KeyLength+1;
  156|  2.55M|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|  2.55M|    StringMapEntry *NewItem =
  159|  2.55M|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|  2.55M|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|  2.55M|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|  2.55M|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 2.55M, False: 0]
  ------------------
  167|  2.55M|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|  2.55M|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|  2.55M|    return NewItem;
  170|  2.55M|  }
AsmParser.cpp:_ZN7llvm_ks14StringMapEntryIN12_GLOBAL__N_19AsmParser13DirectiveKindEEC2IS3_EEjOT_:
  127|  2.55M|      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
AsmParser.cpp:_ZNK7llvm_ks14StringMapEntryIN12_GLOBAL__N_19AsmParser13DirectiveKindEE10getKeyDataEv:
  141|  2.55M|  const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
AsmParser.cpp:_ZNK7llvm_ks17StringMapIteratorIN12_GLOBAL__N_19AsmParser13DirectiveKindEEptEv:
  457|  2.55M|  StringMapEntry<ValueTy> *operator->() const {
  458|  2.55M|    return static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  459|  2.55M|  }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_19AsmParser13DirectiveKindENS_15MallocAllocatorEE4findENS_9StringRefE:
  277|  1.22M|  iterator find(StringRef Key) {
  278|  1.22M|    int Bucket = FindKey(Key);
  279|  1.22M|    if (Bucket == -1) return end();
  ------------------
  |  Branch (279:9): [True: 730k, False: 499k]
  ------------------
  280|   499k|    return iterator(TheTable+Bucket, true);
  281|  1.22M|  }
AsmParser.cpp:_ZNK7llvm_ks22StringMapConstIteratorIN12_GLOBAL__N_19AsmParser13DirectiveKindEEeqERKS4_:
  423|  1.22M|  bool operator==(const StringMapConstIterator &RHS) const {
  424|  1.22M|    return Ptr == RHS.Ptr;
  425|  1.22M|  }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_19AsmParser13DirectiveKindENS_15MallocAllocatorEE3endEv:
  267|  1.95M|  iterator end() {
  268|  1.95M|    return iterator(TheTable+NumBuckets, true);
  269|  1.95M|  }
AsmParser.cpp:_ZNK7llvm_ks22StringMapConstIteratorIN12_GLOBAL__N_19AsmParser13DirectiveKindEEptEv:
  419|   499k|  const value_type *operator->() const {
  420|   499k|    return static_cast<StringMapEntry<ValueTy>*>(*Ptr);
  421|   499k|  }
AsmParser.cpp:_ZNK7llvm_ks14StringMapEntryIN12_GLOBAL__N_19AsmParser13DirectiveKindEE8getValueEv:
  133|   499k|  const ValueTy &getValue() const { return second; }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_110MCAsmMacroENS_15MallocAllocatorEE4findENS_9StringRefE:
  277|   689k|  iterator find(StringRef Key) {
  278|   689k|    int Bucket = FindKey(Key);
  279|   689k|    if (Bucket == -1) return end();
  ------------------
  |  Branch (279:9): [True: 636k, False: 53.1k]
  ------------------
  280|  53.1k|    return iterator(TheTable+Bucket, true);
  281|   689k|  }
AsmParser.cpp:_ZN7llvm_ks17StringMapIteratorIN12_GLOBAL__N_110MCAsmMacroEEC2EPPNS_18StringMapEntryBaseEb:
  452|  1.37M|    : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
  453|  1.37M|  }
AsmParser.cpp:_ZN7llvm_ks22StringMapConstIteratorIN12_GLOBAL__N_110MCAsmMacroEEC2EPPNS_18StringMapEntryBaseEb:
  412|  1.37M|  : Ptr(Bucket) {
  413|  1.37M|    if (!NoAdvance) AdvancePastEmptyBuckets();
  ------------------
  |  Branch (413:9): [True: 588, False: 1.37M]
  ------------------
  414|  1.37M|  }
AsmParser.cpp:_ZN7llvm_ks22StringMapConstIteratorIN12_GLOBAL__N_110MCAsmMacroEE23AdvancePastEmptyBucketsEv:
  440|    588|  void AdvancePastEmptyBuckets() {
  441|    588|    while (*Ptr == nullptr || *Ptr == StringMapImpl::getTombstoneVal())
  ------------------
  |  Branch (441:12): [True: 0, False: 588]
  |  Branch (441:31): [True: 0, False: 588]
  ------------------
  442|      0|      ++Ptr;
  443|    588|  }
AsmParser.cpp:_ZNK7llvm_ks22StringMapConstIteratorIN12_GLOBAL__N_110MCAsmMacroEEeqERKS3_:
  423|   689k|  bool operator==(const StringMapConstIterator &RHS) const {
  424|   689k|    return Ptr == RHS.Ptr;
  425|   689k|  }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_110MCAsmMacroENS_15MallocAllocatorEE3endEv:
  267|  1.32M|  iterator end() {
  268|  1.32M|    return iterator(TheTable+NumBuckets, true);
  269|  1.32M|  }
AsmParser.cpp:_ZNK7llvm_ks17StringMapIteratorIN12_GLOBAL__N_110MCAsmMacroEEptEv:
  457|  53.1k|  StringMapEntry<ValueTy> *operator->() const {
  458|  53.1k|    return static_cast<StringMapEntry<ValueTy>*>(*this->Ptr);
  459|  53.1k|  }
AsmParser.cpp:_ZN7llvm_ks14StringMapEntryIN12_GLOBAL__N_110MCAsmMacroEE8getValueEv:
  134|  53.1k|  ValueTy &getValue() { return second; }
_ZNK7llvm_ks9StringMapINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEENS_15MallocAllocatorEE6lookupES5_:
  291|   477k|  ValueTy lookup(StringRef Key) const {
  292|   477k|    const_iterator it = find(Key);
  293|   477k|    if (it != end())
  ------------------
  |  Branch (293:9): [True: 4.74k, False: 472k]
  ------------------
  294|  4.74k|      return it->second;
  295|   472k|    return ValueTy();
  296|   477k|  }
_ZNK7llvm_ks9StringMapINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEENS_15MallocAllocatorEE4findES5_:
  283|   477k|  const_iterator find(StringRef Key) const {
  284|   477k|    int Bucket = FindKey(Key);
  285|   477k|    if (Bucket == -1) return end();
  ------------------
  |  Branch (285:9): [True: 472k, False: 4.74k]
  ------------------
  286|  4.74k|    return const_iterator(TheTable+Bucket, true);
  287|   477k|  }
_ZNK7llvm_ks22StringMapConstIteratorINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEEneERKSA_:
  426|   477k|  bool operator!=(const StringMapConstIterator &RHS) const {
  427|   477k|    return Ptr != RHS.Ptr;
  428|   477k|  }
_ZNK7llvm_ks9StringMapINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEENS_15MallocAllocatorEE3endEv:
  273|   949k|  const_iterator end() const {
  274|   949k|    return const_iterator(TheTable+NumBuckets, true);
  275|   949k|  }
_ZNK7llvm_ks22StringMapConstIteratorINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS4_NS_9StringRefENS_5SMLocEEEEEptEv:
  419|  4.74k|  const value_type *operator->() const {
  420|  4.74k|    return static_cast<StringMapEntry<ValueTy>*>(*Ptr);
  421|  4.74k|  }
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_110MCAsmMacroENS_15MallocAllocatorEE6insertENSt3__14pairINS_9StringRefES2_EE:
  330|    588|  std::pair<iterator, bool> insert(std::pair<StringRef, ValueTy> KV) {
  331|    588|    unsigned BucketNo = LookupBucketFor(KV.first);
  332|    588|    StringMapEntryBase *&Bucket = TheTable[BucketNo];
  333|    588|    if (Bucket && Bucket != getTombstoneVal())
  ------------------
  |  Branch (333:9): [True: 0, False: 588]
  |  Branch (333:19): [True: 0, False: 0]
  ------------------
  334|      0|      return std::make_pair(iterator(TheTable + BucketNo, false),
  335|      0|                            false); // Already exists in map.
  336|       |
  337|    588|    if (Bucket == getTombstoneVal())
  ------------------
  |  Branch (337:9): [True: 0, False: 588]
  ------------------
  338|      0|      --NumTombstones;
  339|    588|    Bucket =
  340|    588|        MapEntryTy::Create(KV.first, Allocator, std::move(KV.second));
  341|    588|    ++NumItems;
  342|    588|    assert(NumItems + NumTombstones <= NumBuckets);
  ------------------
  |  Branch (342:5): [True: 588, False: 0]
  ------------------
  343|       |
  344|    588|    BucketNo = RehashTable(BucketNo);
  345|    588|    return std::make_pair(iterator(TheTable + BucketNo, false), true);
  346|    588|  }
AsmParser.cpp:_ZN7llvm_ks14StringMapEntryIN12_GLOBAL__N_110MCAsmMacroEE6CreateINS_15MallocAllocatorES2_EEPS3_NS_9StringRefERT_OT0_:
  149|    588|                                InitType &&InitVal) {
  150|    588|    unsigned KeyLength = Key.size();
  151|       |
  152|       |    // Allocate a new item with space for the string at the end and a null
  153|       |    // terminator.
  154|    588|    unsigned AllocSize = static_cast<unsigned>(sizeof(StringMapEntry))+
  155|    588|      KeyLength+1;
  156|    588|    unsigned Alignment = alignOf<StringMapEntry>();
  157|       |
  158|    588|    StringMapEntry *NewItem =
  159|    588|      static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
  160|       |
  161|       |    // Default construct the value.
  162|    588|    new (NewItem) StringMapEntry(KeyLength, std::forward<InitType>(InitVal));
  163|       |
  164|       |    // Copy the string information.
  165|    588|    char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
  166|    588|    if (KeyLength > 0)
  ------------------
  |  Branch (166:9): [True: 558, False: 30]
  ------------------
  167|    558|      memcpy(StrBuffer, Key.data(), KeyLength);
  168|    588|    StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
  169|    588|    return NewItem;
  170|    588|  }
AsmParser.cpp:_ZN7llvm_ks14StringMapEntryIN12_GLOBAL__N_110MCAsmMacroEEC2IS2_EEjOT_:
  127|    588|      : StringMapEntryBase(strLen), second(std::forward<InitTy>(V)) {}
AsmParser.cpp:_ZNK7llvm_ks14StringMapEntryIN12_GLOBAL__N_110MCAsmMacroEE10getKeyDataEv:
  141|    588|  const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
AsmParser.cpp:_ZN7llvm_ks9StringMapIN12_GLOBAL__N_19AsmParser13DirectiveKindENS_15MallocAllocatorEE5clearEv:
  349|  20.9k|  void clear() {
  350|  20.9k|    if (empty()) return;
  ------------------
  |  Branch (350:9): [True: 20.9k, False: 0]
  ------------------
  351|       |
  352|       |    // Zap all values, resetting the keys back to non-present (not tombstone),
  353|       |    // which is safe because we're removing all elements.
  354|      0|    for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (354:42): [True: 0, False: 0]
  ------------------
  355|      0|      StringMapEntryBase *&Bucket = TheTable[I];
  356|      0|      if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (356:11): [True: 0, False: 0]
  |  Branch (356:21): [True: 0, False: 0]
  ------------------
  357|      0|        static_cast<MapEntryTy*>(Bucket)->Destroy(Allocator);
  358|      0|      }
  359|      0|      Bucket = nullptr;
  360|      0|    }
  361|       |
  362|      0|    NumItems = 0;
  363|      0|    NumTombstones = 0;
  364|      0|  }
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEE4findENS_9StringRefE:
  277|  43.5k|  iterator find(StringRef Key) {
  278|  43.5k|    int Bucket = FindKey(Key);
  279|  43.5k|    if (Bucket == -1) return end();
  ------------------
  |  Branch (279:9): [True: 43.5k, False: 0]
  ------------------
  280|      0|    return iterator(TheTable+Bucket, true);
  281|  43.5k|  }
_ZNK7llvm_ks22StringMapConstIteratorIjEeqERKS1_:
  423|  43.5k|  bool operator==(const StringMapConstIterator &RHS) const {
  424|  43.5k|    return Ptr == RHS.Ptr;
  425|  43.5k|  }
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEE3endEv:
  267|  87.1k|  iterator end() {
  268|  87.1k|    return iterator(TheTable+NumBuckets, true);
  269|  87.1k|  }
_ZN7llvm_ks9StringMapIjNS_15MallocAllocatorEE5eraseENS_9StringRefE:
  378|    102|  bool erase(StringRef Key) {
  379|    102|    iterator I = find(Key);
  380|    102|    if (I == end()) return false;
  ------------------
  |  Branch (380:9): [True: 102, False: 0]
  ------------------
  381|      0|    erase(I);
  382|      0|    return true;
  383|    102|  }

_ZN7llvm_ks9StringRefC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
   91|  3.34M|      : Data(Str.data()), Length(Str.length()) {}
_ZN7llvm_ks9StringRefC2EPKc:
   72|  79.4M|      : Data(Str) {
   73|       |        //assert(Str && "StringRef cannot be built from a NULL argument");
   74|  79.4M|        if (!Str)
  ------------------
  |  Branch (74:13): [True: 5, False: 79.4M]
  ------------------
   75|      5|            Length = 0;
   76|  79.4M|        else 
   77|  79.4M|            Length = ::strlen(Str); // invoking strlen(NULL) is undefined behavior
   78|  79.4M|      }
_ZN7llvm_ks9StringRef13compareMemoryEPKcS2_m:
   58|  34.4M|    static int compareMemory(const char *Lhs, const char *Rhs, size_t Length) {
   59|  34.4M|      if (Length == 0) { return 0; }
  ------------------
  |  Branch (59:11): [True: 28.8k, False: 34.4M]
  ------------------
   60|  34.4M|      return ::memcmp(Lhs,Rhs,Length);
   61|  34.4M|    }
_ZN7llvm_ks9StringRefC2Ev:
   68|  6.20M|    /*implicit*/ StringRef() : Data(nullptr), Length(0) {}
_ZN7llvm_ks9StringRefC2EPKcm:
   83|   119M|      : Data(data), Length(length) {
   84|       |        assert((data || length == 0) &&
  ------------------
  |  Branch (84:9): [True: 119M, False: 0]
  |  Branch (84:9): [True: 0, False: 0]
  |  Branch (84:9): [True: 119M, Folded]
  |  Branch (84:9): [True: 119M, False: 0]
  ------------------
   85|   119M|        "StringRef cannot be built from a NULL argument with non-null length");
   86|   119M|      }
_ZNK7llvm_ks9StringRef5beginEv:
   97|  77.4M|    iterator begin() const { return Data; }
_ZNK7llvm_ks9StringRef3endEv:
   99|  90.5M|    iterator end() const { return Data + Length; }
_ZNK7llvm_ks9StringRef4dataEv:
  115|  69.0M|    const char *data() const { return Data; }
_ZNK7llvm_ks9StringRef5emptyEv:
  119|  53.1M|    bool empty() const { return Length == 0; }
_ZNK7llvm_ks9StringRef4sizeEv:
  123|  53.9M|    size_t size() const { return Length; }
_ZNK7llvm_ks9StringRef5frontEv:
  126|   885k|    char front() const {
  127|   885k|      assert(!empty());
  ------------------
  |  Branch (127:7): [True: 885k, False: 0]
  ------------------
  128|   885k|      return Data[0];
  129|   885k|    }
_ZNK7llvm_ks9StringRef6equalsES0_:
  147|  29.8M|    bool equals(StringRef RHS) const {
  148|  29.8M|      return (Length == RHS.Length &&
  ------------------
  |  Branch (148:15): [True: 5.70M, False: 24.1M]
  ------------------
  149|  5.70M|              compareMemory(Data, RHS.Data, RHS.Length) == 0);
  ------------------
  |  Branch (149:15): [True: 2.26M, False: 3.44M]
  ------------------
  150|  29.8M|    }
_ZNK7llvm_ks9StringRef12equals_lowerES0_:
  153|    253|    bool equals_lower(StringRef RHS) const {
  154|    253|      return Length == RHS.Length && compare_lower(RHS) == 0;
  ------------------
  |  Branch (154:14): [True: 104, False: 149]
  |  Branch (154:38): [True: 81, False: 23]
  ------------------
  155|    253|    }
_ZNK7llvm_ks9StringRef7compareES0_:
  160|  13.9M|    int compare(StringRef RHS) const {
  161|       |      // Check the prefix for a mismatch.
  162|  13.9M|      if (int Res = compareMemory(Data, RHS.Data, std::min(Length, RHS.Length)))
  ------------------
  |  Branch (162:15): [True: 11.4M, False: 2.53M]
  ------------------
  163|  11.4M|        return Res < 0 ? -1 : 1;
  ------------------
  |  Branch (163:16): [True: 1.50M, False: 9.91M]
  ------------------
  164|       |
  165|       |      // Otherwise the prefixes match, so we only need to check the lengths.
  166|  2.53M|      if (Length == RHS.Length)
  ------------------
  |  Branch (166:11): [True: 490k, False: 2.04M]
  ------------------
  167|   490k|        return 0;
  168|  2.04M|      return Length < RHS.Length ? -1 : 1;
  ------------------
  |  Branch (168:14): [True: 152k, False: 1.89M]
  ------------------
  169|  2.53M|    }
_ZNK7llvm_ks9StringRef3strEv:
  200|  1.58M|    std::string str() const {
  201|  1.58M|      if (!Data) return std::string();
  ------------------
  |  Branch (201:11): [True: 0, False: 1.58M]
  ------------------
  202|  1.58M|      return std::string(Data, Length);
  203|  1.58M|    }
_ZNK7llvm_ks9StringRefixEm:
  209|   104M|    char operator[](size_t Index) const {
  210|   104M|      assert(Index < Length && "Invalid index!");
  ------------------
  |  Branch (210:7): [True: 104M, False: 0]
  |  Branch (210:7): [True: 104M, Folded]
  |  Branch (210:7): [True: 104M, False: 0]
  ------------------
  211|   104M|      return Data[Index];
  212|   104M|    }
_ZNK7llvm_ks9StringRefcvNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEv:
  218|  1.35M|    operator std::string() const {
  219|  1.35M|      return str();
  220|  1.35M|    }
_ZNK7llvm_ks9StringRef10startswithES0_:
  228|  6.90M|    bool startswith(StringRef Prefix) const {
  229|  6.90M|      return Length >= Prefix.Length &&
  ------------------
  |  Branch (229:14): [True: 1.95M, False: 4.95M]
  ------------------
  230|  1.95M|             compareMemory(Data, Prefix.Data, Prefix.Length) == 0;
  ------------------
  |  Branch (230:14): [True: 897k, False: 1.05M]
  ------------------
  231|  6.90M|    }
_ZNK7llvm_ks9StringRef8endswithES0_:
  238|  13.2M|    bool endswith(StringRef Suffix) const {
  239|  13.2M|      return Length >= Suffix.Length &&
  ------------------
  |  Branch (239:14): [True: 12.8M, False: 426k]
  ------------------
  240|  12.8M|        compareMemory(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0;
  ------------------
  |  Branch (240:9): [True: 682k, False: 12.1M]
  ------------------
  241|  13.2M|    }
_ZNK7llvm_ks9StringRef4findEcm:
  255|   457k|    size_t find(char C, size_t From = 0) const {
  256|   457k|      size_t FindBegin = std::min(From, Length);
  257|   457k|      if (FindBegin < Length) { // Avoid calling memchr with nullptr.
  ------------------
  |  Branch (257:11): [True: 455k, False: 2.45k]
  ------------------
  258|       |        // Just forward to memchr, which is faster than a hand-rolled loop.
  259|   455k|        if (const void *P = ::memchr(Data + FindBegin, C, Length - FindBegin))
  ------------------
  |  Branch (259:25): [True: 57.4k, False: 397k]
  ------------------
  260|  57.4k|          return static_cast<const char *>(P) - Data;
  261|   455k|      }
  262|   400k|      return npos;
  263|   457k|    }
_ZNK7llvm_ks9StringRef6substrEmm:
  421|  3.24M|    StringRef substr(size_t Start, size_t N = npos) const {
  422|  3.24M|      Start = std::min(Start, Length);
  423|  3.24M|      return StringRef(Data + Start, std::min(N, Length - Start));
  424|  3.24M|    }
_ZNK7llvm_ks9StringRef10drop_frontEm:
  429|   116k|    StringRef drop_front(size_t N = 1) const {
  430|   116k|      assert(size() >= N && "Dropping more elements than exist");
  ------------------
  |  Branch (430:7): [True: 116k, False: 0]
  |  Branch (430:7): [True: 116k, Folded]
  |  Branch (430:7): [True: 116k, False: 0]
  ------------------
  431|   116k|      return substr(N);
  432|   116k|    }
_ZNK7llvm_ks9StringRef9drop_backEm:
  437|   116k|    StringRef drop_back(size_t N = 1) const {
  438|   116k|      assert(size() >= N && "Dropping more elements than exist");
  ------------------
  |  Branch (438:7): [True: 116k, False: 0]
  |  Branch (438:7): [True: 116k, Folded]
  |  Branch (438:7): [True: 116k, False: 0]
  ------------------
  439|   116k|      return substr(0, size()-N);
  440|   116k|    }
_ZNK7llvm_ks9StringRef5sliceEmm:
  453|  4.41M|    StringRef slice(size_t Start, size_t End) const {
  454|  4.41M|      Start = std::min(Start, Length);
  455|  4.41M|      End = std::min(std::max(Start, End), Length);
  456|  4.41M|      return StringRef(Data + Start, End - Start);
  457|  4.41M|    }
_ZNK7llvm_ks9StringRef5splitEc:
  469|  71.0k|    std::pair<StringRef, StringRef> split(char Separator) const {
  470|  71.0k|      size_t Idx = find(Separator);
  471|  71.0k|      if (Idx == npos)
  ------------------
  |  Branch (471:11): [True: 71.0k, False: 0]
  ------------------
  472|  71.0k|        return std::make_pair(*this, StringRef());
  473|      0|      return std::make_pair(slice(0, Idx), slice(Idx+1, npos));
  474|  71.0k|    }
_ZNK7llvm_ks9StringRef5ltrimES0_:
  547|   116k|    StringRef ltrim(StringRef Chars = " \t\n\v\f\r") const {
  548|   116k|      return drop_front(std::min(Length, find_first_not_of(Chars)));
  549|   116k|    }
_ZNK7llvm_ks9StringRef5rtrimES0_:
  553|   116k|    StringRef rtrim(StringRef Chars = " \t\n\v\f\r") const {
  554|   116k|      return drop_back(Length - std::min(Length, find_last_not_of(Chars) + 1));
  555|   116k|    }
_ZNK7llvm_ks9StringRef4trimES0_:
  559|   116k|    StringRef trim(StringRef Chars = " \t\n\v\f\r") const {
  560|   116k|      return ltrim(Chars).rtrim(Chars);
  561|   116k|    }
_ZN7llvm_kseqENS_9StringRefES0_:
  579|  29.2M|  inline bool operator==(StringRef LHS, StringRef RHS) {
  580|  29.2M|    return LHS.equals(RHS);
  581|  29.2M|  }
_ZN7llvm_ksneENS_9StringRefES0_:
  584|  1.85M|  inline bool operator!=(StringRef LHS, StringRef RHS) {
  585|  1.85M|    return !(LHS == RHS);
  586|  1.85M|  }
_ZN7llvm_ksltENS_9StringRefES0_:
  588|  13.9M|  inline bool operator<(StringRef LHS, StringRef RHS) {
  589|  13.9M|    return LHS.compare(RHS) == -1;
  590|  13.9M|  }
_ZN7llvm_kspLERNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEENS_9StringRefE:
  604|  21.1k|  inline std::string &operator+=(std::string &buffer, StringRef string) {
  605|  21.1k|    return buffer.append(string.data(), string.size());
  606|  21.1k|  }

_ZNK7llvm_ks12StringSwitchIiiE7DefaultERKi:
  150|     58|  R Default(const T& Value) const {
  151|     58|    if (Result)
  ------------------
  |  Branch (151:9): [True: 49, False: 9]
  ------------------
  152|     49|      return *Result;
  153|       |
  154|      9|    return Value;
  155|     58|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_EC2ENS_9StringRefE:
   54|  3.08k|  : Str(S), Result(nullptr) { }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj4EEERS3_RAT__KcRKS2_:
   58|  12.3k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  12.3k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 11.5k, False: 844]
  |  Branch (59:20): [True: 206, False: 11.2k]
  ------------------
   60|    206|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 65, False: 141]
  ------------------
   61|     65|      Result = &Value;
   62|     65|    }
   63|       |
   64|  12.3k|    return *this;
   65|  12.3k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj7EEERS3_RAT__KcRKS2_:
   58|  37.0k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  37.0k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 31.4k, False: 5.62k]
  |  Branch (59:20): [True: 698, False: 30.7k]
  ------------------
   60|    698|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 29, False: 669]
  ------------------
   61|     29|      Result = &Value;
   62|     29|    }
   63|       |
   64|  37.0k|    return *this;
   65|  37.0k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj9EEERS3_RAT__KcRKS2_:
   58|  27.7k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  27.7k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 24.1k, False: 3.60k]
  |  Branch (59:20): [True: 224, False: 23.9k]
  ------------------
   60|    224|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 13, False: 211]
  ------------------
   61|     13|      Result = &Value;
   62|     13|    }
   63|       |
   64|  27.7k|    return *this;
   65|  27.7k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj10EEERS3_RAT__KcRKS2_:
   58|  18.5k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  18.5k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 16.7k, False: 1.71k]
  |  Branch (59:20): [True: 258, False: 16.5k]
  ------------------
   60|    258|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 258]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  18.5k|    return *this;
   65|  18.5k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj6EEERS3_RAT__KcRKS2_:
   58|  49.3k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  49.3k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 42.4k, False: 6.91k]
  |  Branch (59:20): [True: 15.5k, False: 26.9k]
  ------------------
   60|  15.5k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 1.12k, False: 14.4k]
  ------------------
   61|  1.12k|      Result = &Value;
   62|  1.12k|    }
   63|       |
   64|  49.3k|    return *this;
   65|  49.3k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj5EEERS3_RAT__KcRKS2_:
   58|  12.3k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  12.3k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 10.1k, False: 2.14k]
  |  Branch (59:20): [True: 450, False: 9.74k]
  ------------------
   60|    450|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 111, False: 339]
  ------------------
   61|    111|      Result = &Value;
   62|    111|    }
   63|       |
   64|  12.3k|    return *this;
   65|  12.3k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj12EEERS3_RAT__KcRKS2_:
   58|  21.6k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  21.6k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 18.8k, False: 2.73k]
  |  Branch (59:20): [True: 119, False: 18.7k]
  ------------------
   60|    119|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 119]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  21.6k|    return *this;
   65|  21.6k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj8EEERS3_RAT__KcRKS2_:
   58|  33.9k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  33.9k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 25.5k, False: 8.39k]
  |  Branch (59:20): [True: 7.42k, False: 18.1k]
  ------------------
   60|  7.42k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 34, False: 7.38k]
  ------------------
   61|     34|      Result = &Value;
   62|     34|    }
   63|       |
   64|  33.9k|    return *this;
   65|  33.9k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj11EEERS3_RAT__KcRKS2_:
   58|  6.17k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  6.17k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 5.43k, False: 738]
  |  Branch (59:20): [True: 40, False: 5.39k]
  ------------------
   60|     40|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 40]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  6.17k|    return *this;
   65|  6.17k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj2EEERS3_RAT__KcRKS2_:
   58|  6.17k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  6.17k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 5.50k, False: 672]
  |  Branch (59:20): [True: 580, False: 4.92k]
  ------------------
   60|    580|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 45, False: 535]
  ------------------
   61|     45|      Result = &Value;
   62|     45|    }
   63|       |
   64|  6.17k|    return *this;
   65|  6.17k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj3EEERS3_RAT__KcRKS2_:
   58|  6.17k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  6.17k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 5.36k, False: 803]
  |  Branch (59:20): [True: 769, False: 4.60k]
  ------------------
   60|    769|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 23, False: 746]
  ------------------
   61|     23|      Result = &Value;
   62|     23|    }
   63|       |
   64|  6.17k|    return *this;
   65|  6.17k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj13EEERS3_RAT__KcRKS2_:
   58|  18.5k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  18.5k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 15.9k, False: 2.53k]
  |  Branch (59:20): [True: 72, False: 15.9k]
  ------------------
   60|     72|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 72]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  18.5k|    return *this;
   65|  18.5k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj14EEERS3_RAT__KcRKS2_:
   58|  12.3k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  12.3k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 10.6k, False: 1.68k]
  |  Branch (59:20): [True: 60, False: 10.5k]
  ------------------
   60|     60|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 60]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  12.3k|    return *this;
   65|  12.3k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj15EEERS3_RAT__KcRKS2_:
   58|  9.25k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  9.25k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 7.99k, False: 1.26k]
  |  Branch (59:20): [True: 33, False: 7.95k]
  ------------------
   60|     33|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 33]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  9.25k|    return *this;
   65|  9.25k|  }
_ZN7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E4CaseILj16EEERS3_RAT__KcRKS2_:
   58|  3.08k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  3.08k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 2.66k, False: 422]
  |  Branch (59:20): [True: 14, False: 2.65k]
  ------------------
   60|     14|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 14]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  3.08k|    return *this;
   65|  3.08k|  }
_ZNK7llvm_ks12StringSwitchINS_15MCSymbolRefExpr11VariantKindES2_E7DefaultERKS2_:
  150|  3.08k|  R Default(const T& Value) const {
  151|  3.08k|    if (Result)
  ------------------
  |  Branch (151:9): [True: 1.44k, False: 1.63k]
  ------------------
  152|  1.44k|      return *Result;
  153|       |
  154|  1.63k|    return Value;
  155|  3.08k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_EC2ES1_:
   54|   715k|  : Str(S), Result(nullptr) { }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj14EEERS2_RAT__KcRKS1_:
   58|  2.94k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  2.94k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 2.94k, False: 5]
  |  Branch (59:20): [True: 126, False: 2.81k]
  ------------------
   60|    126|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 126]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  2.94k|    return *this;
   65|  2.94k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj13EEERS2_RAT__KcRKS1_:
   58|  1.47k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.47k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.47k, False: 0]
  |  Branch (59:20): [True: 47, False: 1.42k]
  ------------------
   60|     47|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 5, False: 42]
  ------------------
   61|      5|      Result = &Value;
   62|      5|    }
   63|       |
   64|  1.47k|    return *this;
   65|  1.47k|  }
_ZNK7llvm_ks12StringSwitchINS_9StringRefES1_E7DefaultERKS1_:
  150|   715k|  R Default(const T& Value) const {
  151|   715k|    if (Result)
  ------------------
  |  Branch (151:9): [True: 658k, False: 56.6k]
  ------------------
  152|   658k|      return *Result;
  153|       |
  154|  56.6k|    return Value;
  155|   715k|  }
_ZN7llvm_ks12StringSwitchIiiEC2ENS_9StringRefE:
   54|     58|  : Str(S), Result(nullptr) { }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj5ELj5ELj5ELj5EEERS3_RAT__KcRAT0__S6_RAT1__S6_RAT2__S6_RKS2_:
  120|   209k|                      const T& Value) {
  121|   209k|    if (!Result && (
  ------------------
  |  Branch (121:9): [True: 209k, False: 0]
  ------------------
  122|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (122:10): [True: 0, False: 209k]
  |  Branch (122:32): [True: 0, False: 0]
  ------------------
  123|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (123:10): [True: 0, False: 209k]
  |  Branch (123:32): [True: 0, False: 0]
  ------------------
  124|   209k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0) ||
  ------------------
  |  Branch (124:10): [True: 0, False: 209k]
  |  Branch (124:32): [True: 0, False: 0]
  ------------------
  125|   209k|        (N3-1 == Str.size() && std::memcmp(S3, Str.data(), N3-1) == 0))) {
  ------------------
  |  Branch (125:10): [True: 0, False: 209k]
  |  Branch (125:32): [True: 0, False: 0]
  ------------------
  126|      0|      Result = &Value;
  127|      0|    }
  128|       |
  129|   209k|    return *this;
  130|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj5ELj5ELj5EEERS3_RAT__KcRAT0__S6_RAT1__S6_RKS2_:
  105|   209k|                      const char (&S2)[N2], const T& Value) {
  106|   209k|    if (!Result && (
  ------------------
  |  Branch (106:9): [True: 209k, False: 0]
  ------------------
  107|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (107:10): [True: 0, False: 209k]
  |  Branch (107:32): [True: 0, False: 0]
  ------------------
  108|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (108:10): [True: 0, False: 209k]
  |  Branch (108:32): [True: 0, False: 0]
  ------------------
  109|   209k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0))) {
  ------------------
  |  Branch (109:10): [True: 0, False: 209k]
  |  Branch (109:32): [True: 0, False: 0]
  ------------------
  110|      0|      Result = &Value;
  111|      0|    }
  112|       |
  113|   209k|    return *this;
  114|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj6ELj7ELj8EEERS3_RAT__KcRAT0__S6_RAT1__S6_RKS2_:
  105|   209k|                      const char (&S2)[N2], const T& Value) {
  106|   209k|    if (!Result && (
  ------------------
  |  Branch (106:9): [True: 209k, False: 0]
  ------------------
  107|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (107:10): [True: 209k, False: 0]
  |  Branch (107:32): [True: 0, False: 209k]
  ------------------
  108|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (108:10): [True: 0, False: 209k]
  |  Branch (108:32): [True: 0, False: 0]
  ------------------
  109|   209k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0))) {
  ------------------
  |  Branch (109:10): [True: 0, False: 209k]
  |  Branch (109:32): [True: 0, False: 0]
  ------------------
  110|      0|      Result = &Value;
  111|      0|    }
  112|       |
  113|   209k|    return *this;
  114|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj8ELj6EEERS3_RAT__KcRAT0__S6_RKS2_:
   92|   209k|                      const T& Value) {
   93|   209k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 209k, False: 0]
  ------------------
   94|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 0, False: 209k]
  |  Branch (94:32): [True: 0, False: 0]
  ------------------
   95|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 209k, False: 0]
  |  Branch (95:32): [True: 0, False: 209k]
  ------------------
   96|      0|      Result = &Value;
   97|      0|    }
   98|       |
   99|   209k|    return *this;
  100|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj10ELj4ELj6EEERS3_RAT__KcRAT0__S6_RAT1__S6_RKS2_:
  105|   209k|                      const char (&S2)[N2], const T& Value) {
  106|   209k|    if (!Result && (
  ------------------
  |  Branch (106:9): [True: 209k, False: 0]
  ------------------
  107|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (107:10): [True: 0, False: 209k]
  |  Branch (107:32): [True: 0, False: 0]
  ------------------
  108|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (108:10): [True: 0, False: 209k]
  |  Branch (108:32): [True: 0, False: 0]
  ------------------
  109|   209k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0))) {
  ------------------
  |  Branch (109:10): [True: 209k, False: 0]
  |  Branch (109:32): [True: 0, False: 209k]
  ------------------
  110|      0|      Result = &Value;
  111|      0|    }
  112|       |
  113|   209k|    return *this;
  114|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj12ELj8EEERS3_RAT__KcRAT0__S6_RKS2_:
   92|   209k|                      const T& Value) {
   93|   209k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 209k, False: 0]
  ------------------
   94|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 0, False: 209k]
  |  Branch (94:32): [True: 0, False: 0]
  ------------------
   95|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 0, False: 209k]
  |  Branch (95:32): [True: 0, False: 0]
  ------------------
   96|      0|      Result = &Value;
   97|      0|    }
   98|       |
   99|   209k|    return *this;
  100|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj5ELj7ELj13EEERS3_RAT__KcRAT0__S6_RAT1__S6_RKS2_:
  105|   209k|                      const char (&S2)[N2], const T& Value) {
  106|   209k|    if (!Result && (
  ------------------
  |  Branch (106:9): [True: 209k, False: 0]
  ------------------
  107|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (107:10): [True: 0, False: 209k]
  |  Branch (107:32): [True: 0, False: 0]
  ------------------
  108|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (108:10): [True: 0, False: 209k]
  |  Branch (108:32): [True: 0, False: 0]
  ------------------
  109|   209k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0))) {
  ------------------
  |  Branch (109:10): [True: 0, False: 209k]
  |  Branch (109:32): [True: 0, False: 0]
  ------------------
  110|      0|      Result = &Value;
  111|      0|    }
  112|       |
  113|   209k|    return *this;
  114|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj7ELj15EEERS3_RAT__KcRAT0__S6_RKS2_:
   92|   209k|                      const T& Value) {
   93|   209k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 209k, False: 0]
  ------------------
   94|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 0, False: 209k]
  |  Branch (94:32): [True: 0, False: 0]
  ------------------
   95|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 0, False: 209k]
  |  Branch (95:32): [True: 0, False: 0]
  ------------------
   96|      0|      Result = &Value;
   97|      0|    }
   98|       |
   99|   209k|    return *this;
  100|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj7ELj9EEERS3_RAT__KcRAT0__S6_RKS2_:
   92|   209k|                      const T& Value) {
   93|   209k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 209k, False: 0]
  ------------------
   94|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 0, False: 209k]
  |  Branch (94:32): [True: 0, False: 0]
  ------------------
   95|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 0, False: 209k]
  |  Branch (95:32): [True: 0, False: 0]
  ------------------
   96|      0|      Result = &Value;
   97|      0|    }
   98|       |
   99|   209k|    return *this;
  100|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj6ELj8EEERS3_RAT__KcRAT0__S6_RKS2_:
   92|   209k|                      const T& Value) {
   93|   209k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 209k, False: 0]
  ------------------
   94|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 209k, False: 0]
  |  Branch (94:32): [True: 0, False: 209k]
  ------------------
   95|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 0, False: 209k]
  |  Branch (95:32): [True: 0, False: 0]
  ------------------
   96|      0|      Result = &Value;
   97|      0|    }
   98|       |
   99|   209k|    return *this;
  100|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E5CasesILj8ELj8EEERS3_RAT__KcRAT0__S6_RKS2_:
   92|   209k|                      const T& Value) {
   93|   209k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 209k, False: 0]
  ------------------
   94|   209k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 0, False: 209k]
  |  Branch (94:32): [True: 0, False: 0]
  ------------------
   95|   209k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 0, False: 209k]
  |  Branch (95:32): [True: 0, False: 0]
  ------------------
   96|      0|      Result = &Value;
   97|      0|    }
   98|       |
   99|   209k|    return *this;
  100|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E10StartsWithILj8EEERS3_RAT__KcRKS2_:
   80|   209k|  StringSwitch& StartsWith(const char (&S)[N], const T &Value) {
   81|   209k|    if (!Result && Str.size() >= N-1 &&
  ------------------
  |  Branch (81:9): [True: 209k, False: 0]
  |  Branch (81:20): [True: 0, False: 209k]
  ------------------
   82|      0|        std::memcmp(S, Str.data(), N-1) == 0) {
  ------------------
  |  Branch (82:9): [True: 0, False: 0]
  ------------------
   83|      0|      Result = &Value;
   84|      0|    }
   85|       |
   86|   209k|    return *this;
   87|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_EC2ENS_9StringRefE:
   54|   209k|  : Str(S), Result(nullptr) { }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E4CaseILj8EEERS3_RAT__KcRKS2_:
   58|  1.88M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.88M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.88M, False: 0]
  |  Branch (59:20): [True: 0, False: 1.88M]
  ------------------
   60|      0|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 0]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  1.88M|    return *this;
   65|  1.88M|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E4CaseILj11EEERS3_RAT__KcRKS2_:
   58|   209k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|   209k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 209k, False: 0]
  |  Branch (59:20): [True: 0, False: 209k]
  ------------------
   60|      0|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 0]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|   209k|    return *this;
   65|   209k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E4CaseILj6EEERS3_RAT__KcRKS2_:
   58|  1.88M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.88M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.88M, False: 0]
  |  Branch (59:20): [True: 1.88M, False: 0]
  ------------------
   60|  1.88M|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 1.88M]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  1.88M|    return *this;
   65|  1.88M|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E4CaseILj4EEERS3_RAT__KcRKS2_:
   58|   629k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|   629k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 629k, False: 0]
  |  Branch (59:20): [True: 0, False: 629k]
  ------------------
   60|      0|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 0]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|   629k|    return *this;
   65|   629k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E4CaseILj5EEERS3_RAT__KcRKS2_:
   58|   838k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|   838k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 838k, False: 0]
  |  Branch (59:20): [True: 0, False: 838k]
  ------------------
   60|      0|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 0]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|   838k|    return *this;
   65|   838k|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E4CaseILj7EEERS3_RAT__KcRKS2_:
   58|  1.25M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.25M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.25M, False: 0]
  |  Branch (59:20): [True: 0, False: 1.25M]
  ------------------
   60|      0|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 0]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  1.25M|    return *this;
   65|  1.25M|  }
_ZN7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E4CaseILj9EEERS3_RAT__KcRKS2_:
   58|   419k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|   419k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 419k, False: 0]
  |  Branch (59:20): [True: 0, False: 419k]
  ------------------
   60|      0|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 0]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|   419k|    return *this;
   65|   419k|  }
_ZNK7llvm_ks12StringSwitchINS_6Triple8ArchTypeES2_E7DefaultERKS2_:
  150|   209k|  R Default(const T& Value) const {
  151|   209k|    if (Result)
  ------------------
  |  Branch (151:9): [True: 0, False: 209k]
  ------------------
  152|      0|      return *Result;
  153|       |
  154|   209k|    return Value;
  155|   209k|  }
_ZN7llvm_ks12StringSwitchIjjEC2ENS_9StringRefE:
   54|   326k|  : Str(S), Result(nullptr) { }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj3EEERS1_RAT__KcRKj:
   58|  1.88M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.88M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.66M, False: 212k]
  |  Branch (59:20): [True: 986k, False: 682k]
  ------------------
   60|   986k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 21.7k, False: 964k]
  ------------------
   61|  21.7k|      Result = &Value;
   62|  21.7k|    }
   63|       |
   64|  1.88M|    return *this;
   65|  1.88M|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj4EEERS1_RAT__KcRKj:
   58|   196k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|   196k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 193k, False: 3.20k]
  |  Branch (59:20): [True: 32.3k, False: 160k]
  ------------------
   60|  32.3k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 1.92k, False: 30.4k]
  ------------------
   61|  1.92k|      Result = &Value;
   62|  1.92k|    }
   63|       |
   64|   196k|    return *this;
   65|   196k|  }
_ZNK7llvm_ks12StringSwitchIjjE7DefaultERKj:
  150|   326k|  R Default(const T& Value) const {
  151|   326k|    if (Result)
  ------------------
  |  Branch (151:9): [True: 233k, False: 92.9k]
  ------------------
  152|   233k|      return *Result;
  153|       |
  154|  92.9k|    return Value;
  155|   326k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj4EEERS2_RAT__KcRKS1_:
   58|  2.81M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  2.81M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.50M, False: 1.31M]
  |  Branch (59:20): [True: 7.08k, False: 1.49M]
  ------------------
   60|  7.08k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 930, False: 6.15k]
  ------------------
   61|    930|      Result = &Value;
   62|    930|    }
   63|       |
   64|  2.81M|    return *this;
   65|  2.81M|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj7EEERS1_RAT__KcRKj:
   58|  2.85k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  2.85k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 2.45k, False: 395]
  |  Branch (59:20): [True: 296, False: 2.16k]
  ------------------
   60|    296|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 22, False: 274]
  ------------------
   61|     22|      Result = &Value;
   62|     22|    }
   63|       |
   64|  2.85k|    return *this;
   65|  2.85k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj8EEERS1_RAT__KcRKj:
   58|  1.95k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.95k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.67k, False: 277]
  |  Branch (59:20): [True: 65, False: 1.60k]
  ------------------
   60|     65|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 3, False: 62]
  ------------------
   61|      3|      Result = &Value;
   62|      3|    }
   63|       |
   64|  1.95k|    return *this;
   65|  1.95k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj9EEERS1_RAT__KcRKj:
   58|    266|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|    266|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 266, False: 0]
  |  Branch (59:20): [True: 63, False: 203]
  ------------------
   60|     63|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 63]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|    266|    return *this;
   65|    266|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj5EEERS1_RAT__KcRKj:
   58|  5.34k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  5.34k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 4.46k, False: 878]
  |  Branch (59:20): [True: 1.21k, False: 3.25k]
  ------------------
   60|  1.21k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 26, False: 1.18k]
  ------------------
   61|     26|      Result = &Value;
   62|     26|    }
   63|       |
   64|  5.34k|    return *this;
   65|  5.34k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj11EEERS1_RAT__KcRKj:
   58|  1.68k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.68k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.40k, False: 280]
  |  Branch (59:20): [True: 71, False: 1.33k]
  ------------------
   60|     71|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 13, False: 58]
  ------------------
   61|     13|      Result = &Value;
   62|     13|    }
   63|       |
   64|  1.68k|    return *this;
   65|  1.68k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj12EEERS1_RAT__KcRKj:
   58|  1.68k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.68k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.46k, False: 217]
  |  Branch (59:20): [True: 35, False: 1.43k]
  ------------------
   60|     35|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 8, False: 27]
  ------------------
   61|      8|      Result = &Value;
   62|      8|    }
   63|       |
   64|  1.68k|    return *this;
   65|  1.68k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj6EEERS1_RAT__KcRKj:
   58|  13.4k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  13.4k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 10.4k, False: 2.99k]
  |  Branch (59:20): [True: 483, False: 9.95k]
  ------------------
   60|    483|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 44, False: 439]
  ------------------
   61|     44|      Result = &Value;
   62|     44|    }
   63|       |
   64|  13.4k|    return *this;
   65|  13.4k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj13EEERS1_RAT__KcRKj:
   58|  1.01k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.01k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 873, False: 138]
  |  Branch (59:20): [True: 14, False: 859]
  ------------------
   60|     14|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 4, False: 10]
  ------------------
   61|      4|      Result = &Value;
   62|      4|    }
   63|       |
   64|  1.01k|    return *this;
   65|  1.01k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj10EEERS1_RAT__KcRKj:
   58|  1.01k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.01k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 790, False: 221]
  |  Branch (59:20): [True: 21, False: 769]
  ------------------
   60|     21|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 21]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|  1.01k|    return *this;
   65|  1.01k|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj15EEERS1_RAT__KcRKj:
   58|    337|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|    337|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 260, False: 77]
  |  Branch (59:20): [True: 3, False: 257]
  ------------------
   60|      3|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 3]
  ------------------
   61|      0|      Result = &Value;
   62|      0|    }
   63|       |
   64|    337|    return *this;
   65|    337|  }
_ZN7llvm_ks12StringSwitchIjjE4CaseILj2EEERS1_RAT__KcRKj:
   58|  2.14k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  2.14k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 1.68k, False: 463]
  |  Branch (59:20): [True: 1.61k, False: 68]
  ------------------
   60|  1.61k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 363, False: 1.25k]
  ------------------
   61|    363|      Result = &Value;
   62|    363|    }
   63|       |
   64|  2.14k|    return *this;
   65|  2.14k|  }
_ZN7llvm_ks12StringSwitchIiiE4CaseILj3EEERS1_RAT__KcRKi:
   58|    116|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|    116|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 72, False: 44]
  |  Branch (59:20): [True: 62, False: 10]
  ------------------
   60|     62|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 49, False: 13]
  ------------------
   61|     49|      Result = &Value;
   62|     49|    }
   63|       |
   64|    116|    return *this;
   65|    116|  }
_ZN7llvm_ks12StringSwitchINS_6ARM_AM8ShiftOpcES2_EC2ENS_9StringRefE:
   54|  27.9k|  : Str(S), Result(nullptr) { }
_ZN7llvm_ks12StringSwitchINS_6ARM_AM8ShiftOpcES2_E4CaseILj4EEERS3_RAT__KcRKS2_:
   58|   167k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|   167k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 166k, False: 1.04k]
  |  Branch (59:20): [True: 27.7k, False: 138k]
  ------------------
   60|  27.7k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 475, False: 27.3k]
  ------------------
   61|    475|      Result = &Value;
   62|    475|    }
   63|       |
   64|   167k|    return *this;
   65|   167k|  }
_ZNK7llvm_ks12StringSwitchINS_6ARM_AM8ShiftOpcES2_E7DefaultERKS2_:
  150|  27.9k|  R Default(const T& Value) const {
  151|  27.9k|    if (Result)
  ------------------
  |  Branch (151:9): [True: 475, False: 27.4k]
  ------------------
  152|    475|      return *Result;
  153|       |
  154|  27.4k|    return Value;
  155|  27.9k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj3EEERS2_RAT__KcRKS1_:
   58|   704k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|   704k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 704k, False: 0]
  |  Branch (59:20): [True: 656k, False: 47.3k]
  ------------------
   60|   656k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 738, False: 655k]
  ------------------
   61|    738|      Result = &Value;
   62|    738|    }
   63|       |
   64|   704k|    return *this;
   65|   704k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj6EEERS2_RAT__KcRKS1_:
   58|  1.40M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.40M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 93.0k, False: 1.31M]
  |  Branch (59:20): [True: 10.4k, False: 82.5k]
  ------------------
   60|  10.4k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 682, False: 9.77k]
  ------------------
   61|    682|      Result = &Value;
   62|    682|    }
   63|       |
   64|  1.40M|    return *this;
   65|  1.40M|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj9EEERS2_RAT__KcRKS1_:
   58|  1.42M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.42M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 111k, False: 1.31M]
  |  Branch (59:20): [True: 7.77k, False: 103k]
  ------------------
   60|  7.77k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 244, False: 7.53k]
  ------------------
   61|    244|      Result = &Value;
   62|    244|    }
   63|       |
   64|  1.42M|    return *this;
   65|  1.42M|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E5CasesILj4ELj5ELj5ELj9EEERS2_RAT__KcRAT0__S5_RAT1__S5_RAT2__S5_RKS1_:
  120|  9.89k|                      const T& Value) {
  121|  9.89k|    if (!Result && (
  ------------------
  |  Branch (121:9): [True: 9.89k, False: 0]
  ------------------
  122|  9.89k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (122:10): [True: 863, False: 9.03k]
  |  Branch (122:32): [True: 10, False: 853]
  ------------------
  123|  9.88k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (123:10): [True: 480, False: 9.40k]
  |  Branch (123:32): [True: 57, False: 423]
  ------------------
  124|  9.82k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0) ||
  ------------------
  |  Branch (124:10): [True: 423, False: 9.40k]
  |  Branch (124:32): [True: 16, False: 407]
  ------------------
  125|  9.81k|        (N3-1 == Str.size() && std::memcmp(S3, Str.data(), N3-1) == 0))) {
  ------------------
  |  Branch (125:10): [True: 1.96k, False: 7.85k]
  |  Branch (125:32): [True: 18, False: 1.94k]
  ------------------
  126|    101|      Result = &Value;
  127|    101|    }
  128|       |
  129|  9.89k|    return *this;
  130|  9.89k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj5EEERS2_RAT__KcRKS1_:
   58|  1.43M|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  1.43M|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 779k, False: 658k]
  |  Branch (59:20): [True: 13.0k, False: 766k]
  ------------------
   60|  13.0k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 256, False: 12.7k]
  ------------------
   61|    256|      Result = &Value;
   62|    256|    }
   63|       |
   64|  1.43M|    return *this;
   65|  1.43M|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E5CasesILj11ELj13EEERS2_RAT__KcRAT0__S5_RKS1_:
   92|  9.89k|                      const T& Value) {
   93|  9.89k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 9.44k, False: 448]
  ------------------
   94|  9.44k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 1.26k, False: 8.18k]
  |  Branch (94:32): [True: 20, False: 1.24k]
  ------------------
   95|  9.42k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 165, False: 9.26k]
  |  Branch (95:32): [True: 0, False: 165]
  ------------------
   96|     20|      Result = &Value;
   97|     20|    }
   98|       |
   99|  9.89k|    return *this;
  100|  9.89k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E5CasesILj11ELj12EEERS2_RAT__KcRAT0__S5_RKS1_:
   92|  19.7k|                      const T& Value) {
   93|  19.7k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 18.6k, False: 1.13k]
  ------------------
   94|  18.6k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 2.37k, False: 16.2k]
  |  Branch (94:32): [True: 50, False: 2.32k]
  ------------------
   95|  18.6k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 1.65k, False: 16.9k]
  |  Branch (95:32): [True: 95, False: 1.56k]
  ------------------
   96|    145|      Result = &Value;
   97|    145|    }
   98|       |
   99|  19.7k|    return *this;
  100|  19.7k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E4CaseILj11EEERS2_RAT__KcRKS1_:
   58|  19.7k|  StringSwitch& Case(const char (&S)[N], const T& Value) {
   59|  19.7k|    if (!Result && N-1 == Str.size() &&
  ------------------
  |  Branch (59:9): [True: 18.5k, False: 1.27k]
  |  Branch (59:20): [True: 2.32k, False: 16.1k]
  ------------------
   60|  2.32k|        (std::memcmp(S, Str.data(), N-1) == 0)) {
  ------------------
  |  Branch (60:9): [True: 63, False: 2.26k]
  ------------------
   61|     63|      Result = &Value;
   62|     63|    }
   63|       |
   64|  19.7k|    return *this;
   65|  19.7k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E5CasesILj4ELj5ELj6EEERS2_RAT__KcRAT0__S5_RAT1__S5_RKS1_:
  105|   704k|                      const char (&S2)[N2], const T& Value) {
  106|   704k|    if (!Result && (
  ------------------
  |  Branch (106:9): [True: 703k, False: 1.13k]
  ------------------
  107|   703k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (107:10): [True: 1.82k, False: 701k]
  |  Branch (107:32): [True: 264, False: 1.56k]
  ------------------
  108|   702k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (108:10): [True: 6.10k, False: 696k]
  |  Branch (108:32): [True: 43, False: 6.06k]
  ------------------
  109|   702k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0))) {
  ------------------
  |  Branch (109:10): [True: 8.11k, False: 694k]
  |  Branch (109:32): [True: 2.59k, False: 5.52k]
  ------------------
  110|  2.89k|      Result = &Value;
  111|  2.89k|    }
  112|       |
  113|   704k|    return *this;
  114|   704k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E5CasesILj4ELj5EEERS2_RAT__KcRAT0__S5_RKS1_:
   92|   704k|                      const T& Value) {
   93|   704k|    if (!Result && (
  ------------------
  |  Branch (93:9): [True: 700k, False: 4.03k]
  ------------------
   94|   700k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (94:10): [True: 1.56k, False: 698k]
  |  Branch (94:32): [True: 10, False: 1.55k]
  ------------------
   95|   700k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0))) {
  ------------------
  |  Branch (95:10): [True: 6.06k, False: 694k]
  |  Branch (95:32): [True: 0, False: 6.06k]
  ------------------
   96|     10|      Result = &Value;
   97|     10|    }
   98|       |
   99|   704k|    return *this;
  100|   704k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E5CasesILj3ELj4ELj5ELj4EEERS2_RAT__KcRAT0__S5_RAT1__S5_RAT2__S5_RKS1_:
  120|   704k|                      const T& Value) {
  121|   704k|    if (!Result && (
  ------------------
  |  Branch (121:9): [True: 700k, False: 4.04k]
  ------------------
  122|   700k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (122:10): [True: 655k, False: 44.0k]
  |  Branch (122:32): [True: 652k, False: 3.52k]
  ------------------
  123|  47.6k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (123:10): [True: 1.55k, False: 46.0k]
  |  Branch (123:32): [True: 37, False: 1.51k]
  ------------------
  124|  47.5k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0) ||
  ------------------
  |  Branch (124:10): [True: 6.06k, False: 41.5k]
  |  Branch (124:32): [True: 10, False: 6.05k]
  ------------------
  125|   652k|        (N3-1 == Str.size() && std::memcmp(S3, Str.data(), N3-1) == 0))) {
  ------------------
  |  Branch (125:10): [True: 1.51k, False: 46.0k]
  |  Branch (125:32): [True: 3, False: 1.51k]
  ------------------
  126|   652k|      Result = &Value;
  127|   652k|    }
  128|       |
  129|   704k|    return *this;
  130|   704k|  }
_ZN7llvm_ks12StringSwitchINS_9StringRefES1_E5CasesILj3ELj4ELj8ELj6EEERS2_RAT__KcRAT0__S5_RAT1__S5_RAT2__S5_RKS1_:
  120|   704k|                      const T& Value) {
  121|   704k|    if (!Result && (
  ------------------
  |  Branch (121:9): [True: 47.0k, False: 657k]
  ------------------
  122|  47.0k|        (N0-1 == Str.size() && std::memcmp(S0, Str.data(), N0-1) == 0) ||
  ------------------
  |  Branch (122:10): [True: 3.52k, False: 43.5k]
  |  Branch (122:32): [True: 149, False: 3.37k]
  ------------------
  123|  46.8k|        (N1-1 == Str.size() && std::memcmp(S1, Str.data(), N1-1) == 0) ||
  ------------------
  |  Branch (123:10): [True: 973, False: 45.9k]
  |  Branch (123:32): [True: 61, False: 912]
  ------------------
  124|  46.8k|        (N2-1 == Str.size() && std::memcmp(S2, Str.data(), N2-1) == 0) ||
  ------------------
  |  Branch (124:10): [True: 278, False: 46.5k]
  |  Branch (124:32): [True: 3, False: 275]
  ------------------
  125|  46.8k|        (N3-1 == Str.size() && std::memcmp(S3, Str.data(), N3-1) == 0))) {
  ------------------
  |  Branch (125:10): [True: 5.52k, False: 41.2k]
  |  Branch (125:32): [True: 27, False: 5.49k]
  ------------------
  126|    240|      Result = &Value;
  127|    240|    }
  128|       |
  129|   704k|    return *this;
  130|   704k|  }
_ZN7llvm_ks12StringSwitchIjjE10StartsWithILj8EEERS1_RAT__KcRKj:
   80|   209k|  StringSwitch& StartsWith(const char (&S)[N], const T &Value) {
   81|   209k|    if (!Result && Str.size() >= N-1 &&
  ------------------
  |  Branch (81:9): [True: 209k, False: 0]
  |  Branch (81:20): [True: 0, False: 209k]
  ------------------
   82|      0|        std::memcmp(S, Str.data(), N-1) == 0) {
  ------------------
  |  Branch (82:9): [True: 0, False: 0]
  ------------------
   83|      0|      Result = &Value;
   84|      0|    }
   85|       |
   86|   209k|    return *this;
   87|   209k|  }
_ZN7llvm_ks12StringSwitchIjjE10StartsWithILj6EEERS1_RAT__KcRKj:
   80|   419k|  StringSwitch& StartsWith(const char (&S)[N], const T &Value) {
   81|   419k|    if (!Result && Str.size() >= N-1 &&
  ------------------
  |  Branch (81:9): [True: 419k, False: 0]
  |  Branch (81:20): [True: 419k, False: 0]
  ------------------
   82|   419k|        std::memcmp(S, Str.data(), N-1) == 0) {
  ------------------
  |  Branch (82:9): [True: 0, False: 419k]
  ------------------
   83|      0|      Result = &Value;
   84|      0|    }
   85|       |
   86|   419k|    return *this;
   87|   419k|  }
_ZN7llvm_ks12StringSwitchIjjE10StartsWithILj4EEERS1_RAT__KcRKj:
   80|   209k|  StringSwitch& StartsWith(const char (&S)[N], const T &Value) {
   81|   209k|    if (!Result && Str.size() >= N-1 &&
  ------------------
  |  Branch (81:9): [True: 209k, False: 0]
  |  Branch (81:20): [True: 209k, False: 0]
  ------------------
   82|   209k|        std::memcmp(S, Str.data(), N-1) == 0) {
  ------------------
  |  Branch (82:9): [True: 209k, False: 0]
  ------------------
   83|   209k|      Result = &Value;
   84|   209k|    }
   85|       |
   86|   209k|    return *this;
   87|   209k|  }

_ZN7llvm_ks6TripleC2Ev:
  223|  43.9k|  Triple() : Data(), Arch(), Vendor(), OS(), Environment(), ObjectFormat() {}
_ZNK7llvm_ks6Triple15getObjectFormatEv:
  285|   104k|  ObjectFormatType getObjectFormat() const { return ObjectFormat; }
_ZNK7llvm_ks6Triple7getArchEv:
  255|   399k|  ArchType getArch() const { return Arch; }
_ZNK7llvm_ks6Triple5getOSEv:
  264|  1.38M|  OSType getOS() const { return OS; }
_ZNK7llvm_ks6Triple9getTripleEv:
  326|  20.9k|  const std::string &getTriple() const { return Data; }
_ZNK7llvm_ks6Triple8isMacOSXEv:
  412|   209k|  bool isMacOSX() const {
  413|   209k|    return getOS() == Triple::Darwin || getOS() == Triple::MacOSX;
  ------------------
  |  Branch (413:12): [True: 0, False: 209k]
  |  Branch (413:41): [True: 0, False: 209k]
  ------------------
  414|   209k|  }
_ZNK7llvm_ks6Triple5isiOSEv:
  421|   209k|  bool isiOS() const {
  422|   209k|    return getOS() == Triple::IOS || isTvOS();
  ------------------
  |  Branch (422:12): [True: 0, False: 209k]
  |  Branch (422:38): [True: 0, False: 209k]
  ------------------
  423|   209k|  }
_ZNK7llvm_ks6Triple6isTvOSEv:
  426|   209k|  bool isTvOS() const {
  427|   209k|    return getOS() == Triple::TvOS;
  428|   209k|  }
_ZNK7llvm_ks6Triple9isWatchOSEv:
  431|   209k|  bool isWatchOS() const {
  432|   209k|    return getOS() == Triple::WatchOS;
  433|   209k|  }
_ZNK7llvm_ks6Triple10isOSDarwinEv:
  440|   209k|  bool isOSDarwin() const {
  441|   209k|    return isMacOSX() || isiOS() || isWatchOS();
  ------------------
  |  Branch (441:12): [True: 0, False: 209k]
  |  Branch (441:26): [True: 0, False: 209k]
  |  Branch (441:37): [True: 0, False: 209k]
  ------------------
  442|   209k|  }
_ZNK7llvm_ks6Triple11isOSSolarisEv:
  458|  20.9k|  bool isOSSolaris() const {
  459|  20.9k|    return getOS() == Triple::Solaris;
  460|  20.9k|  }
_ZNK7llvm_ks6Triple24isWindowsMSVCEnvironmentEv:
  471|  20.9k|  bool isWindowsMSVCEnvironment() const {
  472|  20.9k|    return getOS() == Triple::Win32 &&
  ------------------
  |  Branch (472:12): [True: 0, False: 20.9k]
  ------------------
  473|      0|           (getEnvironment() == Triple::UnknownEnvironment ||
  ------------------
  |  Branch (473:13): [True: 0, False: 0]
  ------------------
  474|      0|            getEnvironment() == Triple::MSVC);
  ------------------
  |  Branch (474:13): [True: 0, False: 0]
  ------------------
  475|  20.9k|  }
_ZNK7llvm_ks6Triple11isOSWindowsEv:
  510|   209k|  bool isOSWindows() const {
  511|   209k|    return getOS() == Triple::Win32;
  512|   209k|  }
_ZNK7llvm_ks6Triple8isOSNaClEv:
  515|  41.9k|  bool isOSNaCl() const {
  516|  41.9k|    return getOS() == Triple::NaCl;
  517|  41.9k|  }
_ZNK7llvm_ks6Triple16isOSBinFormatELFEv:
  525|  20.9k|  bool isOSBinFormatELF() const {
  526|  20.9k|    return getObjectFormat() == Triple::ELF;
  527|  20.9k|  }
_ZNK7llvm_ks6Triple18isOSBinFormatMachOEv:
  535|  20.9k|  bool isOSBinFormatMachO() const {
  536|  20.9k|    return getObjectFormat() == Triple::MachO;
  537|  20.9k|  }

_ZN7llvm_ks5TwineC2ERKNS_9StringRefE:
  286|   561k|      : LHSKind(StringRefKind), RHSKind(EmptyKind) {
  287|   561k|      LHS.stringRef = &Str;
  288|       |      assert(isValid() && "Invalid twine!");
  ------------------
  |  Branch (288:7): [True: 561k, False: 0]
  |  Branch (288:7): [True: 561k, Folded]
  |  Branch (288:7): [True: 561k, False: 0]
  ------------------
  289|   561k|    }
_ZNK7llvm_ks5Twine7isValidEv:
  213|  1.30M|    bool isValid() const {
  214|       |      // Nullary twines always have Empty on the RHS.
  215|  1.30M|      if (isNullary() && getRHSKind() != EmptyKind)
  ------------------
  |  Branch (215:11): [True: 0, False: 1.30M]
  |  Branch (215:26): [True: 0, False: 0]
  ------------------
  216|      0|        return false;
  217|       |
  218|       |      // Null should never appear on the RHS.
  219|  1.30M|      if (getRHSKind() == NullKind)
  ------------------
  |  Branch (219:11): [True: 0, False: 1.30M]
  ------------------
  220|      0|        return false;
  221|       |
  222|       |      // The RHS cannot be non-empty if the LHS is empty.
  223|  1.30M|      if (getRHSKind() != EmptyKind && getLHSKind() == EmptyKind)
  ------------------
  |  Branch (223:11): [True: 73.9k, False: 1.23M]
  |  Branch (223:40): [True: 0, False: 73.9k]
  ------------------
  224|      0|        return false;
  225|       |
  226|       |      // A twine child should always be binary.
  227|  1.30M|      if (getLHSKind() == TwineKind &&
  ------------------
  |  Branch (227:11): [True: 4.52k, False: 1.30M]
  ------------------
  228|  4.52k|          !LHS.twine->isBinary())
  ------------------
  |  Branch (228:11): [True: 0, False: 4.52k]
  ------------------
  229|      0|        return false;
  230|  1.30M|      if (getRHSKind() == TwineKind &&
  ------------------
  |  Branch (230:11): [True: 0, False: 1.30M]
  ------------------
  231|      0|          !RHS.twine->isBinary())
  ------------------
  |  Branch (231:11): [True: 0, False: 0]
  ------------------
  232|      0|        return false;
  233|       |
  234|  1.30M|      return true;
  235|  1.30M|    }
_ZNK7llvm_ks5Twine9isNullaryEv:
  197|  1.44M|    bool isNullary() const {
  198|  1.44M|      return isNull() || isEmpty();
  ------------------
  |  Branch (198:14): [True: 0, False: 1.44M]
  |  Branch (198:26): [True: 0, False: 1.44M]
  ------------------
  199|  1.44M|    }
_ZNK7llvm_ks5Twine6isNullEv:
  187|  1.54M|    bool isNull() const {
  188|  1.54M|      return getLHSKind() == NullKind;
  189|  1.54M|    }
_ZNK7llvm_ks5Twine7isEmptyEv:
  192|  1.54M|    bool isEmpty() const {
  193|  1.54M|      return getLHSKind() == EmptyKind;
  194|  1.54M|    }
_ZNK7llvm_ks5Twine10getRHSKindEv:
  241|  5.87M|    NodeKind getRHSKind() const { return RHSKind; }
_ZNK7llvm_ks5Twine10getLHSKindEv:
  238|  7.01M|    NodeKind getLHSKind() const { return LHSKind; }
_ZNK7llvm_ks5Twine8isBinaryEv:
  207|  4.52k|    bool isBinary() const {
  208|  4.52k|      return getLHSKind() != NullKind && getRHSKind() != EmptyKind;
  ------------------
  |  Branch (208:14): [True: 4.52k, False: 0]
  |  Branch (208:42): [True: 4.52k, False: 0]
  ------------------
  209|  4.52k|    }
_ZN7llvm_ks5TwineC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  279|   146k|      : LHSKind(StdStringKind), RHSKind(EmptyKind) {
  280|   146k|      LHS.stdString = &Str;
  281|       |      assert(isValid() && "Invalid twine!");
  ------------------
  |  Branch (281:7): [True: 146k, False: 0]
  |  Branch (281:7): [True: 146k, Folded]
  |  Branch (281:7): [True: 146k, False: 0]
  ------------------
  282|   146k|    }
_ZN7llvm_ks5TwineC2ENS0_5ChildENS0_8NodeKindES1_S2_:
  178|  50.7k|        : LHS(LHS), RHS(RHS), LHSKind(LHSKind), RHSKind(RHSKind) {
  179|       |      assert(isValid() && "Invalid twine!");
  ------------------
  |  Branch (179:7): [True: 50.7k, False: 0]
  |  Branch (179:7): [True: 50.7k, Folded]
  |  Branch (179:7): [True: 50.7k, False: 0]
  ------------------
  180|  50.7k|    }
_ZNK7llvm_ks5Twine7isUnaryEv:
  202|   143k|    bool isUnary() const {
  203|   143k|      return getRHSKind() == EmptyKind && !isNullary();
  ------------------
  |  Branch (203:14): [True: 139k, False: 4.52k]
  |  Branch (203:43): [True: 139k, False: 0]
  ------------------
  204|   143k|    }
_ZN7llvm_ks5TwineC2EPKc:
  267|   526k|      : RHSKind(EmptyKind) {
  268|   526k|      if (Str[0] != '\0') {
  ------------------
  |  Branch (268:11): [True: 526k, False: 0]
  ------------------
  269|   526k|        LHS.cString = Str;
  270|   526k|        LHSKind = CStringKind;
  271|   526k|      } else
  272|      0|        LHSKind = EmptyKind;
  273|       |
  274|       |      assert(isValid() && "Invalid twine!");
  ------------------
  |  Branch (274:7): [True: 526k, False: 0]
  |  Branch (274:7): [True: 526k, Folded]
  |  Branch (274:7): [True: 526k, False: 0]
  ------------------
  275|   526k|    }
_ZN7llvm_ks5TwineC2EPKcRKNS_9StringRefE:
  359|  23.1k|        : LHSKind(CStringKind), RHSKind(StringRefKind) {
  360|  23.1k|      this->LHS.cString = LHS;
  361|  23.1k|      this->RHS.stringRef = &RHS;
  362|       |      assert(isValid() && "Invalid twine!");
  ------------------
  |  Branch (362:7): [True: 23.1k, False: 0]
  |  Branch (362:7): [True: 23.1k, Folded]
  |  Branch (362:7): [True: 23.1k, False: 0]
  ------------------
  363|  23.1k|    }
_ZNK7llvm_ks5Twine17isSingleStringRefEv:
  403|  1.39M|    bool isSingleStringRef() const {
  404|  1.39M|      if (getRHSKind() != EmptyKind) return false;
  ------------------
  |  Branch (404:11): [True: 69.4k, False: 1.32M]
  ------------------
  405|       |
  406|  1.32M|      switch (getLHSKind()) {
  407|      0|      case EmptyKind:
  ------------------
  |  Branch (407:7): [True: 0, False: 1.32M]
  ------------------
  408|   295k|      case CStringKind:
  ------------------
  |  Branch (408:7): [True: 295k, False: 1.03M]
  ------------------
  409|   295k|      case StdStringKind:
  ------------------
  |  Branch (409:7): [True: 0, False: 1.32M]
  ------------------
  410|  1.32M|      case StringRefKind:
  ------------------
  |  Branch (410:7): [True: 1.03M, False: 295k]
  ------------------
  411|  1.32M|      case SmallStringKind:
  ------------------
  |  Branch (411:7): [True: 0, False: 1.32M]
  ------------------
  412|  1.32M|        return true;
  413|      0|      default:
  ------------------
  |  Branch (413:7): [True: 0, False: 1.32M]
  ------------------
  414|      0|        return false;
  415|  1.32M|      }
  416|  1.32M|    }
_ZNK7llvm_ks5Twine18getSingleStringRefEv:
  436|   662k|    StringRef getSingleStringRef() const {
  437|   662k|      assert(isSingleStringRef() &&"This cannot be had as a single stringref!");
  ------------------
  |  Branch (437:7): [True: 662k, False: 0]
  |  Branch (437:7): [True: 662k, Folded]
  |  Branch (437:7): [True: 662k, False: 0]
  ------------------
  438|   662k|      switch (getLHSKind()) {
  439|      0|      default: llvm_unreachable("Out of sync with isSingleStringRef");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (439:7): [True: 0, False: 662k]
  ------------------
  440|      0|      case EmptyKind:      return StringRef();
  ------------------
  |  Branch (440:7): [True: 0, False: 662k]
  ------------------
  441|   147k|      case CStringKind:    return StringRef(LHS.cString);
  ------------------
  |  Branch (441:7): [True: 147k, False: 515k]
  ------------------
  442|      0|      case StdStringKind:  return StringRef(*LHS.stdString);
  ------------------
  |  Branch (442:7): [True: 0, False: 662k]
  ------------------
  443|   515k|      case StringRefKind:  return *LHS.stringRef;
  ------------------
  |  Branch (443:7): [True: 515k, False: 147k]
  ------------------
  444|      0|      case SmallStringKind:
  ------------------
  |  Branch (444:7): [True: 0, False: 662k]
  ------------------
  445|      0|        return StringRef(LHS.smallString->data(), LHS.smallString->size());
  446|   662k|      }
  447|   662k|    }
_ZNK7llvm_ks5Twine11toStringRefERNS_15SmallVectorImplIcEE:
  452|   732k|    StringRef toStringRef(SmallVectorImpl<char> &Out) const {
  453|   732k|      if (isSingleStringRef())
  ------------------
  |  Branch (453:11): [True: 662k, False: 69.4k]
  ------------------
  454|   662k|        return getSingleStringRef();
  455|  69.4k|      toVector(Out);
  456|  69.4k|      return StringRef(Out.data(), Out.size());
  457|   732k|    }
_ZNK7llvm_ks5Twine6concatERKS0_:
  485|  50.7k|  inline Twine Twine::concat(const Twine &Suffix) const {
  486|       |    // Concatenation with null is null.
  487|  50.7k|    if (isNull() || Suffix.isNull())
  ------------------
  |  Branch (487:9): [True: 0, False: 50.7k]
  |  Branch (487:21): [True: 0, False: 50.7k]
  ------------------
  488|      0|      return Twine(NullKind);
  489|       |
  490|       |    // Concatenation with empty yields the other side.
  491|  50.7k|    if (isEmpty())
  ------------------
  |  Branch (491:9): [True: 0, False: 50.7k]
  ------------------
  492|      0|      return Suffix;
  493|  50.7k|    if (Suffix.isEmpty())
  ------------------
  |  Branch (493:9): [True: 0, False: 50.7k]
  ------------------
  494|      0|      return *this;
  495|       |
  496|       |    // Otherwise we need to create a new node, taking care to fold in unary
  497|       |    // twines.
  498|  50.7k|    Child NewLHS, NewRHS;
  499|  50.7k|    NewLHS.twine = this;
  500|  50.7k|    NewRHS.twine = &Suffix;
  501|  50.7k|    NodeKind NewLHSKind = TwineKind, NewRHSKind = TwineKind;
  502|  50.7k|    if (isUnary()) {
  ------------------
  |  Branch (502:9): [True: 46.2k, False: 4.52k]
  ------------------
  503|  46.2k|      NewLHS = LHS;
  504|  46.2k|      NewLHSKind = getLHSKind();
  505|  46.2k|    }
  506|  50.7k|    if (Suffix.isUnary()) {
  ------------------
  |  Branch (506:9): [True: 50.7k, False: 0]
  ------------------
  507|  50.7k|      NewRHS = Suffix.LHS;
  508|  50.7k|      NewRHSKind = Suffix.getLHSKind();
  509|  50.7k|    }
  510|       |
  511|  50.7k|    return Twine(NewLHS, NewLHSKind, NewRHS, NewRHSKind);
  512|  50.7k|  }
_ZN7llvm_ksplERKNS_5TwineES2_:
  514|  50.7k|  inline Twine operator+(const Twine &LHS, const Twine &RHS) {
  515|  50.7k|    return LHS.concat(RHS);
  516|  50.7k|  }
_ZN7llvm_ksplEPKcRKNS_9StringRefE:
  521|  23.1k|  inline Twine operator+(const char *LHS, const StringRef &RHS) {
  522|  23.1k|    return Twine(LHS, RHS);
  523|  23.1k|  }
_ZN7llvm_kslsERNS_11raw_ostreamERKNS_5TwineE:
  532|   328k|  inline raw_ostream &operator<<(raw_ostream &OS, const Twine &RHS) {
  533|   328k|    RHS.print(OS);
  534|   328k|    return OS;
  535|   328k|  }

_ZNK7llvm_ks14ilist_iteratorINS_10MCFragmentEE19getNodePtrUncheckedEv:
  283|  78.1M|  pointer getNodePtrUnchecked() const { return NodePtr; }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE6insertENS_14ilist_iteratorIS1_EEPS1_:
  461|  56.0k|  iterator insert(iterator where, NodeTy *New) {
  462|  56.0k|    NodeTy *CurNode = where.getNodePtrUnchecked();
  463|  56.0k|    NodeTy *PrevNode = this->getPrev(CurNode);
  464|  56.0k|    this->setNext(New, CurNode);
  465|  56.0k|    this->setPrev(New, PrevNode);
  466|       |
  467|  56.0k|    if (CurNode != Head)  // Is PrevNode off the beginning of the list?
  ------------------
  |  Branch (467:9): [True: 44.5k, False: 11.4k]
  ------------------
  468|  44.5k|      this->setNext(PrevNode, New);
  469|  11.4k|    else
  470|  11.4k|      Head = New;
  471|  56.0k|    this->setPrev(CurNode, New);
  472|       |
  473|  56.0k|    this->addNodeToList(New);  // Notify traits that we added a node...
  474|  56.0k|    return iterator(New);
  475|  56.0k|  }
_ZN7llvm_ks21ilist_nextprev_traitsINS_10MCFragmentEE7getPrevEPS1_:
   57|   155M|  static NodeTy *getPrev(NodeTy *N) { return N->getPrev(); }
_ZN7llvm_ks21ilist_nextprev_traitsINS_10MCFragmentEE7setNextEPS1_S3_:
   63|   177k|  static void setNext(NodeTy *N, NodeTy *Next) { N->setNext(Next); }
_ZN7llvm_ks21ilist_nextprev_traitsINS_10MCFragmentEE7setPrevEPS1_S3_:
   62|   245k|  static void setPrev(NodeTy *N, NodeTy *Prev) { N->setPrev(Prev); }
_ZN7llvm_ks14ilist_iteratorINS_10MCFragmentEEC2EPS1_:
  223|  78.2M|  explicit ilist_iterator(pointer NP) : NodePtr(NP) {}
_ZNK7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE11getPrevNodeERS1_:
  692|  54.9k|  NodeTy *getPrevNode(NodeTy &N) const {
  693|  54.9k|    auto I = N.getIterator();
  694|  54.9k|    if (I == begin())
  ------------------
  |  Branch (694:9): [True: 9.36k, False: 45.5k]
  ------------------
  695|  9.36k|      return nullptr;
  696|  45.5k|    return &*std::prev(I);
  697|  54.9k|  }
_ZNK7llvm_ks14ilist_iteratorINS_10MCFragmentEEeqIKS1_EEbRKNS0_IT_EE:
  254|  54.9k|  template <class Y> bool operator==(const ilist_iterator<Y> &RHS) const {
  255|  54.9k|    return NodePtr == RHS.getNodePtrUnchecked();
  256|  54.9k|  }
_ZNK7llvm_ks14ilist_iteratorIKNS_10MCFragmentEE19getNodePtrUncheckedEv:
  283|  99.8k|  pointer getNodePtrUnchecked() const { return NodePtr; }
_ZNK7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE5beginEv:
  412|  54.9k|  const_iterator begin() const {
  413|  54.9k|    CreateLazySentinel();
  414|  54.9k|    return const_iterator(Head);
  415|  54.9k|  }
_ZNK7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE18CreateLazySentinelEv:
  375|  78.0M|  void CreateLazySentinel() const {
  376|  78.0M|    this->ensureHead(Head);
  377|  78.0M|  }
_ZN7llvm_ks21ilist_sentinel_traitsINS_10MCFragmentEE10ensureHeadERPS1_:
   91|  78.2M|  static NodeTy *ensureHead(NodeTy *&Head) {
   92|  78.2M|    if (!Head) {
  ------------------
  |  Branch (92:9): [True: 21.3k, False: 78.2M]
  ------------------
   93|  21.3k|      Head = ilist_traits<NodeTy>::createSentinel();
   94|  21.3k|      ilist_traits<NodeTy>::noteHead(Head, Head);
   95|  21.3k|      ilist_traits<NodeTy>::setNext(Head, nullptr);
   96|  21.3k|      return Head;
   97|  21.3k|    }
   98|  78.2M|    return ilist_traits<NodeTy>::getPrev(Head);
   99|  78.2M|  }
_ZN7llvm_ks21ilist_sentinel_traitsINS_10MCFragmentEE14createSentinelEv:
   78|  21.3k|  static NodeTy *createSentinel() { return new NodeTy(); }
_ZN7llvm_ks21ilist_sentinel_traitsINS_10MCFragmentEE8noteHeadEPS1_S3_:
  102|  21.3k|  static void noteHead(NodeTy *NewHead, NodeTy *Sentinel) {
  103|  21.3k|    ilist_traits<NodeTy>::setPrev(NewHead, Sentinel);
  104|  21.3k|  }
_ZN7llvm_ks14ilist_iteratorIKNS_10MCFragmentEEC2EPS2_:
  223|  54.9k|  explicit ilist_iterator(pointer NP) : NodePtr(NP) {}
_ZN7llvm_ks14ilist_iteratorINS_10MCFragmentEEmmEv:
  262|  77.2M|  ilist_iterator &operator--() {      // predecrement - Back up
  263|  77.2M|    NodePtr = Traits::getPrev(NodePtr);
  264|  77.2M|    assert(NodePtr && "--'d off the beginning of an ilist!");
  ------------------
  |  Branch (264:5): [True: 77.2M, False: 0]
  |  Branch (264:5): [True: 77.2M, Folded]
  |  Branch (264:5): [True: 77.2M, False: 0]
  ------------------
  265|  77.2M|    return *this;
  266|  77.2M|  }
_ZN7llvm_ks14ilist_iteratorINS_10MCFragmentEEC2Ev:
  225|   153k|  ilist_iterator() : NodePtr(nullptr) {}
_ZN7llvm_ks14ilist_iteratorINS_10MCFragmentEEppEv:
  267|   315k|  ilist_iterator &operator++() {      // preincrement - Advance
  268|   315k|    NodePtr = Traits::getNext(NodePtr);
  269|   315k|    return *this;
  270|   315k|  }
_ZN7llvm_ks21ilist_nextprev_traitsINS_10MCFragmentEE7getNextEPS1_:
   58|   371k|  static NodeTy *getNext(NodeTy *N) { return N->getNext(); }
_ZNK7llvm_ks14ilist_iteratorINS_10MCFragmentEEeqIS1_EEbRKNS0_IT_EE:
  254|  56.7k|  template <class Y> bool operator==(const ilist_iterator<Y> &RHS) const {
  255|  56.7k|    return NodePtr == RHS.getNodePtrUnchecked();
  256|  56.7k|  }
_ZNK7llvm_ks14ilist_iteratorINS_10MCFragmentEEdeEv:
  248|  77.4M|  reference operator*() const {
  249|  77.4M|    return *NodePtr;
  250|  77.4M|  }
_ZNK7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE5emptyEv:
  434|  9.30k|  bool LLVM_ATTRIBUTE_UNUSED_RESULT empty() const {
  435|  9.30k|    return !Head || Head == getTail();
  ------------------
  |  Branch (435:12): [True: 0, False: 9.30k]
  |  Branch (435:21): [True: 0, False: 9.30k]
  ------------------
  436|  9.30k|  }
_ZNK7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE7getTailEv:
  370|  9.30k|  const NodeTy *getTail() const { return this->ensureHead(Head); }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE3endEv:
  416|   201k|  iterator end() {
  417|   201k|    CreateLazySentinel();
  418|   201k|    return iterator(getTail());
  419|   201k|  }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE7getTailEv:
  369|   223k|  NodeTy *getTail() { return this->ensureHead(Head); }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE5beginEv:
  408|  77.7M|  iterator begin() {
  409|  77.7M|    CreateLazySentinel();
  410|  77.7M|    return iterator(Head);
  411|  77.7M|  }
_ZNK7llvm_ks14ilist_iteratorINS_10MCFragmentEEneIS1_EEbRKNS0_IT_EE:
  257|  78.0M|  template <class Y> bool operator!=(const ilist_iterator<Y> &RHS) const {
  258|  78.0M|    return NodePtr != RHS.getNodePtrUnchecked();
  259|  78.0M|  }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEEC2Ev:
  400|   910k|  iplist() : Head(this->provideInitialHead()) {}
_ZN7llvm_ks21ilist_sentinel_traitsINS_10MCFragmentEE18provideInitialHeadEv:
   86|   910k|  static NodeTy *provideInitialHead() { return nullptr; }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEED2Ev:
  401|   910k|  ~iplist() {
  402|   910k|    if (!Head) return;
  ------------------
  |  Branch (402:9): [True: 889k, False: 21.3k]
  ------------------
  403|  21.3k|    clear();
  404|  21.3k|    Traits::destroySentinel(getTail());
  405|  21.3k|  }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE5clearEv:
  605|  21.3k|  void clear() { if (Head) erase(begin(), end()); }
  ------------------
  |  Branch (605:22): [True: 21.3k, False: 0]
  ------------------
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE5eraseENS_14ilist_iteratorIS1_EES6_:
  599|  21.3k|  iterator erase(iterator first, iterator last) {
  600|  77.4k|    while (first != last)
  ------------------
  |  Branch (600:12): [True: 56.0k, False: 21.3k]
  ------------------
  601|  56.0k|      first = erase(first);
  602|  21.3k|    return last;
  603|  21.3k|  }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE5eraseENS_14ilist_iteratorIS1_EE:
  517|  56.0k|  iterator erase(iterator where) {
  518|  56.0k|    this->deleteNode(remove(where));
  519|  56.0k|    return where;
  520|  56.0k|  }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE6removeERNS_14ilist_iteratorIS1_EE:
  484|  56.0k|  NodeTy *remove(iterator &IT) {
  485|  56.0k|    assert(IT != end() && "Cannot remove end of list!");
  ------------------
  |  Branch (485:5): [True: 56.0k, False: 0]
  |  Branch (485:5): [True: 56.0k, Folded]
  |  Branch (485:5): [True: 56.0k, False: 0]
  ------------------
  486|  56.0k|    NodeTy *Node = &*IT;
  487|  56.0k|    NodeTy *NextNode = this->getNext(Node);
  488|  56.0k|    NodeTy *PrevNode = this->getPrev(Node);
  489|       |
  490|  56.0k|    if (Node != Head)  // Is PrevNode off the beginning of the list?
  ------------------
  |  Branch (490:9): [True: 0, False: 56.0k]
  ------------------
  491|      0|      this->setNext(PrevNode, NextNode);
  492|  56.0k|    else
  493|  56.0k|      Head = NextNode;
  494|  56.0k|    this->setPrev(NextNode, PrevNode);
  495|  56.0k|    IT.reset(NextNode);
  496|  56.0k|    this->removeNodeFromList(Node);  // Notify traits that we removed a node...
  497|       |
  498|       |    // Set the next/prev pointers of the current node to null.  This isn't
  499|       |    // strictly required, but this catches errors where a node is removed from
  500|       |    // an ilist (and potentially deleted) with iterators still pointing at it.
  501|       |    // When those iterators are incremented or decremented, they will assert on
  502|       |    // the null next/prev pointer instead of "usually working".
  503|  56.0k|    this->setNext(Node, nullptr);
  504|  56.0k|    this->setPrev(Node, nullptr);
  505|  56.0k|    return Node;
  506|  56.0k|  }
_ZN7llvm_ks14ilist_iteratorINS_10MCFragmentEE5resetEPS1_:
  241|  56.0k|  void reset(pointer NP) { NodePtr = NP; }
_ZN7llvm_ks21ilist_sentinel_traitsINS_10MCFragmentEE15destroySentinelEPS1_:
   81|  21.3k|  static void destroySentinel(NodeTy *N) { delete N; }
_ZNK7llvm_ks14ilist_iteratorINS_10MCFragmentEEptEv:
  251|  52.6k|  pointer operator->() const { return &operator*(); }
_ZN7llvm_ks6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEE6rbeginEv:
  426|  9.30k|  reverse_iterator rbegin()            { return reverse_iterator(end()); }
_ZN7llvm_ks14ilist_iteratorIKNS_10MCFragmentEEC2IS1_EERKNS0_IT_EE:
  231|  16.9k|    : NodePtr(RHS.getNodePtrUnchecked()) {}
_ZNK7llvm_ks14ilist_iteratorIKNS_10MCFragmentEEneIS2_EEbRKNS0_IT_EE:
  257|  44.8k|  template <class Y> bool operator!=(const ilist_iterator<Y> &RHS) const {
  258|  44.8k|    return NodePtr != RHS.getNodePtrUnchecked();
  259|  44.8k|  }
_ZN7llvm_ks14ilist_iteratorIKNS_10MCFragmentEEppEv:
  267|  36.3k|  ilist_iterator &operator++() {      // preincrement - Advance
  268|  36.3k|    NodePtr = Traits::getNext(NodePtr);
  269|  36.3k|    return *this;
  270|  36.3k|  }
_ZN7llvm_ks21ilist_nextprev_traitsINS_10MCFragmentEE7getNextEPKS1_:
   60|  36.3k|  static const NodeTy *getNext(const NodeTy *N) { return N->getNext(); }
_ZNK7llvm_ks14ilist_iteratorIKNS_10MCFragmentEEdeEv:
  248|  36.3k|  reference operator*() const {
  249|  36.3k|    return *NodePtr;
  250|  36.3k|  }
_ZN7llvm_ks13simplify_typeIKNS_14ilist_iteratorINS_10MCFragmentEEEE18getSimplifiedValueERS4_:
  333|  2.20k|  static SimpleType getSimplifiedValue(const ilist_iterator<NodeTy> &Node) {
  334|  2.20k|    return &*Node;
  335|  2.20k|  }
_ZN7llvm_ks13simplify_typeINS_14ilist_iteratorINS_10MCFragmentEEEE18getSimplifiedValueERS3_:
  326|  2.20k|  static SimpleType getSimplifiedValue(ilist_iterator<NodeTy> &Node) {
  327|  2.20k|    return &*Node;
  328|  2.20k|  }

_ZN7llvm_ks15ilist_half_nodeINS_10MCFragmentEE7getPrevEv:
   33|   155M|  NodeTy *getPrev() { return Prev; }
_ZN7llvm_ks10ilist_nodeINS_10MCFragmentEE7setNextEPS1_:
   56|   177k|  void setNext(NodeTy *N) { Next = N; }
_ZN7llvm_ks15ilist_half_nodeINS_10MCFragmentEE7setPrevEPS1_:
   35|   245k|  void setPrev(NodeTy *P) { Prev = P; }
_ZN7llvm_ks22ilist_node_with_parentINS_10MCFragmentENS_9MCSectionEEC2Ev:
   78|   987k|  ilist_node_with_parent() = default;
_ZN7llvm_ks10ilist_nodeINS_10MCFragmentEEC2Ev:
   58|   987k|  ilist_node() : Next(nullptr) {}
_ZN7llvm_ks15ilist_half_nodeINS_10MCFragmentEEC2Ev:
   36|   987k|  ilist_half_node() : Prev(nullptr) {}
_ZN7llvm_ks22ilist_node_with_parentINS_10MCFragmentENS_9MCSectionEE11getPrevNodeEv:
   94|  54.9k|  NodeTy *getPrevNode() {
   95|       |    // Should be separated to a reused function, but then we couldn't use auto
   96|       |    // (and would need the type of the list).
   97|  54.9k|    const auto &List =
   98|  54.9k|        getNodeParent()->*(ParentTy::getSublistAccess((NodeTy *)nullptr));
   99|  54.9k|    return List.getPrevNode(*static_cast<NodeTy *>(this));
  100|  54.9k|  }
_ZNK7llvm_ks22ilist_node_with_parentINS_10MCFragmentENS_9MCSectionEE13getNodeParentEv:
   86|  54.9k|  const ParentTy *getNodeParent() const {
   87|  54.9k|    return static_cast<const NodeTy *>(this)->getParent();
   88|  54.9k|  }
_ZN7llvm_ks10ilist_nodeINS_10MCFragmentEE11getIteratorEv:
   61|  54.9k|  ilist_iterator<NodeTy> getIterator() {
   62|       |    // FIXME: Stop downcasting to create the iterator (potential UB).
   63|  54.9k|    return ilist_iterator<NodeTy>(static_cast<NodeTy *>(this));
   64|  54.9k|  }
_ZN7llvm_ks10ilist_nodeINS_10MCFragmentEE7getNextEv:
   54|   371k|  NodeTy *getNext() { return Next; }
_ZNK7llvm_ks10ilist_nodeINS_10MCFragmentEE7getNextEv:
   55|  36.3k|  const NodeTy *getNext() const { return Next; }

_ZN7llvm_ks16pointee_iteratorINSt3__111__wrap_iterIPPNS_9MCSectionEEES3_EC2IS6_EEOT_:
  239|   106k|      : pointee_iterator::iterator_adaptor_base(std::forward<U &&>(u)) {}
_ZN7llvm_ks21iterator_adaptor_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPNS_9MCSectionEEES4_EES7_NS2_26random_access_iterator_tagES4_lS5_RS4_NS2_15iterator_traitsIS7_EEEC2IS7_EEOT_NS2_9enable_ifIXntsr3std10is_base_ofINS2_9remove_cvINS2_16remove_referenceISF_E4typeEE4typeES8_EE5valueEiE4typeE:
  163|   106k|      : I(std::forward<U &&>(u)) {}
_ZN7llvm_ks16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES4_EC2IS7_EEOT_:
  239|  17.9k|      : pointee_iterator::iterator_adaptor_base(std::forward<U &&>(u)) {}
_ZN7llvm_ks21iterator_adaptor_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EES8_NS2_26random_access_iterator_tagES5_lS6_RS5_NS2_15iterator_traitsIS8_EEEC2IS8_EEOT_NS2_9enable_ifIXntsr3std10is_base_ofINS2_9remove_cvINS2_16remove_referenceISG_E4typeEE4typeES9_EE5valueEiE4typeE:
  163|  17.9k|      : I(std::forward<U &&>(u)) {}
_ZNK7llvm_ks20iterator_facade_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPNS_9MCSectionEEES4_EENS2_26random_access_iterator_tagES4_lS5_RS4_EneERKS8_:
   96|   107k|  bool operator!=(const DerivedT &RHS) const {
   97|   107k|    return !static_cast<const DerivedT *>(this)->operator==(RHS);
   98|   107k|  }
_ZNK7llvm_ks21iterator_adaptor_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPNS_9MCSectionEEES4_EES7_NS2_26random_access_iterator_tagES4_lS5_RS4_NS2_15iterator_traitsIS7_EEEeqERKS8_:
  208|   107k|  bool operator==(const DerivedT &RHS) const { return I == RHS.I; }
_ZN7llvm_ks21iterator_adaptor_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPNS_9MCSectionEEES4_EES7_NS2_26random_access_iterator_tagES4_lS5_RS4_NS2_15iterator_traitsIS7_EEEppEv:
  195|  53.8k|  DerivedT &operator++() {
  196|  53.8k|    ++I;
  197|  53.8k|    return *static_cast<DerivedT *>(this);
  198|  53.8k|  }
_ZNK7llvm_ks16pointee_iteratorINSt3__111__wrap_iterIPPNS_9MCSectionEEES3_EdeEv:
  241|  55.0k|  T &operator*() const { return **this->I; }
_ZNK7llvm_ks20iterator_facade_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EENS2_26random_access_iterator_tagES5_lS6_RS5_EneERKS9_:
   96|   129k|  bool operator!=(const DerivedT &RHS) const {
   97|   129k|    return !static_cast<const DerivedT *>(this)->operator==(RHS);
   98|   129k|  }
_ZNK7llvm_ks21iterator_adaptor_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EES8_NS2_26random_access_iterator_tagES5_lS6_RS5_NS2_15iterator_traitsIS8_EEEeqERKS9_:
  208|   129k|  bool operator==(const DerivedT &RHS) const { return I == RHS.I; }
_ZN7llvm_ks21iterator_adaptor_baseINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EES8_NS2_26random_access_iterator_tagES5_lS6_RS5_NS2_15iterator_traitsIS8_EEEppEv:
  195|   120k|  DerivedT &operator++() {
  196|   120k|    ++I;
  197|   120k|    return *static_cast<DerivedT *>(this);
  198|   120k|  }
_ZNK7llvm_ks16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES4_EdeEv:
  241|   120k|  T &operator*() const { return **this->I; }

_ZN7llvm_ks10make_rangeINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EEEENS_14iterator_rangeIT_EESB_SB_:
   54|  8.98k|template <class T> iterator_range<T> make_range(T x, T y) {
   55|  8.98k|  return iterator_range<T>(std::move(x), std::move(y));
   56|  8.98k|}
_ZN7llvm_ks10make_rangeINS_14TargetRegistry8iteratorEEENS_14iterator_rangeIT_EES4_S4_:
   54|   146k|template <class T> iterator_range<T> make_range(T x, T y) {
   55|   146k|  return iterator_range<T>(std::move(x), std::move(y));
   56|   146k|}
_ZN7llvm_ks14iterator_rangeINS_14TargetRegistry8iteratorEEC2ES2_S2_:
   43|   146k|      : begin_iterator(std::move(begin_iterator)),
   44|   146k|        end_iterator(std::move(end_iterator)) {}
_ZNK7llvm_ks14iterator_rangeINS_14TargetRegistry8iteratorEE5beginEv:
   46|  41.9k|  IteratorT begin() const { return begin_iterator; }
_ZNK7llvm_ks14iterator_rangeINS_14TargetRegistry8iteratorEE3endEv:
   47|   104k|  IteratorT end() const { return end_iterator; }
_ZN7llvm_ks14iterator_rangeINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EEEC2ES9_S9_:
   43|  8.98k|      : begin_iterator(std::move(begin_iterator)),
   44|  8.98k|        end_iterator(std::move(end_iterator)) {}
_ZNK7llvm_ks14iterator_rangeINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EEE5beginEv:
   46|  8.98k|  IteratorT begin() const { return begin_iterator; }
_ZNK7llvm_ks14iterator_rangeINS_16pointee_iteratorINSt3__111__wrap_iterIPPKNS_8MCSymbolEEES5_EEE3endEv:
   47|  8.98k|  IteratorT end() const { return end_iterator; }

_ZN7llvm_ks17ConstantPoolEntryC2EPNS_8MCSymbolEPKNS_6MCExprEjNS_5SMLocE:
   31|  1.59k|    : Label(L), Value(Val), Size(Sz), Loc(Loc_) {}
_ZN7llvm_ks12ConstantPoolC2Ev:
   46|    115|  ConstantPool() {}

_ZN7llvm_ks12MCAsmBackend7setArchEi:
  145|  20.9k|  void setArch(int arch) { KsArch = arch; }
_ZNK7llvm_ks12MCAsmBackend17getMinimumNopSizeEv:
  128|    758|  virtual unsigned getMinimumNopSize() const { return 1; }
_ZN7llvm_ks12MCAsmBackend7getArchEv:
  146|    479|  int getArch() { return KsArch; }

_ZN7llvm_ks9MCAsmInfo8setRadixEj:
  480|  20.9k|  void setRadix(unsigned v) { Radix = v; }
_ZNK7llvm_ks9MCAsmInfo14isLittleEndianEv:
  379|  76.7M|  bool isLittleEndian() const { return IsLittleEndian; }
_ZNK7llvm_ks9MCAsmInfo24hasSubsectionsViaSymbolsEv:
  384|   388k|  bool hasSubsectionsViaSymbols() const { return HasSubsectionsViaSymbols; }
_ZNK7llvm_ks9MCAsmInfo13getDollarIsPCEv:
  450|  80.5k|  bool getDollarIsPC() const { return DollarIsPC; }
_ZNK7llvm_ks9MCAsmInfo18getSeparatorStringEv:
  451|  33.6M|  const char *getSeparatorString() const { return SeparatorString; }
_ZNK7llvm_ks9MCAsmInfo16getCommentStringEv:
  457|  16.3M|  const char *getCommentString() const { return CommentString; }
_ZNK7llvm_ks9MCAsmInfo22getPrivateGlobalPrefixEv:
  463|   343k|  const char *getPrivateGlobalPrefix() const { return PrivateGlobalPrefix; }
_ZNK7llvm_ks9MCAsmInfo19getAssemblerDialectEv:
  478|  51.4k|  unsigned getAssemblerDialect() const { return AssemblerDialect; }
_ZNK7llvm_ks9MCAsmInfo8getRadixEv:
  481|  20.9k|  unsigned getRadix() const { return Radix; }
_ZNK7llvm_ks9MCAsmInfo17doesAllowAtInNameEv:
  482|  1.63k|  bool doesAllowAtInName() const { return AllowAtInName; }
_ZNK7llvm_ks9MCAsmInfo21getAlignmentIsInBytesEv:
  490|  14.9k|  bool getAlignmentIsInBytes() const { return AlignmentIsInBytes; }
_ZNK7llvm_ks9MCAsmInfo21getTextAlignFillValueEv:
  491|  7.56k|  unsigned getTextAlignFillValue() const { return TextAlignFillValue; }
_ZNK7llvm_ks9MCAsmInfo34getCOMMDirectiveAlignmentIsInBytesEv:
  497|    128|  bool getCOMMDirectiveAlignmentIsInBytes() const {
  498|    128|    return COMMDirectiveAlignmentIsInBytes;
  499|    128|  }
_ZNK7llvm_ks9MCAsmInfo30getLCOMMDirectiveAlignmentTypeEv:
  500|    162|  LCOMM::LCOMMType getLCOMMDirectiveAlignmentType() const {
  501|    162|    return LCOMMDirectiveAlignmentType;
  502|    162|  }
_ZNK7llvm_ks9MCAsmInfo24getExceptionHandlingTypeEv:
  527|  20.9k|  ExceptionHandling getExceptionHandlingType() const { return ExceptionsType; }
_ZNK7llvm_ks9MCAsmInfo25useParensForSymbolVariantEv:
  548|   646k|  bool useParensForSymbolVariant() const { return UseParensForSymbolVariant; }
_ZNK7llvm_ks9MCAsmInfo21compressDebugSectionsEv:
  566|  8.49k|  bool compressDebugSections() const { return CompressDebugSections; }
_ZNK7llvm_ks9MCAsmInfo19shouldUseLogicalShrEv:
  572|   956k|  bool shouldUseLogicalShr() const { return UseLogicalShr; }

_ZNK7llvm_ks11MCAsmLayout12getAssemblerEv:
   51|   116k|  MCAssembler &getAssembler() const { return Assembler; }
_ZN7llvm_ks11MCAsmLayout15getSectionOrderEv:
   66|  36.5k|  llvm_ks::SmallVectorImpl<MCSection *> &getSectionOrder() { return SectionOrder; }

_ZNK7llvm_ks11MCAssembler8setErrorEj:
   64|  8.81k|  void setError(unsigned E) const { KsError = E; }
_ZNK7llvm_ks11MCAssembler8getErrorEv:
   65|  52.9k|  unsigned getError() const { return KsError; }
_ZNK7llvm_ks11MCAssembler14setSymResolverEPv:
   67|  8.98k|  void setSymResolver(void *h) const { KsSymResolver = h; }
_ZNK7llvm_ks11MCAssembler10getContextEv:
  264|  73.4k|  MCContext &getContext() const { return Context; }
_ZNK7llvm_ks11MCAssembler10getBackendEv:
  266|  63.9k|  MCAsmBackend &getBackend() const { return Backend; }
_ZNK7llvm_ks11MCAssembler10getEmitterEv:
  268|  29.4k|  MCCodeEmitter &getEmitter() const { return Emitter; }
_ZNK7llvm_ks11MCAssembler9getWriterEv:
  270|   127k|  MCObjectWriter &getWriter() const { return Writer; }
_ZNK7llvm_ks11MCAssembler11getRelaxAllEv:
  294|  7.53k|  bool getRelaxAll() const { return RelaxAll; }
_ZNK7llvm_ks11MCAssembler17isBundlingEnabledEv:
  297|  77.0M|  bool isBundlingEnabled() const { return BundleAlignSize != 0; }
_ZN7llvm_ks11MCAssembler5beginEv:
  310|  53.1k|  iterator begin() { return Sections.begin(); }
_ZN7llvm_ks11MCAssembler3endEv:
  313|  53.1k|  iterator end() { return Sections.end(); }
_ZN7llvm_ks11MCAssembler12symbol_beginEv:
  321|  8.98k|  symbol_iterator symbol_begin() { return Symbols.begin(); }
_ZN7llvm_ks11MCAssembler10symbol_endEv:
  324|  8.98k|  symbol_iterator symbol_end() { return Symbols.end(); }
_ZN7llvm_ks11MCAssembler7symbolsEv:
  327|  8.98k|  symbol_range symbols() { return make_range(symbol_begin(), symbol_end()); }
_ZN7llvm_ks11MCAssembler11addFileNameENS_9StringRefE:
  411|  1.57k|  void addFileName(StringRef FileName) {
  412|  1.57k|    if (std::find(FileNames.begin(), FileNames.end(), FileName) ==
  ------------------
  |  Branch (412:9): [True: 810, False: 762]
  ------------------
  413|  1.57k|        FileNames.end())
  414|    810|      FileNames.push_back(FileName);
  415|  1.57k|  }

_ZN7llvm_ks7MCCVLocC2Ejjjjbb:
   43|  20.9k|      : FunctionId(functionid), FileNum(fileNum), Line(line), Column(column),
   44|  20.9k|        PrologueEnd(prologueend), IsStmt(isstmt) {}

_ZN7llvm_ks9MCContext13ELFSectionKeyC2ENS_9StringRefES2_j:
  183|   910k|          : SectionName(SectionName), GroupName(GroupName), UniqueID(UniqueID) {
  184|   910k|      }
_ZNK7llvm_ks9MCContext13ELFSectionKeyltERKS1_:
  185|  6.16M|      bool operator<(const ELFSectionKey &Other) const {
  186|  6.16M|        if (SectionName != Other.SectionName)
  ------------------
  |  Branch (186:13): [True: 6.16M, False: 90]
  ------------------
  187|  6.16M|          return SectionName < Other.SectionName;
  188|     90|        if (GroupName != Other.GroupName)
  ------------------
  |  Branch (188:13): [True: 0, False: 90]
  ------------------
  189|      0|          return GroupName < Other.GroupName;
  190|     90|        return UniqueID < Other.UniqueID;
  191|     90|      }
_ZNK7llvm_ks9MCContext10getAsmInfoEv:
  242|  77.1M|    const MCAsmInfo *getAsmInfo() const { return MAI; }
_ZNK7llvm_ks9MCContext15getRegisterInfoEv:
  244|  51.7k|    const MCRegisterInfo *getRegisterInfo() const { return MRI; }
_ZNK7llvm_ks9MCContext17getObjectFileInfoEv:
  246|   606k|    const MCObjectFileInfo *getObjectFileInfo() const { return MOFI; }
_ZN7llvm_ks9MCContext14getBaseAddressEv:
  251|  9.33k|    uint64_t getBaseAddress() { return BaseAddress; }
_ZN7llvm_ks9MCContext13getELFSectionENS_9StringRefEjj:
  331|   595k|                                unsigned Flags) {
  332|   595k|      return getELFSection(Section, Type, Flags, nullptr);
  333|   595k|    }
_ZN7llvm_ks9MCContext13getELFSectionENS_9StringRefEjjPKc:
  336|   805k|                                unsigned Flags, const char *BeginSymName) {
  337|   805k|      return getELFSection(Section, Type, Flags, 0, "", BeginSymName);
  338|   805k|    }
_ZN7llvm_ks9MCContext13getELFSectionENS_9StringRefEjjjS1_:
  342|   104k|                                StringRef Group) {
  343|   104k|      return getELFSection(Section, Type, Flags, EntrySize, Group, nullptr);
  344|   104k|    }
_ZN7llvm_ks9MCContext13getELFSectionENS_9StringRefEjjjS1_PKc:
  348|   910k|                                StringRef Group, const char *BeginSymName) {
  349|   910k|      return getELFSection(Section, Type, Flags, EntrySize, Group, ~0,
  350|   910k|                           BeginSymName);
  351|   910k|    }
_ZN7llvm_ks9MCContext19getMCDwarfLineTableEj:
  435|     60|    MCDwarfLineTable &getMCDwarfLineTable(unsigned CUID) {
  436|     60|      return MCDwarfLineTablesCUMap[CUID];
  437|     60|    }
_ZN7llvm_ks9MCContext15getMCDwarfFilesEj:
  445|     60|    const SmallVectorImpl<MCDwarfFile> &getMCDwarfFiles(unsigned CUID = 0) {
  446|     60|      return getMCDwarfLineTable(CUID).getMCDwarfFiles();
  447|     60|    }
_ZN7llvm_ks9MCContext22getGenDwarfForAssemblyEv:
  486|  20.9k|    bool getGenDwarfForAssembly() { return GenDwarfForAssembly; }
_ZN7llvm_ks9MCContext8allocateEjj:
  555|  1.80M|    void *allocate(unsigned Size, unsigned Align = 8) {
  556|  1.80M|      return Allocator.Allocate(Size, Align);
  557|  1.80M|    }
_ZnwmRN7llvm_ks9MCContextEm:
  596|  1.44M|                          size_t Alignment = 8) LLVM_NOEXCEPT {
  597|  1.44M|  return C.allocate(Bytes, Alignment);
  598|  1.44M|}

_ZN7llvm_ks10MCDwarfLocC2Ejjjjjj:
   78|  41.9k|      : FileNum(fileNum), Line(line), Column(column), Flags(flags), Isa(isa),
   79|  41.9k|        Discriminator(discriminator) {}
_ZN7llvm_ks22MCDwarfLineTableHeaderC2Ev:
  205|     60|  MCDwarfLineTableHeader() : Label(nullptr) {}
_ZN7llvm_ks16MCDwarfLineTable15getMCDwarfFilesEv:
  265|     60|  SmallVectorImpl<MCDwarfFile> &getMCDwarfFiles() {
  266|     60|    return Header.MCDwarfFiles;
  267|     60|  }

_ZN7llvm_ks23MCELFObjectTargetWriter8getOSABIENS_6Triple6OSTypeE:
   54|  20.9k|  static uint8_t getOSABI(Triple::OSType OSType) {
   55|  20.9k|    switch (OSType) {
   56|      0|      case Triple::CloudABI:
  ------------------
  |  Branch (56:7): [True: 0, False: 20.9k]
  ------------------
   57|      0|        return ELF::ELFOSABI_CLOUDABI;
   58|      0|      case Triple::PS4:
  ------------------
  |  Branch (58:7): [True: 0, False: 20.9k]
  ------------------
   59|      0|      case Triple::FreeBSD:
  ------------------
  |  Branch (59:7): [True: 0, False: 20.9k]
  ------------------
   60|      0|        return ELF::ELFOSABI_FREEBSD;
   61|  20.9k|      default:
  ------------------
  |  Branch (61:7): [True: 20.9k, False: 0]
  ------------------
   62|  20.9k|        return ELF::ELFOSABI_NONE;
   63|  20.9k|    }
   64|  20.9k|  }
_ZN7llvm_ks18ELFRelocationEntryC2EmPKNS_11MCSymbolELFEjm:
   37|  14.5k|      : Offset(Offset), Symbol(Symbol), Type(Type), Addend(Addend) {}
_ZN7llvm_ks23MCELFObjectTargetWriterD2Ev:
   66|  20.9k|  virtual ~MCELFObjectTargetWriter() {}
_ZNK7llvm_ks23MCELFObjectTargetWriter7is64BitEv:
   82|    404|  bool is64Bit() const { return Is64Bit; }

_ZN7llvm_ks13MCELFStreamerC2ERNS_9MCContextERNS_12MCAsmBackendERNS_17raw_pwrite_streamEPNS_13MCCodeEmitterE:
   32|  20.9k|      : MCObjectStreamer(Context, TAB, OS, Emitter), SeenIdent(false) {}

_ZN7llvm_ks6MCExprC2ENS0_8ExprKindE:
   59|  1.44M|  explicit MCExpr(ExprKind Kind) : Kind(Kind) {}
_ZNK7llvm_ks6MCExpr7getKindEv:
   70|  6.78M|  ExprKind getKind() const { return Kind; }
_ZN7llvm_ks14MCConstantExprC2El:
  134|   595k|      : MCExpr(MCExpr::Constant), Value(Value) {}
_ZNK7llvm_ks14MCConstantExpr8getValueEv:
  146|   679k|  int64_t getValue() const { return Value; }
_ZN7llvm_ks14MCConstantExpr7classofEPKNS_6MCExprE:
  150|  1.59M|  static bool classof(const MCExpr *E) {
  151|  1.59M|    return E->getKind() == MCExpr::Constant;
  152|  1.59M|  }
_ZN7llvm_ks15MCSymbolRefExpr6createEPKNS_8MCSymbolERNS_9MCContextE:
  320|  1.59k|  static const MCSymbolRefExpr *create(const MCSymbol *Symbol, MCContext &Ctx) {
  321|  1.59k|    return MCSymbolRefExpr::create(Symbol, VK_None, Ctx);
  322|  1.59k|  }
_ZNK7llvm_ks15MCSymbolRefExpr9getSymbolEv:
  333|  1.34M|  const MCSymbol &getSymbol() const { return *Symbol; }
_ZNK7llvm_ks15MCSymbolRefExpr7getKindEv:
  335|   318k|  VariantKind getKind() const { return Kind; }
_ZNK7llvm_ks15MCSymbolRefExpr24hasSubsectionsViaSymbolsEv:
  339|  2.08k|  bool hasSubsectionsViaSymbols() const { return HasSubsectionsViaSymbols; }
_ZN7llvm_ks15MCSymbolRefExpr7classofEPKNS_6MCExprE:
  351|  1.22M|  static bool classof(const MCExpr *E) {
  352|  1.22M|    return E->getKind() == MCExpr::SymbolRef;
  353|  1.22M|  }
_ZN7llvm_ks11MCUnaryExprC2ENS0_6OpcodeEPKNS_6MCExprE:
  371|   263k|      : MCExpr(MCExpr::Unary), Op(Op), Expr(Expr) {}
_ZN7llvm_ks11MCUnaryExpr10createLNotEPKNS_6MCExprERNS_9MCContextE:
  379|  4.16k|  static const MCUnaryExpr *createLNot(const MCExpr *Expr, MCContext &Ctx) {
  380|  4.16k|    return create(LNot, Expr, Ctx);
  381|  4.16k|  }
_ZN7llvm_ks11MCUnaryExpr11createMinusEPKNS_6MCExprERNS_9MCContextE:
  382|   162k|  static const MCUnaryExpr *createMinus(const MCExpr *Expr, MCContext &Ctx) {
  383|   162k|    return create(Minus, Expr, Ctx);
  384|   162k|  }
_ZN7llvm_ks11MCUnaryExpr9createNotEPKNS_6MCExprERNS_9MCContextE:
  385|  76.1k|  static const MCUnaryExpr *createNot(const MCExpr *Expr, MCContext &Ctx) {
  386|  76.1k|    return create(Not, Expr, Ctx);
  387|  76.1k|  }
_ZN7llvm_ks11MCUnaryExpr10createPlusEPKNS_6MCExprERNS_9MCContextE:
  388|  19.9k|  static const MCUnaryExpr *createPlus(const MCExpr *Expr, MCContext &Ctx) {
  389|  19.9k|    return create(Plus, Expr, Ctx);
  390|  19.9k|  }
_ZNK7llvm_ks11MCUnaryExpr9getOpcodeEv:
  397|   315k|  Opcode getOpcode() const { return Op; }
_ZNK7llvm_ks11MCUnaryExpr10getSubExprEv:
  400|   452k|  const MCExpr *getSubExpr() const { return Expr; }
_ZN7llvm_ks11MCUnaryExpr7classofEPKNS_6MCExprE:
  404|   450k|  static bool classof(const MCExpr *E) {
  405|   450k|    return E->getKind() == MCExpr::Unary;
  406|   450k|  }
_ZN7llvm_ks12MCBinaryExprC2ENS0_6OpcodeEPKNS_6MCExprES4_:
  443|   205k|      : MCExpr(MCExpr::Binary), Op(Op), LHS(LHS), RHS(RHS) {}
_ZN7llvm_ks12MCBinaryExpr9createAddEPKNS_6MCExprES3_RNS_9MCContextE:
  452|     24|                                       MCContext &Ctx) {
  453|     24|    return create(Add, LHS, RHS, Ctx);
  454|     24|  }
_ZNK7llvm_ks12MCBinaryExpr9getOpcodeEv:
  533|   313k|  Opcode getOpcode() const { return Op; }
_ZNK7llvm_ks12MCBinaryExpr6getLHSEv:
  536|   607k|  const MCExpr *getLHS() const { return LHS; }
_ZNK7llvm_ks12MCBinaryExpr6getRHSEv:
  539|   573k|  const MCExpr *getRHS() const { return RHS; }
_ZN7llvm_ks12MCBinaryExpr7classofEPKNS_6MCExprE:
  543|   604k|  static bool classof(const MCExpr *E) {
  544|   604k|    return E->getKind() == MCExpr::Binary;
  545|   604k|  }
_ZN7llvm_ks12MCTargetExprC2Ev:
  555|     11|  MCTargetExpr() : MCExpr(Target) {}

_ZN7llvm_ks7MCFixup6createEjPKNS_6MCExprENS_11MCFixupKindENS_5SMLocE:
   87|   117k|                        MCFixupKind Kind, SMLoc Loc = SMLoc()) {
   88|   117k|    assert(unsigned(Kind) < MaxTargetFixupKind && "Kind out of range!");
  ------------------
  |  Branch (88:5): [True: 117k, False: 0]
  |  Branch (88:5): [True: 117k, Folded]
  |  Branch (88:5): [True: 117k, False: 0]
  ------------------
   89|   117k|    MCFixup FI;
   90|   117k|    FI.Value = Value;
   91|   117k|    FI.Offset = Offset;
   92|   117k|    FI.Kind = unsigned(Kind);
   93|   117k|    FI.Loc = Loc;
   94|   117k|    return FI;
   95|   117k|  }
_ZNK7llvm_ks7MCFixup7getKindEv:
  119|   337k|  MCFixupKind getKind() const { return MCFixupKind(Kind); }
_ZNK7llvm_ks7MCFixup9getOffsetEv:
  121|  63.2k|  uint32_t getOffset() const { return Offset; }
_ZN7llvm_ks7MCFixup9setOffsetEj:
  122|  11.1k|  void setOffset(uint32_t Value) { Offset = Value; }
_ZNK7llvm_ks7MCFixup8getValueEv:
  124|  43.2k|  const MCExpr *getValue() const { return Value; }
_ZN7llvm_ks7MCFixup14getKindForSizeEjb:
  128|   103k|  static MCFixupKind getKindForSize(unsigned Size, bool isPCRel) {
  129|   103k|    switch (Size) {
  130|      0|    default: llvm_unreachable("Invalid generic fixup size!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (130:5): [True: 0, False: 103k]
  ------------------
  131|    656|    case 1: return isPCRel ? FK_PCRel_1 : FK_Data_1;
  ------------------
  |  Branch (131:5): [True: 656, False: 103k]
  |  Branch (131:20): [True: 0, False: 656]
  ------------------
  132|    190|    case 2: return isPCRel ? FK_PCRel_2 : FK_Data_2;
  ------------------
  |  Branch (132:5): [True: 190, False: 103k]
  |  Branch (132:20): [True: 0, False: 190]
  ------------------
  133|   102k|    case 4: return isPCRel ? FK_PCRel_4 : FK_Data_4;
  ------------------
  |  Branch (133:5): [True: 102k, False: 1.06k]
  |  Branch (133:20): [True: 0, False: 102k]
  ------------------
  134|    216|    case 8: return isPCRel ? FK_PCRel_8 : FK_Data_8;
  ------------------
  |  Branch (134:5): [True: 216, False: 103k]
  |  Branch (134:20): [True: 0, False: 216]
  ------------------
  135|   103k|    }
  136|   103k|  }
_ZNK7llvm_ks7MCFixup6getLocEv:
  162|  8.67k|  SMLoc getLoc() const { return Loc; }

_ZNK7llvm_ks10MCFragment7getKindEv:
   97|   154M|  FragmentType getKind() const { return Kind; }
_ZNK7llvm_ks10MCFragment9getParentEv:
   99|   885k|  MCSection *getParent() const { return Parent; }
_ZN7llvm_ks10MCFragment9setParentEPNS_9MCSectionE:
  100|  56.0k|  void setParent(MCSection *Value) { Parent = Value; }
_ZNK7llvm_ks10MCFragment14getLayoutOrderEv:
  105|   530k|  unsigned getLayoutOrder() const { return LayoutOrder; }
_ZN7llvm_ks10MCFragment14setLayoutOrderEj:
  106|  52.1k|  void setLayoutOrder(unsigned Value) { LayoutOrder = Value; }
_ZNK7llvm_ks10MCFragment16getBundlePaddingEv:
  121|  32.7k|  uint8_t getBundlePadding() const { return BundlePadding; }
_ZNK7llvm_ks10MCFragment7isDummyEv:
  128|   910k|  bool isDummy() const { return Kind == FT_Dummy; }
_ZN7llvm_ks15MCDummyFragmentC2EPNS_9MCSectionE:
  136|   910k|      : MCFragment(FT_Dummy, false, 0, Sec){};
_ZN7llvm_ks17MCEncodedFragmentC2ENS_10MCFragment12FragmentTypeEbPNS_9MCSectionE:
  147|  21.1k|      : MCFragment(FType, HasInstructions, 0, Sec) {}
_ZN7llvm_ks17MCEncodedFragment7classofEPKNS_10MCFragmentE:
  150|  48.2k|  static bool classof(const MCFragment *F) {
  151|  48.2k|    MCFragment::FragmentType Kind = F->getKind();
  152|  48.2k|    switch (Kind) {
  153|  26.6k|    default:
  ------------------
  |  Branch (153:5): [True: 26.6k, False: 21.5k]
  ------------------
  154|  26.6k|      return false;
  155|  2.28k|    case MCFragment::FT_Relaxable:
  ------------------
  |  Branch (155:5): [True: 2.28k, False: 45.9k]
  ------------------
  156|  2.28k|    case MCFragment::FT_CompactEncodedInst:
  ------------------
  |  Branch (156:5): [True: 0, False: 48.2k]
  ------------------
  157|  21.5k|    case MCFragment::FT_Data:
  ------------------
  |  Branch (157:5): [True: 19.2k, False: 28.9k]
  ------------------
  158|  21.5k|      return true;
  159|  48.2k|    }
  160|  48.2k|  }
_ZN7llvm_ks14MCDataFragmentC2EPNS_9MCSectionE:
  222|  18.4k|      : MCEncodedFragmentWithFixups<32, 4>(FT_Data, false, Sec) {}
_ZN7llvm_ks14MCDataFragment18setHasInstructionsEb:
  224|  26.6k|  void setHasInstructions(bool V) { HasInstructions = V; }
_ZN7llvm_ks14MCDataFragment7classofEPKNS_10MCFragmentE:
  226|   154M|  static bool classof(const MCFragment *F) {
  227|   154M|    return F->getKind() == MCFragment::FT_Data;
  228|   154M|  }
_ZN7llvm_ks28MCCompactEncodedInstFragment7classofEPKNS_10MCFragmentE:
  242|  10.7k|  static bool classof(const MCFragment *F) {
  243|  10.7k|    return F->getKind() == MCFragment::FT_CompactEncodedInst;
  244|  10.7k|  }
_ZN7llvm_ks19MCRelaxableFragmentC2ERKNS_6MCInstERKNS_15MCSubtargetInfoEPNS_9MCSectionE:
  261|  2.66k|      : MCEncodedFragmentWithFixups(FT_Relaxable, true, Sec),
  262|  2.66k|        Inst(Inst), STI(STI) {}
_ZNK7llvm_ks19MCRelaxableFragment7getInstEv:
  264|  2.38k|  const MCInst &getInst() const { return Inst; }
_ZN7llvm_ks19MCRelaxableFragment7setInstERKNS_6MCInstE:
  265|    171|  void setInst(const MCInst &Value) { Inst = Value; }
_ZN7llvm_ks19MCRelaxableFragment16getSubtargetInfoEv:
  267|    171|  const MCSubtargetInfo &getSubtargetInfo() { return STI; }
_ZN7llvm_ks19MCRelaxableFragment7classofEPKNS_10MCFragmentE:
  269|  13.5k|  static bool classof(const MCFragment *F) {
  270|  13.5k|    return F->getKind() == MCFragment::FT_Relaxable;
  271|  13.5k|  }
_ZN7llvm_ks15MCAlignFragmentC2EjljjPNS_9MCSectionE:
  297|  10.6k|      : MCFragment(FT_Align, false, 0, Sec), Alignment(Alignment),
  298|  10.6k|        EmitNops(false), Value(Value),
  299|  10.6k|        ValueSize(ValueSize), MaxBytesToEmit(MaxBytesToEmit) {}
_ZNK7llvm_ks15MCAlignFragment12getAlignmentEv:
  304|  18.7k|  unsigned getAlignment() const { return Alignment; }
_ZNK7llvm_ks15MCAlignFragment8getValueEv:
  306|  8.46M|  int64_t getValue() const { return Value; }
_ZNK7llvm_ks15MCAlignFragment12getValueSizeEv:
  308|  8.49M|  unsigned getValueSize() const { return ValueSize; }
_ZNK7llvm_ks15MCAlignFragment17getMaxBytesToEmitEv:
  310|  18.7k|  unsigned getMaxBytesToEmit() const { return MaxBytesToEmit; }
_ZNK7llvm_ks15MCAlignFragment11hasEmitNopsEv:
  312|  9.60k|  bool hasEmitNops() const { return EmitNops; }
_ZN7llvm_ks15MCAlignFragment11setEmitNopsEb:
  313|  4.08k|  void setEmitNops(bool Value) { EmitNops = Value; }
_ZN7llvm_ks15MCAlignFragment7classofEPKNS_10MCFragmentE:
  317|  42.1k|  static bool classof(const MCFragment *F) {
  318|  42.1k|    return F->getKind() == MCFragment::FT_Align;
  319|  42.1k|  }
_ZN7llvm_ks14MCFillFragmentC2EhmPNS_9MCSectionE:
  332|  2.47k|      : MCFragment(FT_Fill, false, 0, Sec), Value(Value), Size(Size) {}
_ZNK7llvm_ks14MCFillFragment8getValueEv:
  334|  2.05k|  uint8_t getValue() const { return Value; }
_ZNK7llvm_ks14MCFillFragment7getSizeEv:
  335|  6.42k|  uint64_t getSize() const { return Size; }
_ZN7llvm_ks14MCFillFragment7classofEPKNS_10MCFragmentE:
  337|  8.93k|  static bool classof(const MCFragment *F) {
  338|  8.93k|    return F->getKind() == MCFragment::FT_Fill;
  339|  8.93k|  }
_ZN7llvm_ks13MCOrgFragmentC2ERKNS_6MCExprEaPNS_9MCSectionE:
  352|  21.7k|      : MCFragment(FT_Org, false, 0, Sec), Offset(&Offset), Value(Value) {}
_ZNK7llvm_ks13MCOrgFragment9getOffsetEv:
  357|  35.0k|  const MCExpr &getOffset() const { return *Offset; }
_ZNK7llvm_ks13MCOrgFragment8getValueEv:
  359|   124M|  uint8_t getValue() const { return Value; }
_ZN7llvm_ks13MCOrgFragment7classofEPKNS_10MCFragmentE:
  363|  69.6k|  static bool classof(const MCFragment *F) {
  364|  69.6k|    return F->getKind() == MCFragment::FT_Org;
  365|  69.6k|  }
_ZN7llvm_ks27MCEncodedFragmentWithFixupsILj32ELj4EEC2ENS_10MCFragment12FragmentTypeEbPNS_9MCSectionE:
  195|  18.4k|      : MCEncodedFragmentWithContents<ContentsSize>(FType, HasInstructions,
  196|  18.4k|                                                    Sec) {}
_ZN7llvm_ks29MCEncodedFragmentWithContentsILj32EEC2ENS_10MCFragment12FragmentTypeEbPNS_9MCSectionE:
  174|  18.4k|      : MCEncodedFragment(FType, HasInstructions, Sec) {}
_ZN7llvm_ks29MCEncodedFragmentWithContentsILj32EE11getContentsEv:
  177|   154M|  SmallVectorImpl<char> &getContents() { return Contents; }
_ZN7llvm_ks27MCEncodedFragmentWithFixupsILj32ELj4EE9getFixupsEv:
  202|   124k|  SmallVectorImpl<MCFixup> &getFixups() { return Fixups; }
_ZN7llvm_ks27MCEncodedFragmentWithFixupsILj8ELj1EE9getFixupsEv:
  202|  8.46k|  SmallVectorImpl<MCFixup> &getFixups() { return Fixups; }
_ZNK7llvm_ks29MCEncodedFragmentWithContentsILj32EE11getContentsEv:
  178|  22.3k|  const SmallVectorImpl<char> &getContents() const { return Contents; }
_ZN7llvm_ks27MCEncodedFragmentWithFixupsILj8ELj1EEC2ENS_10MCFragment12FragmentTypeEbPNS_9MCSectionE:
  195|  2.66k|      : MCEncodedFragmentWithContents<ContentsSize>(FType, HasInstructions,
  196|  2.66k|                                                    Sec) {}
_ZN7llvm_ks29MCEncodedFragmentWithContentsILj8EEC2ENS_10MCFragment12FragmentTypeEbPNS_9MCSectionE:
  174|  2.66k|      : MCEncodedFragment(FType, HasInstructions, Sec) {}
_ZN7llvm_ks29MCEncodedFragmentWithContentsILj8EE11getContentsEv:
  177|  3.97k|  SmallVectorImpl<char> &getContents() { return Contents; }
_ZNK7llvm_ks29MCEncodedFragmentWithContentsILj8EE11getContentsEv:
  178|  3.76k|  const SmallVectorImpl<char> &getContents() const { return Contents; }
_ZNK7llvm_ks27MCEncodedFragmentWithFixupsILj8ELj1EE9getFixupsEv:
  203|  1.86k|  const SmallVectorImpl<MCFixup> &getFixups() const { return Fixups; }

_ZN7llvm_ks9MCOperandC2Ev:
   52|   123k|  MCOperand() : Kind(kInvalid), FPImmVal(0.0) {}
_ZNK7llvm_ks9MCOperand5isRegEv:
   55|   112k|  bool isReg() const { return Kind == kRegister; }
_ZNK7llvm_ks9MCOperand5isImmEv:
   56|  93.4k|  bool isImm() const { return Kind == kImmediate; }
_ZNK7llvm_ks9MCOperand7isFPImmEv:
   57|     15|  bool isFPImm() const { return Kind == kFPImmediate; }
_ZNK7llvm_ks9MCOperand6isExprEv:
   58|   175k|  bool isExpr() const { return Kind == kExpr; }
_ZNK7llvm_ks9MCOperand6getRegEv:
   62|  56.8k|  unsigned getReg() const {
   63|  56.8k|    assert(isReg() && "This is not a register operand!");
  ------------------
  |  Branch (63:5): [True: 56.8k, False: 0]
  |  Branch (63:5): [True: 56.8k, Folded]
  |  Branch (63:5): [True: 56.8k, False: 0]
  ------------------
   64|  56.8k|    return RegVal;
   65|  56.8k|  }
_ZNK7llvm_ks9MCOperand6getImmEv:
   73|  51.6k|  int64_t getImm() const {
   74|  51.6k|    assert(isImm() && "This is not an immediate");
  ------------------
  |  Branch (74:5): [True: 51.6k, False: 0]
  |  Branch (74:5): [True: 51.6k, Folded]
  |  Branch (74:5): [True: 51.6k, False: 0]
  ------------------
   75|  51.6k|    return ImmVal;
   76|  51.6k|  }
_ZN7llvm_ks9MCOperand6setImmEl:
   77|    415|  void setImm(int64_t Val) {
   78|    415|    assert(isImm() && "This is not an immediate");
  ------------------
  |  Branch (78:5): [True: 415, False: 0]
  |  Branch (78:5): [True: 415, Folded]
  |  Branch (78:5): [True: 415, False: 0]
  ------------------
   79|    415|    ImmVal = Val;
   80|    415|  }
_ZNK7llvm_ks9MCOperand7getExprEv:
   92|  26.1k|  const MCExpr *getExpr() const {
   93|  26.1k|    assert(isExpr() && "This is not an expression");
  ------------------
  |  Branch (93:5): [True: 26.1k, False: 0]
  |  Branch (93:5): [True: 26.1k, Folded]
  |  Branch (93:5): [True: 26.1k, False: 0]
  ------------------
   94|  26.1k|    return ExprVal;
   95|  26.1k|  }
_ZN7llvm_ks9MCOperand9createRegEj:
  110|  65.9k|  static MCOperand createReg(unsigned Reg) {
  111|  65.9k|    MCOperand Op;
  112|  65.9k|    Op.Kind = kRegister;
  113|  65.9k|    Op.RegVal = Reg;
  114|  65.9k|    return Op;
  115|  65.9k|  }
_ZN7llvm_ks9MCOperand9createImmEl:
  116|  44.0k|  static MCOperand createImm(int64_t Val) {
  117|  44.0k|    MCOperand Op;
  118|  44.0k|    Op.Kind = kImmediate;
  119|  44.0k|    Op.ImmVal = Val;
  120|  44.0k|    return Op;
  121|  44.0k|  }
_ZN7llvm_ks9MCOperand10createExprEPKNS_6MCExprE:
  128|  13.0k|  static MCOperand createExpr(const MCExpr *Val) {
  129|  13.0k|    MCOperand Op;
  130|  13.0k|    Op.Kind = kExpr;
  131|  13.0k|    Op.ExprVal = Val;
  132|  13.0k|    return Op;
  133|  13.0k|  }
_ZN7llvm_ks6MCInstC2Em:
  158|  37.1k|  MCInst(uint64_t addr = 0) : Opcode(0), Address(addr) {}
_ZN7llvm_ks6MCInst9setOpcodeEj:
  160|  35.2k|  void setOpcode(unsigned Op) { Opcode = Op; }
_ZNK7llvm_ks6MCInst9getOpcodeEv:
  161|   315k|  unsigned getOpcode() const { return Opcode; }
_ZN7llvm_ks6MCInst10setAddressEm:
  163|  29.4k|  void setAddress(uint64_t addr) { Address = addr; }
_ZNK7llvm_ks6MCInst10getAddressEv:
  164|  67.2k|  uint64_t getAddress() const { return Address; }
_ZN7llvm_ks6MCInst6setLocENS_5SMLocE:
  166|  29.3k|  void setLoc(SMLoc loc) { Loc = loc; }
_ZNK7llvm_ks6MCInst6getLocEv:
  167|  13.1k|  SMLoc getLoc() const { return Loc; }
_ZNK7llvm_ks6MCInst10getOperandEj:
  169|   108k|  const MCOperand &getOperand(unsigned i) const { return Operands[i]; }
_ZN7llvm_ks6MCInst10getOperandEj:
  170|   174k|  MCOperand &getOperand(unsigned i) { return Operands[i]; }
_ZNK7llvm_ks6MCInst14getNumOperandsEv:
  171|  34.1k|  unsigned getNumOperands() const { return Operands.size(); }
_ZN7llvm_ks6MCInst10addOperandERKNS_9MCOperandE:
  173|   131k|  void addOperand(const MCOperand &Op) { Operands.push_back(Op); }
_ZN7llvm_ks6MCInst5clearEv:
  177|  30.3k|  void clear() { Operands.clear(); }

_ZNK7llvm_ks13MCOperandInfo11isPredicateEv:
   91|  24.5k|  bool isPredicate() const { return Flags & (1 << MCOI::Predicate); }
_ZNK7llvm_ks13MCOperandInfo13isOptionalDefEv:
   94|  1.28k|  bool isOptionalDef() const { return Flags & (1 << MCOI::OptionalDef); }
_ZNK7llvm_ks11MCInstrDesc14getNumOperandsEv:
  203|  9.56k|  unsigned getNumOperands() const { return NumOperands; }
_ZNK7llvm_ks11MCInstrDesc12isPredicableEv:
  238|  19.5k|  bool isPredicable() const { return Flags & (1 << MCID::Predicable); }
_ZNK7llvm_ks11MCInstrDesc7getSizeEv:
  324|  84.0k|  unsigned getSize() const { return Size; }
_ZNK7llvm_ks11MCInstrDesc23findFirstPredOperandIdxEv:
  329|  9.56k|  int findFirstPredOperandIdx() const {
  330|  9.56k|    if (isPredicable()) {
  ------------------
  |  Branch (330:9): [True: 9.56k, False: 0]
  ------------------
  331|  24.5k|      for (unsigned i = 0, e = getNumOperands(); i != e; ++i)
  ------------------
  |  Branch (331:50): [True: 24.5k, False: 0]
  ------------------
  332|  24.5k|        if (OpInfo[i].isPredicate())
  ------------------
  |  Branch (332:13): [True: 9.56k, False: 15.0k]
  ------------------
  333|  9.56k|          return i;
  334|  9.56k|    }
  335|      0|    return -1;
  336|  9.56k|  }

_ZN7llvm_ks11MCInstrInfo15InitMCInstrInfoEPKNS_11MCInstrDescEPKjPKcj:
   34|  20.9k|                       unsigned NO) {
   35|  20.9k|    Desc = D;
   36|  20.9k|    InstrNameIndices = NI;
   37|  20.9k|    InstrNameData = ND;
   38|  20.9k|    NumOpcodes = NO;
   39|  20.9k|  }
_ZNK7llvm_ks11MCInstrInfo3getEj:
   45|   119k|  const MCInstrDesc &get(unsigned Opcode) const {
   46|   119k|    assert(Opcode < NumOpcodes && "Invalid opcode!");
  ------------------
  |  Branch (46:5): [True: 119k, False: 0]
  |  Branch (46:5): [True: 119k, Folded]
  |  Branch (46:5): [True: 119k, False: 0]
  ------------------
   47|   119k|    return Desc[Opcode];
   48|   119k|  }

_ZN7llvm_ks14MCLOHContainerC2Ev:
  128|  20.9k|  MCLOHContainer() : EmitSize(0) {}

_ZNK7llvm_ks16MCObjectFileInfo14getTextSectionEv:
  219|  20.9k|  MCSection *getTextSection() const { return TextSection; }
_ZNK7llvm_ks16MCObjectFileInfo17getObjectFileTypeEv:
  339|   928k|  Environment getObjectFileType() const { return Env; }
_ZNK7llvm_ks16MCObjectFileInfo15getTargetTripleEv:
  352|  1.47k|  const Triple &getTargetTriple() const { return TT; }

_ZN7llvm_ks16MCObjectStreamer6insertEPNS_10MCFragmentE:
   64|  50.4k|  void insert(MCFragment *F) {
   65|  50.4k|    flushPendingLabels(F);
   66|  50.4k|    MCSection *CurSection = getCurrentSectionOnly();
   67|  50.4k|    CurSection->getFragmentList().insert(CurInsertionPoint, F);
   68|  50.4k|    F->setParent(CurSection);
   69|  50.4k|  }
_ZN7llvm_ks16MCObjectStreamer12getAssemblerEv:
   87|   623k|  MCAssembler &getAssembler() { return *Assembler; }

_ZN7llvm_ks14MCObjectWriterC2ERNS_17raw_pwrite_streamEb:
   51|  20.9k|      : OS(&OS), IsLittleEndian(IsLittleEndian) {}
_ZN7llvm_ks14MCObjectWriter9getStreamEv:
   65|  99.1k|  raw_pwrite_stream &getStream() { return *OS; }
_ZN7llvm_ks14MCObjectWriter6write8Eh:
  127|   132M|  void write8(uint8_t Value) { *OS << char(Value); }
_ZN7llvm_ks14MCObjectWriter9writeLE16Et:
  129|  34.0k|  void writeLE16(uint16_t Value) {
  130|  34.0k|    support::endian::Writer<support::little>(*OS).write(Value);
  131|  34.0k|  }
_ZN7llvm_ks14MCObjectWriter9writeLE32Ej:
  133|  10.6M|  void writeLE32(uint32_t Value) {
  134|  10.6M|    support::endian::Writer<support::little>(*OS).write(Value);
  135|  10.6M|  }
_ZN7llvm_ks14MCObjectWriter7write16Et:
  153|  34.0k|  void write16(uint16_t Value) {
  154|  34.0k|    if (IsLittleEndian)
  ------------------
  |  Branch (154:9): [True: 34.0k, False: 0]
  ------------------
  155|  34.0k|      writeLE16(Value);
  156|      0|    else
  157|      0|      writeBE16(Value);
  158|  34.0k|  }
_ZN7llvm_ks14MCObjectWriter7write32Ej:
  160|  10.6M|  void write32(uint32_t Value) {
  161|  10.6M|    if (IsLittleEndian)
  ------------------
  |  Branch (161:9): [True: 10.6M, False: 0]
  ------------------
  162|  10.6M|      writeLE32(Value);
  163|      0|    else
  164|      0|      writeBE32(Value);
  165|  10.6M|  }
_ZN7llvm_ks14MCObjectWriter10WriteZerosEj:
  174|  8.49k|  void WriteZeros(unsigned N) {
  175|  8.49k|    const char Zeros[16] = {0};
  176|       |
  177|   271k|    for (unsigned i = 0, e = N / 16; i != e; ++i)
  ------------------
  |  Branch (177:38): [True: 262k, False: 8.49k]
  ------------------
  178|   262k|      *OS << StringRef(Zeros, 16);
  179|       |
  180|  8.49k|    *OS << StringRef(Zeros, N % 16);
  181|  8.49k|  }
_ZN7llvm_ks14MCObjectWriter10writeBytesERKNS_15SmallVectorImplIcEEj:
  184|  9.27k|                  unsigned ZeroFillSize = 0) {
  185|  9.27k|    writeBytes(StringRef(ByteVec.data(), ByteVec.size()), ZeroFillSize);
  186|  9.27k|  }
_ZN7llvm_ks14MCObjectWriter10writeBytesENS_9StringRefEj:
  188|  1.09M|  void writeBytes(StringRef Str, unsigned ZeroFillSize = 0) {
  189|       |    // TODO: this version may need to go away once all fragment contents are
  190|       |    // converted to SmallVector<char, N>
  191|  1.09M|    assert(
  ------------------
  |  Branch (191:5): [True: 1.09M, False: 0]
  |  Branch (191:5): [True: 0, False: 0]
  |  Branch (191:5): [True: 1.09M, Folded]
  |  Branch (191:5): [True: 1.09M, False: 0]
  ------------------
  192|  1.09M|        (ZeroFillSize == 0 || Str.size() <= ZeroFillSize) &&
  193|  1.09M|        "data size greater than fill size, unexpected large write will occur");
  194|  1.09M|    *OS << Str;
  195|  1.09M|    if (ZeroFillSize)
  ------------------
  |  Branch (195:9): [True: 0, False: 1.09M]
  ------------------
  196|      0|      WriteZeros(ZeroFillSize - Str.size());
  197|  1.09M|  }

_ZN7llvm_ks7AsmCondC2Ev:
   35|  20.9k|  AsmCond() : TheCond(NoCond), CondMet(false), Ignore(false) {}

_ZNK7llvm_ks8AsmLexer6getMAIEv:
   57|  88.3k|  const MCAsmInfo &getMAI() const { return MAI; }

_ZN7llvm_ks8AsmTokenC2Ev:
   65|  21.3k|  AsmToken() {}
_ZN7llvm_ks8AsmTokenC2ENS0_9TokenKindENS_9StringRefENS_5APIntE:
   67|   797k|      : Kind(Kind), Str(Str), IntVal(IntVal) {}
_ZN7llvm_ks8AsmTokenC2ENS0_9TokenKindENS_9StringRefEl:
   69|  14.8M|      : Kind(Kind), Str(Str), IntVal(64, IntVal, true) {}
_ZNK7llvm_ks8AsmToken7getKindEv:
   71|  4.27M|  TokenKind getKind() const { return Kind; }
_ZNK7llvm_ks8AsmToken2isENS0_9TokenKindE:
   72|  40.7M|  bool is(TokenKind K) const { return Kind == K; }
_ZNK7llvm_ks8AsmToken5isNotENS0_9TokenKindE:
   73|  20.9M|  bool isNot(TokenKind K) const { return Kind != K; }
_ZNK7llvm_ks8AsmToken17getStringContentsERb:
   80|  13.4k|  StringRef getStringContents(bool &valid) const {
   81|       |    //assert(Kind == String && "This token isn't a string!");
   82|  13.4k|    if (Kind != String) {
  ------------------
  |  Branch (82:9): [True: 0, False: 13.4k]
  ------------------
   83|      0|        valid = false;
   84|      0|        return nullptr;
   85|      0|    }
   86|  13.4k|    valid = true;
   87|  13.4k|    return Str.slice(1, Str.size() - 1);
   88|  13.4k|  }
_ZNK7llvm_ks8AsmToken13getIdentifierEv:
   94|  2.12M|  StringRef getIdentifier() const {
   95|  2.12M|    if (Kind == Identifier)
  ------------------
  |  Branch (95:9): [True: 2.12M, False: 4.29k]
  ------------------
   96|  2.12M|      return getString();
   97|  4.29k|    bool valid;
   98|  4.29k|    return getStringContents(valid);
   99|  2.12M|  }
_ZNK7llvm_ks8AsmToken9getStringEv:
  106|  2.32M|  StringRef getString() const { return Str; }
_ZNK7llvm_ks8AsmToken9getIntValERb:
  111|   313k|  int64_t getIntVal(bool &valid) const {
  112|       |    //assert(Kind == Integer && "This token isn't an integer!");
  113|   313k|    if (Kind != Integer) {
  ------------------
  |  Branch (113:9): [True: 0, False: 313k]
  ------------------
  114|      0|        valid = false;
  115|      0|        return -1;
  116|      0|    }
  117|   313k|    valid = true;
  118|   313k|    return IntVal.getZExtValue();
  119|   313k|  }
_ZNK7llvm_ks8AsmToken11getAPIntValERb:
  121|  1.10k|  APInt getAPIntVal(bool &valid) const {
  122|       |    //assert((Kind == Integer || Kind == BigNum) &&
  123|       |    //       "This token isn't an integer!");
  124|  1.10k|    if (Kind != Integer && Kind != BigNum) {
  ------------------
  |  Branch (124:9): [True: 296, False: 813]
  |  Branch (124:28): [True: 0, False: 296]
  ------------------
  125|      0|        valid = false;
  126|       |        //return APInt(-1);
  127|      0|    }
  128|  1.10k|    valid = true;
  129|  1.10k|    return IntVal;
  130|  1.10k|  }
_ZN7llvm_ks10MCAsmLexer8SetErrorENS_5SMLocERKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE:
  154|  15.4k|  void SetError(SMLoc errLoc, const std::string &err) {
  155|  15.4k|    ErrLoc = errLoc;
  156|  15.4k|    Err = err;
  157|  15.4k|  }
_ZN7llvm_ks10MCAsmLexer3LexEv:
  166|  15.5M|  const AsmToken &Lex() {
  167|  15.5M|    assert(!CurTok.empty());
  ------------------
  |  Branch (167:5): [True: 15.5M, False: 0]
  ------------------
  168|  15.5M|    CurTok.erase(CurTok.begin());
  169|  15.5M|    if (CurTok.empty())
  ------------------
  |  Branch (169:9): [True: 15.5M, False: 0]
  ------------------
  170|  15.5M|      CurTok.emplace_back(LexToken());
  171|  15.5M|    return CurTok.front();
  172|  15.5M|  }
_ZNK7llvm_ks10MCAsmLexer6getTokEv:
  184|   101M|  const AsmToken &getTok() const {
  185|   101M|    return CurTok[0];
  186|   101M|  }
_ZN7llvm_ks10MCAsmLexer7peekTokEb:
  189|  15.4k|  const AsmToken peekTok(bool ShouldSkipSpace = true) {
  190|  15.4k|    AsmToken Tok;
  191|       |
  192|  15.4k|    MutableArrayRef<AsmToken> Buf(Tok);
  193|  15.4k|    if (peekTokens(Buf, ShouldSkipSpace) != 1)
  ------------------
  |  Branch (193:9): [True: 5, False: 15.4k]
  ------------------
  194|      5|        return AsmToken(AsmToken::Error, nullptr);
  195|       |
  196|  15.4k|    return Tok;
  197|  15.4k|  }
_ZN7llvm_ks10MCAsmLexer9getErrLocEv:
  204|  15.4k|  SMLoc getErrLoc() {
  205|  15.4k|    return ErrLoc;
  206|  15.4k|  }
_ZN7llvm_ks10MCAsmLexer6getErrEv:
  209|  15.4k|  const std::string &getErr() {
  210|  15.4k|    return Err;
  211|  15.4k|  }
_ZNK7llvm_ks10MCAsmLexer7getKindEv:
  214|  4.27M|  AsmToken::TokenKind getKind() const { return getTok().getKind(); }
_ZNK7llvm_ks10MCAsmLexer2isENS_8AsmToken9TokenKindE:
  217|  24.9M|  bool is(AsmToken::TokenKind K) const { return getTok().is(K); }
_ZNK7llvm_ks10MCAsmLexer5isNotENS_8AsmToken9TokenKindE:
  220|  20.7M|  bool isNot(AsmToken::TokenKind K) const { return getTok().isNot(K); }
_ZN7llvm_ks10MCAsmLexer12setSkipSpaceEb:
  223|   272k|  void setSkipSpace(bool val) { SkipSpace = val; }

_ZNK7llvm_ks11MCAsmParser8getLexerEv:
   93|  50.5M|  const MCAsmLexer &getLexer() const {
   94|  50.5M|    return const_cast<MCAsmParser*>(this)->getLexer();
   95|  50.5M|  }
_ZNK7llvm_ks11MCAsmParser15getTargetParserEv:
  102|  1.02M|  MCTargetAsmParser &getTargetParser() const { return *TargetParser; }

_ZN7llvm_ks20MCAsmParserExtension10getContextEv:
   54|   636k|  MCContext &getContext() { return getParser().getContext(); }
_ZN7llvm_ks20MCAsmParserExtension8getLexerEv:
   56|   603k|  MCAsmLexer &getLexer() { return getParser().getLexer(); }
_ZN7llvm_ks20MCAsmParserExtension9getParserEv:
   61|  3.60M|  MCAsmParser &getParser() { return *Parser; }
_ZN7llvm_ks20MCAsmParserExtension11getStreamerEv:
   67|  4.11k|  MCStreamer &getStreamer() { return getParser().getStreamer(); }
_ZN7llvm_ks20MCAsmParserExtension7WarningENS_5SMLocERKNS_5TwineE:
   68|    663|  bool Warning(SMLoc L, const Twine &Msg) {
   69|    663|    return getParser().Warning(L, Msg);
   70|    663|  }
_ZN7llvm_ks20MCAsmParserExtension5ErrorENS_5SMLocERKNS_5TwineE:
   71|    210|  bool Error(SMLoc L, const Twine &Msg) {
   72|    210|    return getParser().Error(L, Msg);
   73|    210|  }
_ZN7llvm_ks20MCAsmParserExtension8TokErrorERKNS_5TwineE:
   77|    820|  bool TokError(const Twine &Msg) {
   78|    820|    return getParser().TokError(Msg);
   79|    820|  }
_ZN7llvm_ks20MCAsmParserExtension3LexEv:
   81|  6.17k|  const AsmToken &Lex() { return getParser().Lex(); }
_ZNK7llvm_ks20MCAsmParserExtension21HasBracketExpressionsEv:
   85|    294|  bool HasBracketExpressions() const { return BracketExpressionsSupported; }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_18parseDirectiveDescES5_S6_EEEEbPS0_S5_S6_:
   36|     70|                              SMLoc DirectiveLoc) {
   37|     70|    T *Obj = static_cast<T*>(Target);
   38|     70|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|     70|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_18parseDirectiveLsymES5_S6_EEEEbPS0_S5_S6_:
   36|     57|                              SMLoc DirectiveLoc) {
   37|     57|    T *Obj = static_cast<T*>(Target);
   38|     57|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|     57|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_24parseDirectiveDumpOrLoadES5_S6_EEEEbPS0_S5_S6_:
   36|    673|                              SMLoc DirectiveLoc) {
   37|    673|    T *Obj = static_cast<T*>(Target);
   38|    673|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|    673|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_21parseDirectiveSectionES5_S6_EEEEbPS0_S5_S6_:
   36|  1.57k|                              SMLoc DirectiveLoc) {
   37|  1.57k|    T *Obj = static_cast<T*>(Target);
   38|  1.57k|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|  1.57k|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_18parseDirectiveTBSSES5_S6_EEEEbPS0_S5_S6_:
   36|    902|                              SMLoc DirectiveLoc) {
   37|    902|    T *Obj = static_cast<T*>(Target);
   38|    902|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|    902|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_24parseSectionDirectiveBssES5_S6_EEEEbPS0_S5_S6_:
   36|    416|                              SMLoc DirectiveLoc) {
   37|    416|    T *Obj = static_cast<T*>(Target);
   38|    416|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|    416|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_26parseSectionDirectiveConstES5_S6_EEEEbPS0_S5_S6_:
   36|    277|                              SMLoc DirectiveLoc) {
   37|    277|    T *Obj = static_cast<T*>(Target);
   38|    277|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|    277|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_25parseSectionDirectiveDataES5_S6_EEEEbPS0_S5_S6_:
   36|    556|                              SMLoc DirectiveLoc) {
   37|    556|    T *Obj = static_cast<T*>(Target);
   38|    556|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|    556|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_25parseSectionDirectiveDyldES5_S6_EEEEbPS0_S5_S6_:
   36|     11|                              SMLoc DirectiveLoc) {
   37|     11|    T *Obj = static_cast<T*>(Target);
   38|     11|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|     11|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_26parseSectionDirectiveTDataES5_S6_EEEEbPS0_S5_S6_:
   36|      1|                              SMLoc DirectiveLoc) {
   37|      1|    T *Obj = static_cast<T*>(Target);
   38|      1|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|      1|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_25parseSectionDirectiveTextES5_S6_EEEEbPS0_S5_S6_:
   36|      1|                              SMLoc DirectiveLoc) {
   37|      1|    T *Obj = static_cast<T*>(Target);
   38|      1|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|      1|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_24parseSectionDirectiveTLVES5_S6_EEEEbPS0_S5_S6_:
   36|      2|                              SMLoc DirectiveLoc) {
   37|      2|    T *Obj = static_cast<T*>(Target);
   38|      2|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|      2|  }
DarwinAsmParser.cpp:_ZN7llvm_ks20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserETnMT_FbNS_9StringRefENS_5SMLocEEXadL_ZNS3_26parseSectionDirectiveIdentES5_S6_EEEEbPS0_S5_S6_:
   36|    211|                              SMLoc DirectiveLoc) {
   37|    211|    T *Obj = static_cast<T*>(Target);
   38|    211|    return (Obj->*Handler)(Directive, DirectiveLoc);
   39|    211|  }

_ZN7llvm_ks18MCParsedAsmOperandD2Ev:
   43|   217k|  virtual ~MCParsedAsmOperand() {}
_ZN7llvm_ks18MCParsedAsmOperandC2Ev:
   40|   217k|  MCParsedAsmOperand() = default;
_ZN7llvm_ks18MCParsedAsmOperandC2ERKS0_:
   38|     25|  MCParsedAsmOperand(const MCParsedAsmOperand &RHS) = default;
_ZN7llvm_ks18MCParsedAsmOperandaSERKS0_:
   39|     50|  MCParsedAsmOperand &operator=(const MCParsedAsmOperand &) = default;

_ZN7llvm_ks20ParseInstructionInfoC2EPNS_15SmallVectorImplINS_10AsmRewriteEEE:
   81|  51.4k|    : AsmRewrites(rewrites) {}
_ZNK7llvm_ks17MCTargetAsmParser20getAvailableFeaturesEv:
  129|   191k|  uint64_t getAvailableFeatures() const { return AvailableFeatures; }
_ZN7llvm_ks17MCTargetAsmParser20setAvailableFeaturesEm:
  131|  48.5k|  void setAvailableFeatures(uint64_t Value) { AvailableFeatures = Value; }
_ZNK7llvm_ks17MCTargetAsmParser16getTargetOptionsEv:
  137|  28.3k|  MCTargetOptions getTargetOptions() const { return MCOptions; }
_ZN7llvm_ks17MCTargetAsmParser16ParseInstructionERNS_20ParseInstructionInfoENS_9StringRefENS_8AsmTokenERNS_15SmallVectorImplINSt3__110unique_ptrINS_18MCParsedAsmOperandENS6_14default_deleteIS8_EEEEEERj:
  165|  51.4k|                                AsmToken Token, OperandVector &Operands, unsigned int &ErrorCode) {
  166|  51.4k|    return ParseInstruction(Info, Name, Token.getLoc(), Operands, ErrorCode);
  167|  51.4k|  }
_ZN7llvm_ks17MCTargetAsmParser20equalIsAsmAssignmentEv:
  214|   326k|  virtual bool equalIsAsmAssignment() { return true; };
_ZN7llvm_ks17MCTargetAsmParser7isLabelERNS_8AsmTokenERb:
  216|    523|  virtual bool isLabel(AsmToken &Token, bool &valid) { valid = true; return true; };

_ZNK7llvm_ks15MCRegisterClass8containsEj:
   67|  4.09k|  bool contains(unsigned Reg) const {
   68|  4.09k|    unsigned InByte = Reg % 8;
   69|  4.09k|    unsigned Byte = Reg / 8;
   70|  4.09k|    if (Byte >= RegSetSize)
  ------------------
  |  Branch (70:9): [True: 675, False: 3.41k]
  ------------------
   71|    675|      return false;
   72|  3.41k|    return (RegSet[Byte] & (1 << InByte)) != 0;
   73|  4.09k|  }
_ZN7llvm_ks14MCRegisterInfo16DiffListIteratorC2Ev:
  197|    115|    DiffListIterator() : Val(0), List(nullptr) {}
_ZN7llvm_ks14MCRegisterInfo16DiffListIterator4initEtPKt:
  202|    115|    void init(MCPhysReg InitVal, const MCPhysReg *DiffList) {
  203|    115|      Val = InitVal;
  204|    115|      List = DiffList;
  205|    115|    }
_ZN7llvm_ks14MCRegisterInfo16DiffListIterator7advanceEv:
  210|    143|    unsigned advance() {
  211|    143|      assert(isValid() && "Cannot move off the end of the list.");
  ------------------
  |  Branch (211:7): [True: 143, False: 0]
  |  Branch (211:7): [True: 143, Folded]
  |  Branch (211:7): [True: 143, False: 0]
  ------------------
  212|    143|      MCPhysReg D = *List++;
  213|    143|      Val += D;
  214|    143|      return D;
  215|    143|    }
_ZNK7llvm_ks14MCRegisterInfo16DiffListIterator7isValidEv:
  220|    286|    bool isValid() const { return List; }
_ZNK7llvm_ks14MCRegisterInfo16DiffListIteratordeEv:
  223|    200|    unsigned operator*() const { return Val; }
_ZN7llvm_ks14MCRegisterInfo16DiffListIteratorppEv:
  226|    143|    void operator++() {
  227|       |      // The end of the list is encoded as a 0 differential.
  228|    143|      if (!advance())
  ------------------
  |  Branch (228:11): [True: 2, False: 141]
  ------------------
  229|      2|        List = nullptr;
  230|    143|    }
_ZN7llvm_ks14MCRegisterInfo18InitMCRegisterInfoEPKNS_14MCRegisterDescEjjjPKNS_15MCRegisterClassEjPA2_KtjPS7_PKjPKcSE_SA_jPKNS0_17SubRegCoveredBitsESA_:
  256|  20.9k|                          const uint16_t *RET) {
  257|  20.9k|    Desc = D;
  258|  20.9k|    NumRegs = NR;
  259|  20.9k|    RAReg = RA;
  260|  20.9k|    PCReg = PC;
  261|  20.9k|    Classes = C;
  262|  20.9k|    DiffLists = DL;
  263|  20.9k|    RegUnitMaskSequences = RUMS;
  264|  20.9k|    RegStrings = Strings;
  265|  20.9k|    RegClassStrings = ClassStrings;
  266|  20.9k|    NumClasses = NC;
  267|  20.9k|    RegUnitRoots = RURoots;
  268|  20.9k|    NumRegUnits = NRU;
  269|  20.9k|    SubRegIndices = SubIndices;
  270|  20.9k|    NumSubRegIndices = NumIndices;
  271|  20.9k|    SubRegIdxRanges = SubIdxRanges;
  272|  20.9k|    RegEncodingTable = RET;
  273|  20.9k|  }
_ZN7llvm_ks14MCRegisterInfo22mapLLVMRegsToDwarfRegsEPKNS0_16DwarfLLVMRegPairEjb:
  279|  41.9k|                              bool isEH) {
  280|  41.9k|    if (isEH) {
  ------------------
  |  Branch (280:9): [True: 20.9k, False: 20.9k]
  ------------------
  281|  20.9k|      EHL2DwarfRegs = Map;
  282|  20.9k|      EHL2DwarfRegsSize = Size;
  283|  20.9k|    } else {
  284|  20.9k|      L2DwarfRegs = Map;
  285|  20.9k|      L2DwarfRegsSize = Size;
  286|  20.9k|    }
  287|  41.9k|  }
_ZN7llvm_ks14MCRegisterInfo22mapDwarfRegsToLLVMRegsEPKNS0_16DwarfLLVMRegPairEjb:
  293|  41.9k|                              bool isEH) {
  294|  41.9k|    if (isEH) {
  ------------------
  |  Branch (294:9): [True: 20.9k, False: 20.9k]
  ------------------
  295|  20.9k|      EHDwarf2LRegs = Map;
  296|  20.9k|      EHDwarf2LRegsSize = Size;
  297|  20.9k|    } else {
  298|  20.9k|      Dwarf2LRegs = Map;
  299|  20.9k|      Dwarf2LRegsSize = Size;
  300|  20.9k|    }
  301|  41.9k|  }
_ZNK7llvm_ks14MCRegisterInfoixEj:
  323|    185|  const MCRegisterDesc &operator[](unsigned RegNo) const {
  324|    185|    assert(RegNo < NumRegs &&
  ------------------
  |  Branch (324:5): [True: 185, False: 0]
  |  Branch (324:5): [True: 185, Folded]
  |  Branch (324:5): [True: 185, False: 0]
  ------------------
  325|    185|           "Attempting to access record for invalid register number!");
  326|    185|    return Desc[RegNo];
  327|    185|  }
_ZNK7llvm_ks14MCRegisterInfo3getEj:
  331|    185|  const MCRegisterDesc &get(unsigned RegNo) const {
  332|    185|    return operator[](RegNo);
  333|    185|  }
_ZNK7llvm_ks14MCRegisterInfo19getNumSubRegIndicesEv:
  375|     70|  unsigned getNumSubRegIndices() const {
  376|     70|    return NumSubRegIndices;
  377|     70|  }
_ZNK7llvm_ks14MCRegisterInfo14regclass_beginEv:
  399|     41|  regclass_iterator regclass_begin() const { return Classes; }
_ZNK7llvm_ks14MCRegisterInfo12regclass_endEv:
  400|     41|  regclass_iterator regclass_end() const { return Classes+NumClasses; }
_ZNK7llvm_ks14MCRegisterInfo16getNumRegClassesEv:
  402|     41|  unsigned getNumRegClasses() const {
  403|     41|    return (unsigned)(regclass_end()-regclass_begin());
  404|     41|  }
_ZNK7llvm_ks14MCRegisterInfo11getRegClassEj:
  408|     41|  const MCRegisterClass& getRegClass(unsigned i) const {
  409|     41|    assert(i < getNumRegClasses() && "Register Class ID out of range");
  ------------------
  |  Branch (409:5): [True: 41, False: 0]
  |  Branch (409:5): [True: 41, Folded]
  |  Branch (409:5): [True: 41, False: 0]
  ------------------
  410|     41|    return Classes[i];
  411|     41|  }
_ZNK7llvm_ks14MCRegisterInfo16getEncodingValueEj:
  418|  35.9k|  uint16_t getEncodingValue(unsigned RegNo) const {
  419|  35.9k|    assert(RegNo < NumRegs &&
  ------------------
  |  Branch (419:5): [True: 35.9k, False: 0]
  |  Branch (419:5): [True: 35.9k, Folded]
  |  Branch (419:5): [True: 35.9k, False: 0]
  ------------------
  420|  35.9k|           "Attempting to get encoding for invalid register number!");
  421|  35.9k|    return RegEncodingTable[RegNo];
  422|  35.9k|  }
_ZN7llvm_ks16MCSubRegIteratorC2EjPKNS_14MCRegisterInfoEb:
  462|     70|                     bool IncludeSelf = false) {
  463|     70|    init(Reg, MCRI->DiffLists + MCRI->get(Reg).SubRegs);
  464|       |    // Initially, the iterator points to Reg itself.
  465|     70|    if (!IncludeSelf)
  ------------------
  |  Branch (465:9): [True: 70, False: 0]
  ------------------
  466|     70|      ++*this;
  467|     70|  }
_ZN7llvm_ks18MCSuperRegIteratorC2EjPKNS_14MCRegisterInfoEb:
  508|     45|                     bool IncludeSelf = false) {
  509|     45|    init(Reg, MCRI->DiffLists + MCRI->get(Reg).SuperRegs);
  510|       |    // Initially, the iterator points to Reg itself.
  511|     45|    if (!IncludeSelf)
  ------------------
  |  Branch (511:9): [True: 45, False: 0]
  ------------------
  512|     45|      ++*this;
  513|     45|  }

_ZN7llvm_ks17ilist_node_traitsINS_10MCFragmentEE13addNodeToListEPS1_:
   40|  56.0k|  void addNodeToList(MCFragment *) {}
_ZN7llvm_ks17ilist_node_traitsINS_10MCFragmentEE18removeNodeFromListEPS1_:
   41|  56.0k|  void removeNodeFromList(MCFragment *) {}
_ZNK7llvm_ks9MCSection10getVariantEv:
  113|  61.1k|  SectionVariant getVariant() const { return Variant; }
_ZN7llvm_ks9MCSection14getBeginSymbolEv:
  115|  56.7k|  MCSymbol *getBeginSymbol() { return Begin; }
_ZNK7llvm_ks9MCSection14getBeginSymbolEv:
  116|  13.0k|  const MCSymbol *getBeginSymbol() const {
  117|  13.0k|    return const_cast<MCSection *>(this)->getBeginSymbol();
  118|  13.0k|  }
_ZN7llvm_ks9MCSection14setBeginSymbolEPNS_8MCSymbolE:
  119|  21.3k|  void setBeginSymbol(MCSymbol *Sym) {
  120|  21.3k|    assert(!Begin);
  ------------------
  |  Branch (120:5): [True: 21.3k, False: 0]
  ------------------
  121|  21.3k|    Begin = Sym;
  122|  21.3k|  }
_ZNK7llvm_ks9MCSection12getAlignmentEv:
  126|  19.2k|  unsigned getAlignment() const { return Alignment; }
_ZN7llvm_ks9MCSection12setAlignmentEj:
  127|    712|  void setAlignment(unsigned Value) { Alignment = Value; }
_ZN7llvm_ks9MCSection10setOrdinalEj:
  130|  9.30k|  void setOrdinal(unsigned Value) { Ordinal = Value; }
_ZN7llvm_ks9MCSection14setLayoutOrderEj:
  133|  9.30k|  void setLayoutOrder(unsigned Value) { LayoutOrder = Value; }
_ZNK7llvm_ks9MCSection14isBundleLockedEv:
  137|   160k|  bool isBundleLocked() const { return BundleLockState != NotBundleLocked; }
_ZN7llvm_ks9MCSection18setHasInstructionsEb:
  147|  29.3k|  void setHasInstructions(bool Value) { HasInstructions = Value; }
_ZNK7llvm_ks9MCSection12isRegisteredEv:
  149|  21.8k|  bool isRegistered() const { return IsRegistered; }
_ZN7llvm_ks9MCSection15setIsRegisteredEb:
  150|  21.3k|  void setIsRegistered(bool Value) { IsRegistered = Value; }
_ZN7llvm_ks9MCSection15getFragmentListEv:
  152|  77.7M|  MCSection::FragmentListType &getFragmentList() { return Fragments; }
_ZN7llvm_ks9MCSection16getSublistAccessEPNS_10MCFragmentE:
  158|  54.9k|  static FragmentListType MCSection::*getSublistAccess(MCFragment *) {
  159|  54.9k|    return &MCSection::Fragments;
  160|  54.9k|  }
_ZN7llvm_ks9MCSection16getDummyFragmentEv:
  163|   139k|  MCDummyFragment &getDummyFragment() { return DummyFragment; }
_ZNK7llvm_ks9MCSection5beginEv:
  166|  8.49k|  MCSection::const_iterator begin() const {
  167|  8.49k|    return const_cast<MCSection *>(this)->begin();
  168|  8.49k|  }
_ZNK7llvm_ks9MCSection3endEv:
  171|  8.49k|  MCSection::const_iterator end() const {
  172|  8.49k|    return const_cast<MCSection *>(this)->end();
  173|  8.49k|  }

_ZNK7llvm_ks12MCSectionELF14getSectionNameEv:
   74|  46.6k|  StringRef getSectionName() const { return SectionName; }
_ZNK7llvm_ks12MCSectionELF8getGroupEv:
   78|  30.5k|  const MCSymbolELF *getGroup() const { return Group; }
_ZN7llvm_ks12MCSectionELFC2ENS_9StringRefEjjNS_11SectionKindEjPKNS_11MCSymbolELFEjPNS_8MCSymbolEPKS0_:
   58|   910k|      : MCSection(SV_ELF, K, Begin), SectionName(Section), Type(type),
   59|   910k|        Flags(flags), UniqueID(UniqueID), EntrySize(entrySize), Group(group),
   60|   910k|        Associated(Associated) {
   61|   910k|    if (Group)
  ------------------
  |  Branch (61:9): [True: 0, False: 910k]
  ------------------
   62|      0|      Group->setIsSignature();
   63|   910k|  }
_ZNK7llvm_ks12MCSectionELF7getTypeEv:
   75|  26.2k|  unsigned getType() const { return Type; }
_ZNK7llvm_ks12MCSectionELF8getFlagsEv:
   76|   162k|  unsigned getFlags() const { return Flags; }
_ZN7llvm_ks12MCSectionELF7classofEPKNS_9MCSectionE:
   90|  61.1k|  static bool classof(const MCSection *S) {
   91|  61.1k|    return S->getVariant() == SV_ELF;
   92|  61.1k|  }

_ZNK7llvm_ks14MCSectionMachO7getTypeEv:
   58|  2.59k|  MachO::SectionType getType() const {
   59|  2.59k|    return static_cast<MachO::SectionType>(TypeAndAttributes &
   60|  2.59k|                                           MachO::SECTION_TYPE);
   61|  2.59k|  }
_ZNK7llvm_ks14MCSectionMachO12hasAttributeEj:
   62|    174|  bool hasAttribute(unsigned Value) const {
   63|    174|    return (TypeAndAttributes & Value) != 0;
   64|    174|  }

_ZNK7llvm_ks10MCStreamer14setSymResolverEPv:
  201|  20.9k|  void setSymResolver(void *h) const { KsSymResolver = h; }
_ZNK7llvm_ks10MCStreamer14getSymResolverEv:
  202|  8.98k|  void *getSymResolver() const { return KsSymResolver; }
_ZN7llvm_ks10MCStreamer17setTargetStreamerEPNS_16MCTargetStreamerE:
  207|  20.9k|  void setTargetStreamer(MCTargetStreamer *TS) {
  208|  20.9k|    TargetStreamer.reset(TS);
  209|  20.9k|  }
_ZNK7llvm_ks10MCStreamer10getContextEv:
  215|  45.2k|  MCContext &getContext() const { return Context; }
_ZN7llvm_ks10MCStreamer17getTargetStreamerEv:
  217|   329k|  MCTargetStreamer *getTargetStreamer() {
  218|   329k|    return TargetStreamer.get();
  219|   329k|  }
_ZN7llvm_ks10MCStreamer19getNumWinFrameInfosEv:
  226|  20.9k|  unsigned getNumWinFrameInfos() { return WinFrameInfos.size(); }
_ZN7llvm_ks10MCStreamer12AddBlankLineEv:
  275|   727k|  virtual void AddBlankLine() {}
_ZNK7llvm_ks10MCStreamer17getCurrentSectionEv:
  283|   156M|  MCSectionSubPair getCurrentSection() const {
  284|   156M|    if (!SectionStack.empty())
  ------------------
  |  Branch (284:9): [True: 156M, False: 0]
  ------------------
  285|   156M|      return SectionStack.back().first;
  286|      0|    return MCSectionSubPair();
  287|   156M|  }
_ZNK7llvm_ks10MCStreamer21getCurrentSectionOnlyEv:
  288|   156M|  MCSection *getCurrentSectionOnly() const { return getCurrentSection().first; }
_ZN7llvm_ks10MCStreamer14EmitDataRegionENS_16MCDataRegionTypeE:
  394|    160|  virtual void EmitDataRegion(MCDataRegionType Kind) {}

_ZNK7llvm_ks15MCSubtargetInfo14getFeatureBitsEv:
   63|   865k|  const FeatureBitset& getFeatureBits() const {
   64|   865k|    return FeatureBits;
   65|   865k|  }
_ZNK7llvm_ks15MCSubtargetInfo16isCPUStringValidENS_9StringRefE:
  112|    564|  bool isCPUStringValid(StringRef CPU) const {
  113|    564|    auto Found = std::lower_bound(ProcDesc.begin(), ProcDesc.end(), CPU);
  114|    564|    return Found != ProcDesc.end() && StringRef(Found->Key) == CPU;
  ------------------
  |  Branch (114:12): [True: 399, False: 165]
  |  Branch (114:39): [True: 93, False: 306]
  ------------------
  115|    564|  }
_ZN7llvm_ks15MCSubtargetInfoC2ERKS0_:
   47|  27.6k|  MCSubtargetInfo(const MCSubtargetInfo &) = default;

_ZN7llvm_ks8MCSymbolC2ENS0_10SymbolKindEPKNS_14StringMapEntryIbEEb:
  150|   365k|      : IsTemporary(isTemporary), IsRedefinable(false), IsUsed(false),
  151|   365k|        IsRegistered(false), IsExternal(false), IsPrivateExtern(false),
  152|   365k|        Kind(Kind), IsUsedInReloc(false), SymbolContents(SymContentsUnset),
  153|   365k|        CommonAlignLog2(0), Flags(0) {
  154|   365k|    Offset = 0;
  155|   365k|    FragmentAndHasName.setInt(!!Name);
  156|   365k|    if (Name)
  ------------------
  |  Branch (156:9): [True: 365k, False: 0]
  ------------------
  157|   365k|      getNameEntryPtr() = Name;
  158|   365k|  }
_ZNK7llvm_ks8MCSymbol13getSectionPtrEb:
  179|  52.9k|  MCSection *getSectionPtr(bool SetUsed = true) const {
  180|  52.9k|    if (MCFragment *F = getFragment(SetUsed)) {
  ------------------
  |  Branch (180:21): [True: 52.9k, False: 0]
  ------------------
  181|  52.9k|      assert(F != AbsolutePseudoFragment);
  ------------------
  |  Branch (181:7): [True: 52.9k, False: 0]
  ------------------
  182|  52.9k|      return F->getParent();
  183|  52.9k|    }
  184|      0|    return nullptr;
  185|  52.9k|  }
_ZN7llvm_ks8MCSymbol15getNameEntryPtrEv:
  188|   370k|  const StringMapEntry<bool> *&getNameEntryPtr() {
  189|   370k|    assert(FragmentAndHasName.getInt() && "Name is required");
  ------------------
  |  Branch (189:5): [True: 370k, False: 0]
  |  Branch (189:5): [True: 370k, Folded]
  |  Branch (189:5): [True: 370k, False: 0]
  ------------------
  190|   370k|    NameEntryStorageTy *Name = reinterpret_cast<NameEntryStorageTy *>(this);
  191|   370k|    return (*(Name - 1)).NameEntry;
  192|   370k|  }
_ZNK7llvm_ks8MCSymbol15getNameEntryPtrEv:
  193|  4.91k|  const StringMapEntry<bool> *&getNameEntryPtr() const {
  194|  4.91k|    return const_cast<MCSymbol*>(this)->getNameEntryPtr();
  195|  4.91k|  }
_ZNK7llvm_ks8MCSymbol7getNameEv:
  199|  4.91k|  StringRef getName() const {
  200|  4.91k|    if (!FragmentAndHasName.getInt())
  ------------------
  |  Branch (200:9): [True: 0, False: 4.91k]
  ------------------
  201|      0|      return StringRef();
  202|       |
  203|  4.91k|    return getNameEntryPtr()->first();
  204|  4.91k|  }
_ZNK7llvm_ks8MCSymbol12isRegisteredEv:
  206|   557k|  bool isRegistered() const { return IsRegistered; }
_ZNK7llvm_ks8MCSymbol15setIsRegisteredEb:
  207|   145k|  void setIsRegistered(bool Value) const { IsRegistered = Value; }
_ZNK7llvm_ks8MCSymbol14setUsedInRelocEv:
  209|  13.3k|  void setUsedInReloc() const { IsUsedInReloc = true; }
_ZNK7llvm_ks8MCSymbol13isUsedInRelocEv:
  210|    156|  bool isUsedInReloc() const { return IsUsedInReloc; }
_ZNK7llvm_ks8MCSymbol11isTemporaryEv:
  216|    164|  bool isTemporary() const { return IsTemporary; }
_ZNK7llvm_ks8MCSymbol6isUsedEv:
  219|   191k|  bool isUsed() const { return IsUsed; }
_ZN7llvm_ks8MCSymbol14setRedefinableEb:
  225|  99.0k|  void setRedefinable(bool Value) { IsRedefinable = Value; }
_ZN7llvm_ks8MCSymbol18redefineIfPossibleEv:
  227|    221|  void redefineIfPossible() {
  228|    221|    if (IsRedefinable) {
  ------------------
  |  Branch (228:9): [True: 6, False: 215]
  ------------------
  229|      6|      if (SymbolContents == SymContentsVariable) {
  ------------------
  |  Branch (229:11): [True: 5, False: 1]
  ------------------
  230|      5|        Value = nullptr;
  231|      5|        SymbolContents = SymContentsUnset;
  232|      5|      }
  233|      6|      setUndefined();
  234|      6|      IsRedefinable = false;
  235|      6|    }
  236|    221|  }
_ZNK7llvm_ks8MCSymbol9isDefinedEb:
  245|   623k|  bool isDefined(bool SetUsed = true) const {
  246|   623k|    return getFragment(SetUsed) != nullptr;
  247|   623k|  }
_ZNK7llvm_ks8MCSymbol11isInSectionEb:
  251|   108k|  bool isInSection(bool SetUsed = true) const {
  252|   108k|    return isDefined(SetUsed) && !isAbsolute(SetUsed);
  ------------------
  |  Branch (252:12): [True: 86.5k, False: 22.3k]
  |  Branch (252:34): [True: 85.8k, False: 698]
  ------------------
  253|   108k|  }
_ZNK7llvm_ks8MCSymbol11isUndefinedEb:
  256|   466k|  bool isUndefined(bool SetUsed = true) const { return !isDefined(SetUsed); }
_ZNK7llvm_ks8MCSymbol10isAbsoluteEb:
  259|  87.3k|  bool isAbsolute(bool SetUsed = true) const {
  260|  87.3k|    return getFragment(SetUsed) == AbsolutePseudoFragment;
  261|  87.3k|  }
_ZNK7llvm_ks8MCSymbol10getSectionEb:
  264|  52.9k|  MCSection &getSection(bool SetUsed = true) const {
  265|  52.9k|    assert(isInSection(SetUsed) && "Invalid accessor!");
  ------------------
  |  Branch (265:5): [True: 52.9k, False: 0]
  |  Branch (265:5): [True: 52.9k, Folded]
  |  Branch (265:5): [True: 52.9k, False: 0]
  ------------------
  266|  52.9k|    return *getSectionPtr(SetUsed);
  267|  52.9k|  }
_ZNK7llvm_ks8MCSymbol11setFragmentEPNS_10MCFragmentE:
  270|   260k|  void setFragment(MCFragment *F) const {
  271|   260k|    assert(!isVariable() && "Cannot set fragment of variable");
  ------------------
  |  Branch (271:5): [True: 260k, False: 0]
  |  Branch (271:5): [True: 260k, Folded]
  |  Branch (271:5): [True: 260k, False: 0]
  ------------------
  272|   260k|    FragmentAndHasName.setPointer(F);
  273|   260k|  }
_ZN7llvm_ks8MCSymbol12setUndefinedEv:
  276|  98.2k|  void setUndefined() { FragmentAndHasName.setPointer(nullptr); }
_ZNK7llvm_ks8MCSymbol5isELFEv:
  278|   346k|  bool isELF() const { return Kind == SymbolKindELF; }
_ZNK7llvm_ks8MCSymbol10isVariableEv:
  289|  2.52M|  bool isVariable() const {
  290|  2.52M|    return SymbolContents == SymContentsVariable;
  291|  2.52M|  }
_ZNK7llvm_ks8MCSymbol16getVariableValueEb:
  294|   130k|  const MCExpr *getVariableValue(bool SetUsed = true) const {
  295|   130k|    assert(isVariable() && "Invalid accessor!");
  ------------------
  |  Branch (295:5): [True: 130k, False: 0]
  |  Branch (295:5): [True: 130k, Folded]
  |  Branch (295:5): [True: 130k, False: 0]
  ------------------
  296|   130k|    IsUsed |= SetUsed;
  297|   130k|    return Value;
  298|   130k|  }
_ZNK7llvm_ks8MCSymbol9getOffsetEv:
  314|  77.8k|  uint64_t getOffset() const {
  315|  77.8k|    assert((SymbolContents == SymContentsUnset ||
  ------------------
  |  Branch (315:5): [True: 114, False: 77.7k]
  |  Branch (315:5): [True: 77.7k, False: 0]
  |  Branch (315:5): [True: 77.8k, Folded]
  |  Branch (315:5): [True: 77.8k, False: 0]
  ------------------
  316|  77.8k|            SymbolContents == SymContentsOffset) &&
  317|  77.8k|           "Cannot get offset for a common/variable symbol");
  318|  77.8k|    return Offset;
  319|  77.8k|  }
_ZN7llvm_ks8MCSymbol9setOffsetEm:
  320|   120k|  void setOffset(uint64_t Value) {
  321|   120k|    assert((SymbolContents == SymContentsUnset ||
  ------------------
  |  Branch (321:5): [True: 120k, False: 0]
  |  Branch (321:5): [True: 0, False: 0]
  |  Branch (321:5): [True: 120k, Folded]
  |  Branch (321:5): [True: 120k, False: 0]
  ------------------
  322|   120k|            SymbolContents == SymContentsOffset) &&
  323|   120k|           "Cannot set offset for a common/variable symbol");
  324|   120k|    Offset = Value;
  325|   120k|    SymbolContents = SymContentsOffset;
  326|   120k|  }
_ZN7llvm_ks8MCSymbol9setCommonEmj:
  338|     57|  void setCommon(uint64_t Size, unsigned Align) {
  339|     57|    assert(getOffset() == 0);
  ------------------
  |  Branch (339:5): [True: 57, False: 0]
  ------------------
  340|     57|    CommonSize = Size;
  341|     57|    SymbolContents = SymContentsCommon;
  342|       |
  343|     57|    assert((!Align || isPowerOf2_32(Align)) &&
  ------------------
  |  Branch (343:5): [True: 0, False: 57]
  |  Branch (343:5): [True: 57, False: 0]
  |  Branch (343:5): [True: 57, Folded]
  |  Branch (343:5): [True: 57, False: 0]
  ------------------
  344|     57|           "Alignment must be a power of 2");
  345|     57|    unsigned Log2Align = Log2_32(Align) + 1;
  346|     57|    assert(Log2Align < (1U << NumCommonAlignmentBits) &&
  ------------------
  |  Branch (346:5): [True: 57, False: 0]
  |  Branch (346:5): [True: 57, Folded]
  |  Branch (346:5): [True: 57, False: 0]
  ------------------
  347|     57|           "Out of range alignment");
  348|     57|    CommonAlignLog2 = Log2Align;
  349|     57|  }
_ZNK7llvm_ks8MCSymbol18getCommonAlignmentEv:
  352|    669|  unsigned getCommonAlignment() const {
  353|    669|    assert(isCommon() && "Not a 'common' symbol!");
  ------------------
  |  Branch (353:5): [True: 669, False: 0]
  |  Branch (353:5): [True: 669, Folded]
  |  Branch (353:5): [True: 669, False: 0]
  ------------------
  354|    669|    return CommonAlignLog2 ? (1U << (CommonAlignLog2 - 1)) : 0;
  ------------------
  |  Branch (354:12): [True: 669, False: 0]
  ------------------
  355|    669|  }
_ZN7llvm_ks8MCSymbol13declareCommonEmj:
  362|    726|  bool declareCommon(uint64_t Size, unsigned Align) {
  363|    726|    assert(isCommon() || getOffset() == 0);
  ------------------
  |  Branch (363:5): [True: 669, False: 57]
  |  Branch (363:5): [True: 57, False: 0]
  |  Branch (363:5): [True: 726, False: 0]
  ------------------
  364|    726|    if(isCommon()) {
  ------------------
  |  Branch (364:8): [True: 669, False: 57]
  ------------------
  365|    669|      if(CommonSize != Size || getCommonAlignment() != Align)
  ------------------
  |  Branch (365:10): [True: 0, False: 669]
  |  Branch (365:32): [True: 0, False: 669]
  ------------------
  366|      0|       return true;
  367|    669|    } else
  368|     57|      setCommon(Size, Align);
  369|    726|    return false;
  370|    726|  }
_ZNK7llvm_ks8MCSymbol8isCommonEv:
  373|  2.12k|  bool isCommon() const {
  374|  2.12k|    return SymbolContents == SymContentsCommon;
  375|  2.12k|  }
_ZNK7llvm_ks8MCSymbol11getFragmentEb:
  377|  1.19M|  MCFragment *getFragment(bool SetUsed = true) const {
  378|  1.19M|    MCFragment *Fragment = FragmentAndHasName.getPointer();
  379|  1.19M|    if (Fragment || !isVariable())
  ------------------
  |  Branch (379:9): [True: 623k, False: 576k]
  |  Branch (379:21): [True: 477k, False: 99.1k]
  ------------------
  380|  1.10M|      return Fragment;
  381|  99.1k|    Fragment = getVariableValue(SetUsed)->findAssociatedFragment();
  382|  99.1k|    FragmentAndHasName.setPointer(Fragment);
  383|  99.1k|    return Fragment;
  384|  1.19M|  }
_ZNK7llvm_ks8MCSymbol10isExternalEv:
  386|    232|  bool isExternal() const { return IsExternal; }
_ZNK7llvm_ks8MCSymbol11setExternalEb:
  387|    452|  void setExternal(bool Value) const { IsExternal = Value; }
_ZNK7llvm_ks8MCSymbol8getFlagsEv:
  400|  46.8k|  uint32_t getFlags() const { return Flags; }
_ZNK7llvm_ks8MCSymbol8setFlagsEj:
  403|  23.6k|  void setFlags(uint32_t Value) const {
  404|  23.6k|    assert(Value < (1U << NumFlagsBits) && "Out of range flags");
  ------------------
  |  Branch (404:5): [True: 23.6k, False: 0]
  |  Branch (404:5): [True: 23.6k, Folded]
  |  Branch (404:5): [True: 23.6k, False: 0]
  ------------------
  405|  23.6k|    Flags = Value;
  406|  23.6k|  }

_ZN7llvm_ks11MCSymbolELFC2EPKNS_14StringMapEntryIbEEb:
   22|   365k|      : MCSymbol(SymbolKindELF, Name, isTemporary) {}
_ZN7llvm_ks11MCSymbolELF7classofEPKNS_8MCSymbolE:
   47|   346k|  static bool classof(const MCSymbol *S) { return S->isELF(); }
_ZN7llvm_ks11MCSymbolELF7setSizeEPKNS_6MCExprE:
   23|    771|  void setSize(const MCExpr *SS) { SymbolSize = SS; }

ks.cpp:_ZL28InitMCTargetOptionsFromFlagsv:
   34|  20.9k|static inline MCTargetOptions InitMCTargetOptionsFromFlags() {
   35|  20.9k|  MCTargetOptions Options;
   36|  20.9k|  Options.MCRelaxAll = RelaxAll;
   37|  20.9k|  Options.DwarfVersion = DwarfVersion;
   38|  20.9k|  Options.ABIName = ABIName;
   39|  20.9k|  Options.MCFatalWarnings = FatalWarnings;
   40|  20.9k|  Options.MCNoWarn = NoWarn;
   41|  20.9k|  return Options;
   42|  20.9k|}

_ZNK7llvm_ks7MCValue11getConstantEv:
   46|  1.48M|  int64_t getConstant() const { return Cst; }
_ZNK7llvm_ks7MCValue7getSymAEv:
   47|   949k|  const MCSymbolRefExpr *getSymA() const { return SymA; }
_ZNK7llvm_ks7MCValue7getSymBEv:
   48|   749k|  const MCSymbolRefExpr *getSymB() const { return SymB; }
_ZNK7llvm_ks7MCValue10isAbsoluteEv:
   52|  1.01M|  bool isAbsolute() const { return !SymA && !SymB; }
  ------------------
  |  Branch (52:36): [True: 425k, False: 587k]
  |  Branch (52:45): [True: 415k, False: 10.0k]
  ------------------
_ZN7llvm_ks7MCValue3getEPKNS_15MCSymbolRefExprES3_lj:
   64|   963k|                     int64_t Val = 0, uint32_t RefKind = 0) {
   65|   963k|    MCValue R;
   66|   963k|    R.Cst = Val;
   67|   963k|    R.SymA = SymA;
   68|   963k|    R.SymB = SymB;
   69|   963k|    R.RefKind = RefKind;
   70|   963k|    return R;
   71|   963k|  }
_ZN7llvm_ks7MCValue3getEl:
   73|   521k|  static MCValue get(int64_t Val) {
   74|   521k|    MCValue R;
   75|   521k|    R.Cst = Val;
   76|   521k|    R.SymA = nullptr;
   77|   521k|    R.SymB = nullptr;
   78|   521k|    R.RefKind = 0;
   79|   521k|    return R;
   80|   521k|  }

_ZN7llvm_ks11SectionKind3getENS0_4KindE:
  161|   912k|  static SectionKind get(Kind K) {
  162|   912k|    SectionKind Res;
  163|   912k|    Res.K = K;
  164|   912k|    return Res;
  165|   912k|  }
_ZN7llvm_ks11SectionKind7getTextEv:
  169|  20.9k|  static SectionKind getText() { return get(Text); }
_ZN7llvm_ks11SectionKind11getReadOnlyEv:
  170|   889k|  static SectionKind getReadOnly() { return get(ReadOnly); }
_ZN7llvm_ks11SectionKind7getDataEv:
  189|  2.72k|  static SectionKind getData() { return get(Data); }

_ZNK7llvm_ks18StringTableBuilder11isFinalizedEv:
   64|  16.5k|  bool isFinalized() const {
   65|  16.5k|    return !StringTable.empty();
   66|  16.5k|  }

_ZN7llvm_ks13FeatureBitsetC2Ev:
   37|   130k|  FeatureBitset() : bitset() {}
_ZN7llvm_ks13FeatureBitsetC2ERKNSt3__16bitsetILm128EEE:
   39|    107|  FeatureBitset(const bitset<MAX_SUBTARGET_FEATURES>& B) : bitset(B) {}
_ZN7llvm_ks13FeatureBitsetC2ESt16initializer_listIjE:
   41|  1.44k|  FeatureBitset(std::initializer_list<unsigned> Init) : bitset() {
   42|  1.44k|    for (auto I : Init)
  ------------------
  |  Branch (42:17): [True: 3.58k, False: 1.44k]
  ------------------
   43|  3.58k|      set(I);
   44|  1.44k|  }
_ZNK7llvm_ks18SubtargetFeatureKVltENS_9StringRefE:
   59|   587k|  bool operator<(StringRef S) const {
   60|   587k|    return StringRef(Key) < S;
   61|   587k|  }
_ZNK7llvm_ks18SubtargetFeatureKVltERKS0_:
   64|  10.8M|  bool operator<(const SubtargetFeatureKV &Other) const {
   65|  10.8M|    return StringRef(Key) < StringRef(Other.Key);
   66|  10.8M|  }

_ZN7llvm_ks7alignOfINS_12MCSectionELFEEEjv:
  106|   167k|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_14MCSectionMachOEEEjv:
  106|    824|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_15MCSubtargetInfoEEEjv:
  106|  11.5k|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_14StringMapEntryIPNS_8MCSymbolEEEEEjv:
  106|  37.0k|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_14StringMapEntryIbEEEEjv:
  106|   365k|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_14StringMapEntryIjEEEEjv:
  106|   227k|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_14StringMapEntryIPNS_14MCSectionMachOEEEEEjv:
  106|    373|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_14StringMapEntryINSt3__14pairIPNS_20MCAsmParserExtensionEPFbS5_NS_9StringRefENS_5SMLocEEEEEEEEjv:
  106|  1.38M|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
AsmParser.cpp:_ZN7llvm_ks7alignOfINS_14StringMapEntryIN12_GLOBAL__N_19AsmParser13DirectiveKindEEEEEjv:
  106|  2.55M|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
AsmParser.cpp:_ZN7llvm_ks7alignOfINS_14StringMapEntryIN12_GLOBAL__N_110MCAsmMacroEEEEEjv:
  106|    588|inline unsigned alignOf() { return AlignOf<T>::Alignment; }
_ZN7llvm_ks7alignOfINS_8MCSymbol18NameEntryStorageTyEEEjv:
  106|   365k|inline unsigned alignOf() { return AlignOf<T>::Alignment; }

_ZN7llvm_ks15MallocAllocator8AllocateEmm:
   94|  4.26M|                                                size_t /*Alignment*/) {
   95|  4.26M|    return malloc(Size);
   96|  4.26M|  }
_ZN7llvm_ks15MallocAllocator10DeallocateEPKvm:
  101|  4.26M|  void Deallocate(const void *Ptr, size_t /*Size*/) {
  102|  4.26M|    free(const_cast<void *>(Ptr));
  103|  4.26M|  }
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE8AllocateEmm:
  209|  3.15M|  Allocate(size_t Size, size_t Alignment) {
  210|  3.15M|    assert(Alignment > 0 && "0-byte alignnment is not allowed. Use 1 instead.");
  ------------------
  |  Branch (210:5): [True: 3.15M, False: 0]
  |  Branch (210:5): [True: 3.15M, Folded]
  |  Branch (210:5): [True: 3.15M, False: 0]
  ------------------
  211|       |
  212|       |    // Keep track of how many bytes we've allocated.
  213|  3.15M|    BytesAllocated += Size;
  214|       |
  215|  3.15M|    size_t Adjustment = alignmentAdjustment(CurPtr, Alignment);
  216|  3.15M|    assert(Adjustment + Size >= Size && "Adjustment + Size must not overflow");
  ------------------
  |  Branch (216:5): [True: 3.15M, False: 0]
  |  Branch (216:5): [True: 3.15M, Folded]
  |  Branch (216:5): [True: 3.15M, False: 0]
  ------------------
  217|       |
  218|       |    // Check if we have enough space.
  219|  3.15M|    if (Adjustment + Size <= size_t(End - CurPtr)) {
  ------------------
  |  Branch (219:9): [True: 3.05M, False: 93.7k]
  ------------------
  220|  3.05M|      char *AlignedPtr = CurPtr + Adjustment;
  221|  3.05M|      CurPtr = AlignedPtr + Size;
  222|       |      // Update the allocation point of this memory block in MemorySanitizer.
  223|       |      // Without this, MemorySanitizer messages for values originated from here
  224|       |      // will point to the allocation of the entire slab.
  225|  3.05M|      __msan_allocated_memory(AlignedPtr, Size);
  226|       |      // Similarly, tell ASan about this space.
  227|  3.05M|      __asan_unpoison_memory_region(AlignedPtr, Size);
  228|  3.05M|      return AlignedPtr;
  229|  3.05M|    }
  230|       |
  231|       |    // If Size is really big, allocate a separate slab for it.
  232|  93.7k|    size_t PaddedSize = Size + Alignment - 1;
  233|  93.7k|    if (PaddedSize > SizeThreshold) {
  ------------------
  |  Branch (233:9): [True: 10, False: 93.7k]
  ------------------
  234|     10|      void *NewSlab = Allocator.Allocate(PaddedSize, 0);
  235|       |      // We own the new slab and don't want anyone reading anyting other than
  236|       |      // pieces returned from this method.  So poison the whole slab.
  237|     10|      __asan_poison_memory_region(NewSlab, PaddedSize);
  238|     10|      CustomSizedSlabs.push_back(std::make_pair(NewSlab, PaddedSize));
  239|       |
  240|     10|      uintptr_t AlignedAddr = alignAddr(NewSlab, Alignment);
  241|     10|      assert(AlignedAddr + Size <= (uintptr_t)NewSlab + PaddedSize);
  ------------------
  |  Branch (241:7): [True: 10, False: 0]
  ------------------
  242|     10|      char *AlignedPtr = (char*)AlignedAddr;
  243|     10|      __msan_allocated_memory(AlignedPtr, Size);
  244|     10|      __asan_unpoison_memory_region(AlignedPtr, Size);
  245|     10|      return AlignedPtr;
  246|     10|    }
  247|       |
  248|       |    // Otherwise, start a new slab and try again.
  249|  93.7k|    StartNewSlab();
  250|  93.7k|    uintptr_t AlignedAddr = alignAddr(CurPtr, Alignment);
  251|  93.7k|    assert(AlignedAddr + Size <= (uintptr_t)End &&
  ------------------
  |  Branch (251:5): [True: 93.7k, False: 0]
  |  Branch (251:5): [True: 93.7k, Folded]
  |  Branch (251:5): [True: 93.7k, False: 0]
  ------------------
  252|  93.7k|           "Unable to allocate memory!");
  253|  93.7k|    char *AlignedPtr = (char*)AlignedAddr;
  254|  93.7k|    CurPtr = AlignedPtr + Size;
  255|  93.7k|    __msan_allocated_memory(AlignedPtr, Size);
  256|  93.7k|    __asan_unpoison_memory_region(AlignedPtr, Size);
  257|  93.7k|    return AlignedPtr;
  258|  93.7k|  }
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE12StartNewSlabEv:
  319|  93.7k|  void StartNewSlab() {
  320|  93.7k|    size_t AllocatedSlabSize = computeSlabSize(Slabs.size());
  321|       |
  322|  93.7k|    void *NewSlab = Allocator.Allocate(AllocatedSlabSize, 0);
  323|       |    // We own the new slab and don't want anyone reading anything other than
  324|       |    // pieces returned from this method.  So poison the whole slab.
  325|  93.7k|    __asan_poison_memory_region(NewSlab, AllocatedSlabSize);
  326|       |
  327|  93.7k|    Slabs.push_back(NewSlab);
  328|  93.7k|    CurPtr = (char *)(NewSlab);
  329|  93.7k|    End = ((char *)NewSlab) + AllocatedSlabSize;
  330|  93.7k|  }
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE15computeSlabSizeEj:
  309|   277k|  static size_t computeSlabSize(unsigned SlabIdx) {
  310|       |    // Scale the actual allocated slab size based on the number of slabs
  311|       |    // allocated. Every 128 slabs allocated, we double the allocated size to
  312|       |    // reduce allocation frequency, but saturate at multiplying the slab size by
  313|       |    // 2^30.
  314|   277k|    return SlabSize * ((size_t)1 << std::min<size_t>(30, SlabIdx / 128));
  315|   277k|  }
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEC2Ev:
  145|   125k|      : CurPtr(nullptr), End(nullptr), BytesAllocated(0), Allocator() {}
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_13MCSectionCOFFEEC2Ev:
  367|  20.9k|  SpecificBumpPtrAllocator() : Allocator() {}
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_12MCSectionELFEEC2Ev:
  367|  20.9k|  SpecificBumpPtrAllocator() : Allocator() {}
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_14MCSectionMachOEEC2Ev:
  367|  20.9k|  SpecificBumpPtrAllocator() : Allocator() {}
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_15MCSubtargetInfoEEC2Ev:
  367|  20.9k|  SpecificBumpPtrAllocator() : Allocator() {}
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EED2Ev:
  164|   125k|  ~BumpPtrAllocatorImpl() {
  165|   125k|    DeallocateSlabs(Slabs.begin(), Slabs.end());
  166|   125k|    DeallocateCustomSizedSlabs();
  167|   125k|  }
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE15DeallocateSlabsEPPvS4_:
  334|   194k|                       SmallVectorImpl<void *>::iterator E) {
  335|   287k|    for (; I != E; ++I) {
  ------------------
  |  Branch (335:12): [True: 93.7k, False: 194k]
  ------------------
  336|  93.7k|      size_t AllocatedSlabSize =
  337|  93.7k|          computeSlabSize(std::distance(Slabs.begin(), I));
  338|  93.7k|      Allocator.Deallocate(*I, AllocatedSlabSize);
  339|  93.7k|    }
  340|   194k|  }
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE26DeallocateCustomSizedSlabsEv:
  343|   314k|  void DeallocateCustomSizedSlabs() {
  344|   314k|    for (auto &PtrAndSize : CustomSizedSlabs) {
  ------------------
  |  Branch (344:27): [True: 10, False: 314k]
  ------------------
  345|     10|      void *Ptr = PtrAndSize.first;
  346|     10|      size_t Size = PtrAndSize.second;
  347|     10|      Allocator.Deallocate(Ptr, Size);
  348|     10|    }
  349|   314k|  }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_13MCSectionCOFFEED2Ev:
  370|  20.9k|  ~SpecificBumpPtrAllocator() { DestroyAll(); }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_12MCSectionELFEED2Ev:
  370|  20.9k|  ~SpecificBumpPtrAllocator() { DestroyAll(); }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_14MCSectionMachOEED2Ev:
  370|  20.9k|  ~SpecificBumpPtrAllocator() { DestroyAll(); }
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE10DeallocateEPKvm:
  263|   402k|  void Deallocate(const void *Ptr, size_t Size) {
  264|   402k|    __asan_poison_memory_region(Ptr, Size);
  265|   402k|  }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_15MCSubtargetInfoEED2Ev:
  370|  20.9k|  ~SpecificBumpPtrAllocator() { DestroyAll(); }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_13MCSectionCOFFEE10DestroyAllEv:
  380|  41.9k|  void DestroyAll() {
  381|  41.9k|    auto DestroyElements = [](char *Begin, char *End) {
  382|  41.9k|      assert(Begin == (char*)alignAddr(Begin, alignOf<T>()));
  383|  41.9k|      for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  384|  41.9k|        reinterpret_cast<T *>(Ptr)->~T();
  385|  41.9k|    };
  386|       |
  387|  41.9k|    for (auto I = Allocator.Slabs.begin(), E = Allocator.Slabs.end(); I != E;
  ------------------
  |  Branch (387:71): [True: 0, False: 41.9k]
  ------------------
  388|  41.9k|         ++I) {
  389|      0|      size_t AllocatedSlabSize = BumpPtrAllocator::computeSlabSize(
  390|      0|          std::distance(Allocator.Slabs.begin(), I));
  391|      0|      char *Begin = (char*)alignAddr(*I, alignOf<T>());
  392|      0|      char *End = *I == Allocator.Slabs.back() ? Allocator.CurPtr
  ------------------
  |  Branch (392:19): [True: 0, False: 0]
  ------------------
  393|      0|                                               : (char *)*I + AllocatedSlabSize;
  394|       |
  395|      0|      DestroyElements(Begin, End);
  396|      0|    }
  397|       |
  398|  41.9k|    for (auto &PtrAndSize : Allocator.CustomSizedSlabs) {
  ------------------
  |  Branch (398:27): [True: 0, False: 41.9k]
  ------------------
  399|      0|      void *Ptr = PtrAndSize.first;
  400|      0|      size_t Size = PtrAndSize.second;
  401|      0|      DestroyElements((char*)alignAddr(Ptr, alignOf<T>()), (char *)Ptr + Size);
  402|      0|    }
  403|       |
  404|  41.9k|    Allocator.Reset();
  405|  41.9k|  }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_12MCSectionELFEE10DestroyAllEv:
  380|  41.9k|  void DestroyAll() {
  381|  41.9k|    auto DestroyElements = [](char *Begin, char *End) {
  382|  41.9k|      assert(Begin == (char*)alignAddr(Begin, alignOf<T>()));
  383|  41.9k|      for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  384|  41.9k|        reinterpret_cast<T *>(Ptr)->~T();
  385|  41.9k|    };
  386|       |
  387|   125k|    for (auto I = Allocator.Slabs.begin(), E = Allocator.Slabs.end(); I != E;
  ------------------
  |  Branch (387:71): [True: 83.8k, False: 41.9k]
  ------------------
  388|  83.8k|         ++I) {
  389|  83.8k|      size_t AllocatedSlabSize = BumpPtrAllocator::computeSlabSize(
  390|  83.8k|          std::distance(Allocator.Slabs.begin(), I));
  391|  83.8k|      char *Begin = (char*)alignAddr(*I, alignOf<T>());
  392|  83.8k|      char *End = *I == Allocator.Slabs.back() ? Allocator.CurPtr
  ------------------
  |  Branch (392:19): [True: 41.9k, False: 41.9k]
  ------------------
  393|  83.8k|                                               : (char *)*I + AllocatedSlabSize;
  394|       |
  395|  83.8k|      DestroyElements(Begin, End);
  396|  83.8k|    }
  397|       |
  398|  41.9k|    for (auto &PtrAndSize : Allocator.CustomSizedSlabs) {
  ------------------
  |  Branch (398:27): [True: 0, False: 41.9k]
  ------------------
  399|      0|      void *Ptr = PtrAndSize.first;
  400|      0|      size_t Size = PtrAndSize.second;
  401|      0|      DestroyElements((char*)alignAddr(Ptr, alignOf<T>()), (char *)Ptr + Size);
  402|      0|    }
  403|       |
  404|  41.9k|    Allocator.Reset();
  405|  41.9k|  }
_ZZN7llvm_ks24SpecificBumpPtrAllocatorINS_12MCSectionELFEE10DestroyAllEvENKUlPcS3_E_clES3_S3_:
  381|  83.8k|    auto DestroyElements = [](char *Begin, char *End) {
  382|  83.8k|      assert(Begin == (char*)alignAddr(Begin, alignOf<T>()));
  ------------------
  |  Branch (382:7): [True: 83.8k, False: 0]
  ------------------
  383|   994k|      for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  ------------------
  |  Branch (383:31): [True: 910k, False: 83.8k]
  ------------------
  384|   910k|        reinterpret_cast<T *>(Ptr)->~T();
  385|  83.8k|    };
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_14MCSectionMachOEE10DestroyAllEv:
  380|  41.9k|  void DestroyAll() {
  381|  41.9k|    auto DestroyElements = [](char *Begin, char *End) {
  382|  41.9k|      assert(Begin == (char*)alignAddr(Begin, alignOf<T>()));
  383|  41.9k|      for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  384|  41.9k|        reinterpret_cast<T *>(Ptr)->~T();
  385|  41.9k|    };
  386|       |
  387|  42.3k|    for (auto I = Allocator.Slabs.begin(), E = Allocator.Slabs.end(); I != E;
  ------------------
  |  Branch (387:71): [True: 412, False: 41.9k]
  ------------------
  388|  41.9k|         ++I) {
  389|    412|      size_t AllocatedSlabSize = BumpPtrAllocator::computeSlabSize(
  390|    412|          std::distance(Allocator.Slabs.begin(), I));
  391|    412|      char *Begin = (char*)alignAddr(*I, alignOf<T>());
  392|    412|      char *End = *I == Allocator.Slabs.back() ? Allocator.CurPtr
  ------------------
  |  Branch (392:19): [True: 412, False: 0]
  ------------------
  393|    412|                                               : (char *)*I + AllocatedSlabSize;
  394|       |
  395|    412|      DestroyElements(Begin, End);
  396|    412|    }
  397|       |
  398|  41.9k|    for (auto &PtrAndSize : Allocator.CustomSizedSlabs) {
  ------------------
  |  Branch (398:27): [True: 0, False: 41.9k]
  ------------------
  399|      0|      void *Ptr = PtrAndSize.first;
  400|      0|      size_t Size = PtrAndSize.second;
  401|      0|      DestroyElements((char*)alignAddr(Ptr, alignOf<T>()), (char *)Ptr + Size);
  402|      0|    }
  403|       |
  404|  41.9k|    Allocator.Reset();
  405|  41.9k|  }
_ZZN7llvm_ks24SpecificBumpPtrAllocatorINS_14MCSectionMachOEE10DestroyAllEvENKUlPcS3_E_clES3_S3_:
  381|    412|    auto DestroyElements = [](char *Begin, char *End) {
  382|    412|      assert(Begin == (char*)alignAddr(Begin, alignOf<T>()));
  ------------------
  |  Branch (382:7): [True: 412, False: 0]
  ------------------
  383|    785|      for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  ------------------
  |  Branch (383:31): [True: 373, False: 412]
  ------------------
  384|    373|        reinterpret_cast<T *>(Ptr)->~T();
  385|    412|    };
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_15MCSubtargetInfoEE10DestroyAllEv:
  380|  41.9k|  void DestroyAll() {
  381|  41.9k|    auto DestroyElements = [](char *Begin, char *End) {
  382|  41.9k|      assert(Begin == (char*)alignAddr(Begin, alignOf<T>()));
  383|  41.9k|      for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  384|  41.9k|        reinterpret_cast<T *>(Ptr)->~T();
  385|  41.9k|    };
  386|       |
  387|  47.7k|    for (auto I = Allocator.Slabs.begin(), E = Allocator.Slabs.end(); I != E;
  ------------------
  |  Branch (387:71): [True: 5.76k, False: 41.9k]
  ------------------
  388|  41.9k|         ++I) {
  389|  5.76k|      size_t AllocatedSlabSize = BumpPtrAllocator::computeSlabSize(
  390|  5.76k|          std::distance(Allocator.Slabs.begin(), I));
  391|  5.76k|      char *Begin = (char*)alignAddr(*I, alignOf<T>());
  392|  5.76k|      char *End = *I == Allocator.Slabs.back() ? Allocator.CurPtr
  ------------------
  |  Branch (392:19): [True: 5.07k, False: 698]
  ------------------
  393|  5.76k|                                               : (char *)*I + AllocatedSlabSize;
  394|       |
  395|  5.76k|      DestroyElements(Begin, End);
  396|  5.76k|    }
  397|       |
  398|  41.9k|    for (auto &PtrAndSize : Allocator.CustomSizedSlabs) {
  ------------------
  |  Branch (398:27): [True: 0, False: 41.9k]
  ------------------
  399|      0|      void *Ptr = PtrAndSize.first;
  400|      0|      size_t Size = PtrAndSize.second;
  401|      0|      DestroyElements((char*)alignAddr(Ptr, alignOf<T>()), (char *)Ptr + Size);
  402|      0|    }
  403|       |
  404|  41.9k|    Allocator.Reset();
  405|  41.9k|  }
_ZZN7llvm_ks24SpecificBumpPtrAllocatorINS_15MCSubtargetInfoEE10DestroyAllEvENKUlPcS3_E_clES3_S3_:
  381|  5.76k|    auto DestroyElements = [](char *Begin, char *End) {
  382|  5.76k|      assert(Begin == (char*)alignAddr(Begin, alignOf<T>()));
  ------------------
  |  Branch (382:7): [True: 5.76k, False: 0]
  ------------------
  383|  33.3k|      for (char *Ptr = Begin; Ptr + sizeof(T) <= End; Ptr += sizeof(T))
  ------------------
  |  Branch (383:31): [True: 27.6k, False: 5.76k]
  ------------------
  384|  27.6k|        reinterpret_cast<T *>(Ptr)->~T();
  385|  5.76k|    };
_ZN7llvm_ks20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE5ResetEv:
  189|   188k|  void Reset() {
  190|       |    // Deallocate all but the first slab, and deallocate all custom-sized slabs.
  191|   188k|    DeallocateCustomSizedSlabs();
  192|   188k|    CustomSizedSlabs.clear();
  193|       |
  194|   188k|    if (Slabs.empty())
  ------------------
  |  Branch (194:9): [True: 120k, False: 68.3k]
  ------------------
  195|   120k|      return;
  196|       |
  197|       |    // Reset the state.
  198|  68.3k|    BytesAllocated = 0;
  199|  68.3k|    CurPtr = (char *)Slabs.front();
  200|  68.3k|    End = CurPtr + SlabSize;
  201|       |
  202|  68.3k|    __asan_poison_memory_region(*Slabs.begin(), computeSlabSize(0));
  203|  68.3k|    DeallocateSlabs(std::next(Slabs.begin()), Slabs.end());
  204|  68.3k|    Slabs.erase(std::next(Slabs.begin()), Slabs.end());
  205|  68.3k|  }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_14MCSectionMachOEE8AllocateEm:
  408|    373|  T *Allocate(size_t num = 1) { return Allocator.Allocate<T>(num); }
_ZN7llvm_ks13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE8AllocateINS_14MCSectionMachOEEEPT_m:
   76|    373|  template <typename T> T *Allocate(size_t Num = 1) {
   77|    373|    return static_cast<T *>(Allocate(Num * sizeof(T), AlignOf<T>::Alignment));
   78|    373|  }
_ZN7llvm_ks13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE8AllocateEmm:
   46|   938k|  void *Allocate(size_t Size, size_t Alignment) {
   47|   938k|#ifdef __clang__
   48|   938k|    static_assert(static_cast<void *(AllocatorBase::*)(size_t, size_t)>(
   49|   938k|                      &AllocatorBase::Allocate) !=
   50|   938k|                      static_cast<void *(DerivedT::*)(size_t, size_t)>(
   51|   938k|                          &DerivedT::Allocate),
   52|   938k|                  "Class derives from AllocatorBase without implementing the "
   53|   938k|                  "core Allocate(size_t, size_t) overload!");
   54|   938k|#endif
   55|   938k|    return static_cast<DerivedT *>(this)->Allocate(Size, Alignment);
   56|   938k|  }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_12MCSectionELFEE8AllocateEm:
  408|   910k|  T *Allocate(size_t num = 1) { return Allocator.Allocate<T>(num); }
_ZN7llvm_ks13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE8AllocateINS_12MCSectionELFEEEPT_m:
   76|   910k|  template <typename T> T *Allocate(size_t Num = 1) {
   77|   910k|    return static_cast<T *>(Allocate(Num * sizeof(T), AlignOf<T>::Alignment));
   78|   910k|  }
_ZN7llvm_ks24SpecificBumpPtrAllocatorINS_15MCSubtargetInfoEE8AllocateEm:
  408|  27.6k|  T *Allocate(size_t num = 1) { return Allocator.Allocate<T>(num); }
_ZN7llvm_ks13AllocatorBaseINS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEEE8AllocateINS_15MCSubtargetInfoEEEPT_m:
   76|  27.6k|  template <typename T> T *Allocate(size_t Num = 1) {
   77|  27.6k|    return static_cast<T *>(Allocate(Num * sizeof(T), AlignOf<T>::Alignment));
   78|  27.6k|  }

_ZN7llvm_ks4castINS_11MCSymbolELFENS_8MCSymbolEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|   141k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|   141k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 141k, False: 0]
  |  Branch (237:3): [True: 141k, Folded]
  |  Branch (237:3): [True: 141k, False: 0]
  ------------------
  238|   141k|  return cast_convert_val<X, Y*,
  239|   141k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|   141k|}
_ZN7llvm_ks3isaINS_11MCSymbolELFEPNS_8MCSymbolEEEbRKT0_:
  132|   141k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   141k|  return isa_impl_wrap<X, const Y,
  134|   141k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   141k|}
_ZN7llvm_ks13isa_impl_wrapINS_11MCSymbolELFEKPNS_8MCSymbolEPKS2_E4doitERS4_:
  111|   141k|  static bool doit(const From &Val) {
  112|   141k|    return isa_impl_wrap<To, SimpleFrom,
  113|   141k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|   141k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|   141k|  }
_ZN7llvm_ks13isa_impl_wrapINS_11MCSymbolELFEPKNS_8MCSymbolES4_E4doitERKS4_:
  121|   194k|  static bool doit(const FromTy &Val) {
  122|   194k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   194k|  }
_ZN7llvm_ks11isa_impl_clINS_11MCSymbolELFEPKNS_8MCSymbolEE4doitES4_:
   94|   194k|  static inline bool doit(const From *Val) {
   95|   194k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 194k, False: 0]
  |  Branch (95:5): [True: 194k, Folded]
  |  Branch (95:5): [True: 194k, False: 0]
  ------------------
   96|   194k|    return isa_impl<To, From>::doit(*Val);
   97|   194k|  }
_ZN7llvm_ks8isa_implINS_11MCSymbolELFENS_8MCSymbolEvE4doitERKS2_:
   55|   346k|  static inline bool doit(const From &Val) {
   56|   346k|    return To::classof(&Val);
   57|   346k|  }
_ZN7llvm_ks13simplify_typeIKPNS_8MCSymbolEE18getSimplifiedValueERS3_:
   45|   141k|  static RetType getSimplifiedValue(const From& Val) {
   46|   141k|    return simplify_type<From>::getSimplifiedValue(const_cast<From&>(Val));
   47|   141k|  }
_ZN7llvm_ks13simplify_typeIPNS_8MCSymbolEE18getSimplifiedValueERS2_:
   36|   141k|  static SimpleType &getSimplifiedValue(From &Val) { return Val; }
_ZN7llvm_ks16cast_convert_valINS_11MCSymbolELFEPNS_8MCSymbolES3_E4doitERKS3_:
  200|   141k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   141k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   141k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   141k|    return Res2;
  204|   141k|  }
_ZN7llvm_ks12cast_or_nullINS_11MCSymbolELFENS_8MCSymbolEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  267|  21.8k|cast_or_null(Y *Val) {
  268|  21.8k|  if (!Val) return nullptr;
  ------------------
  |  Branch (268:7): [True: 21.3k, False: 468]
  ------------------
  269|  21.8k|  assert(isa<X>(Val) && "cast_or_null<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (269:3): [True: 468, False: 0]
  |  Branch (269:3): [True: 468, Folded]
  |  Branch (269:3): [True: 468, False: 0]
  ------------------
  270|    468|  return cast<X>(Val);
  271|    468|}
_ZN7llvm_ks4castINS_11MCSymbolELFES1_EENS_10cast_rettyIT_PT0_E8ret_typeES5_:
  236|    771|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|    771|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 771, False: 0]
  |  Branch (237:3): [True: 771, Folded]
  |  Branch (237:3): [True: 771, False: 0]
  ------------------
  238|    771|  return cast_convert_val<X, Y*,
  239|    771|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|    771|}
_ZN7llvm_ks3isaINS_11MCSymbolELFEPS1_EEbRKT0_:
  132|    771|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|    771|  return isa_impl_wrap<X, const Y,
  134|    771|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|    771|}
_ZN7llvm_ks13isa_impl_wrapINS_11MCSymbolELFEKPS1_PKS1_E4doitERS3_:
  111|    771|  static bool doit(const From &Val) {
  112|    771|    return isa_impl_wrap<To, SimpleFrom,
  113|    771|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|    771|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|    771|  }
_ZN7llvm_ks13isa_impl_wrapINS_11MCSymbolELFEPKS1_S3_E4doitERKS3_:
  121|    771|  static bool doit(const FromTy &Val) {
  122|    771|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|    771|  }
_ZN7llvm_ks11isa_impl_clINS_11MCSymbolELFEPKS1_E4doitES3_:
   94|    771|  static inline bool doit(const From *Val) {
   95|    771|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 771, False: 0]
  |  Branch (95:5): [True: 771, Folded]
  |  Branch (95:5): [True: 771, False: 0]
  ------------------
   96|    771|    return isa_impl<To, From>::doit(*Val);
   97|    771|  }
_ZN7llvm_ks8isa_implINS_11MCSymbolELFES1_vE4doitERKS1_:
   64|    771|  static inline bool doit(const From &) { return true; }
_ZN7llvm_ks13simplify_typeIKPNS_11MCSymbolELFEE18getSimplifiedValueERS3_:
   45|    771|  static RetType getSimplifiedValue(const From& Val) {
   46|    771|    return simplify_type<From>::getSimplifiedValue(const_cast<From&>(Val));
   47|    771|  }
_ZN7llvm_ks13simplify_typeIPNS_11MCSymbolELFEE18getSimplifiedValueERS2_:
   36|    771|  static SimpleType &getSimplifiedValue(From &Val) { return Val; }
_ZN7llvm_ks16cast_convert_valINS_11MCSymbolELFEPS1_S2_E4doitERKS2_:
  200|    771|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|    771|    typename cast_retty<To, FromTy>::ret_type Res2
  202|    771|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|    771|    return Res2;
  204|    771|  }
_ZN7llvm_ks13simplify_typeIKPKNS_6MCExprEE18getSimplifiedValueERS4_:
   45|  3.39M|  static RetType getSimplifiedValue(const From& Val) {
   46|  3.39M|    return simplify_type<From>::getSimplifiedValue(const_cast<From&>(Val));
   47|  3.39M|  }
_ZN7llvm_ks13simplify_typeIPKNS_6MCExprEE18getSimplifiedValueERS3_:
   36|  3.39M|  static SimpleType &getSimplifiedValue(From &Val) { return Val; }
_ZN7llvm_ks4castINS_12MCBinaryExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  236|   479k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|   479k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 479k, False: 0]
  |  Branch (237:3): [True: 479k, Folded]
  |  Branch (237:3): [True: 479k, False: 0]
  ------------------
  238|   479k|  return cast_convert_val<X, Y*,
  239|   479k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|   479k|}
_ZN7llvm_ks3isaINS_12MCBinaryExprEPKNS_6MCExprEEEbRKT0_:
  132|   479k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   479k|  return isa_impl_wrap<X, const Y,
  134|   479k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   479k|}
_ZN7llvm_ks13isa_impl_wrapINS_12MCBinaryExprEKPKNS_6MCExprES4_E4doitERS5_:
  111|   479k|  static bool doit(const From &Val) {
  112|   479k|    return isa_impl_wrap<To, SimpleFrom,
  113|   479k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|   479k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|   479k|  }
_ZN7llvm_ks13isa_impl_wrapINS_12MCBinaryExprEPKNS_6MCExprES4_E4doitERKS4_:
  121|   479k|  static bool doit(const FromTy &Val) {
  122|   479k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   479k|  }
_ZN7llvm_ks11isa_impl_clINS_12MCBinaryExprEPKNS_6MCExprEE4doitES4_:
   94|   479k|  static inline bool doit(const From *Val) {
   95|   479k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 479k, False: 0]
  |  Branch (95:5): [True: 479k, Folded]
  |  Branch (95:5): [True: 479k, False: 0]
  ------------------
   96|   479k|    return isa_impl<To, From>::doit(*Val);
   97|   479k|  }
_ZN7llvm_ks8isa_implINS_12MCBinaryExprENS_6MCExprEvE4doitERKS2_:
   55|   604k|  static inline bool doit(const From &Val) {
   56|   604k|    return To::classof(&Val);
   57|   604k|  }
_ZN7llvm_ks16cast_convert_valINS_12MCBinaryExprEPKNS_6MCExprES4_E4doitERKS4_:
  200|   479k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   479k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   479k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   479k|    return Res2;
  204|   479k|  }
_ZN7llvm_ks4castINS_15MCSymbolRefExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  236|   902k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|   902k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 902k, False: 0]
  |  Branch (237:3): [True: 902k, Folded]
  |  Branch (237:3): [True: 902k, False: 0]
  ------------------
  238|   902k|  return cast_convert_val<X, Y*,
  239|   902k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|   902k|}
_ZN7llvm_ks3isaINS_15MCSymbolRefExprEPKNS_6MCExprEEEbRKT0_:
  132|   931k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   931k|  return isa_impl_wrap<X, const Y,
  134|   931k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   931k|}
_ZN7llvm_ks13isa_impl_wrapINS_15MCSymbolRefExprEKPKNS_6MCExprES4_E4doitERS5_:
  111|   931k|  static bool doit(const From &Val) {
  112|   931k|    return isa_impl_wrap<To, SimpleFrom,
  113|   931k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|   931k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|   931k|  }
_ZN7llvm_ks13isa_impl_wrapINS_15MCSymbolRefExprEPKNS_6MCExprES4_E4doitERKS4_:
  121|   931k|  static bool doit(const FromTy &Val) {
  122|   931k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   931k|  }
_ZN7llvm_ks11isa_impl_clINS_15MCSymbolRefExprEPKNS_6MCExprEE4doitES4_:
   94|   931k|  static inline bool doit(const From *Val) {
   95|   931k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 931k, False: 0]
  |  Branch (95:5): [True: 931k, Folded]
  |  Branch (95:5): [True: 931k, False: 0]
  ------------------
   96|   931k|    return isa_impl<To, From>::doit(*Val);
   97|   931k|  }
_ZN7llvm_ks8isa_implINS_15MCSymbolRefExprENS_6MCExprEvE4doitERKS2_:
   55|  1.22M|  static inline bool doit(const From &Val) {
   56|  1.22M|    return To::classof(&Val);
   57|  1.22M|  }
_ZN7llvm_ks16cast_convert_valINS_15MCSymbolRefExprEPKNS_6MCExprES4_E4doitERKS4_:
  200|   902k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   902k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   902k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   902k|    return Res2;
  204|   902k|  }
_ZN7llvm_ks4castINS_11MCSymbolELFEKNS_8MCSymbolEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|   152k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|   152k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 152k, False: 0]
  |  Branch (230:3): [True: 152k, Folded]
  |  Branch (230:3): [True: 152k, False: 0]
  ------------------
  231|   152k|  return cast_convert_val<X, Y,
  232|   152k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|   152k|}
_ZN7llvm_ks3isaINS_11MCSymbolELFENS_8MCSymbolEEEbRKT0_:
  132|   152k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   152k|  return isa_impl_wrap<X, const Y,
  134|   152k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   152k|}
_ZN7llvm_ks13isa_impl_wrapINS_11MCSymbolELFEKNS_8MCSymbolES3_E4doitERS3_:
  121|   152k|  static bool doit(const FromTy &Val) {
  122|   152k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   152k|  }
_ZN7llvm_ks11isa_impl_clINS_11MCSymbolELFEKNS_8MCSymbolEE4doitERS3_:
   74|   152k|  static inline bool doit(const From &Val) {
   75|   152k|    return isa_impl<To, From>::doit(Val);
   76|   152k|  }
_ZN7llvm_ks16cast_convert_valINS_11MCSymbolELFEKNS_8MCSymbolES3_E4doitERS3_:
  200|   152k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   152k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   152k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   152k|    return Res2;
  204|   152k|  }
_ZN7llvm_ks4castINS_11MCUnaryExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  236|   388k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|   388k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 388k, False: 0]
  |  Branch (237:3): [True: 388k, Folded]
  |  Branch (237:3): [True: 388k, False: 0]
  ------------------
  238|   388k|  return cast_convert_val<X, Y*,
  239|   388k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|   388k|}
_ZN7llvm_ks3isaINS_11MCUnaryExprEPKNS_6MCExprEEEbRKT0_:
  132|   388k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   388k|  return isa_impl_wrap<X, const Y,
  134|   388k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   388k|}
_ZN7llvm_ks13isa_impl_wrapINS_11MCUnaryExprEKPKNS_6MCExprES4_E4doitERS5_:
  111|   388k|  static bool doit(const From &Val) {
  112|   388k|    return isa_impl_wrap<To, SimpleFrom,
  113|   388k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|   388k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|   388k|  }
_ZN7llvm_ks13isa_impl_wrapINS_11MCUnaryExprEPKNS_6MCExprES4_E4doitERKS4_:
  121|   388k|  static bool doit(const FromTy &Val) {
  122|   388k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   388k|  }
_ZN7llvm_ks11isa_impl_clINS_11MCUnaryExprEPKNS_6MCExprEE4doitES4_:
   94|   388k|  static inline bool doit(const From *Val) {
   95|   388k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 388k, False: 0]
  |  Branch (95:5): [True: 388k, Folded]
  |  Branch (95:5): [True: 388k, False: 0]
  ------------------
   96|   388k|    return isa_impl<To, From>::doit(*Val);
   97|   388k|  }
_ZN7llvm_ks8isa_implINS_11MCUnaryExprENS_6MCExprEvE4doitERKS2_:
   55|   450k|  static inline bool doit(const From &Val) {
   56|   450k|    return To::classof(&Val);
   57|   450k|  }
_ZN7llvm_ks16cast_convert_valINS_11MCUnaryExprEPKNS_6MCExprES4_E4doitERKS4_:
  200|   388k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   388k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   388k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   388k|    return Res2;
  204|   388k|  }
_ZN7llvm_ks4castINS_19MCRelaxableFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  5.32k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  5.32k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 5.32k, False: 0]
  |  Branch (237:3): [True: 5.32k, Folded]
  |  Branch (237:3): [True: 5.32k, False: 0]
  ------------------
  238|  5.32k|  return cast_convert_val<X, Y*,
  239|  5.32k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  5.32k|}
_ZN7llvm_ks3isaINS_19MCRelaxableFragmentEPNS_10MCFragmentEEEbRKT0_:
  132|  5.32k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  5.32k|  return isa_impl_wrap<X, const Y,
  134|  5.32k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  5.32k|}
_ZN7llvm_ks13isa_impl_wrapINS_19MCRelaxableFragmentEKPNS_10MCFragmentEPKS2_E4doitERS4_:
  111|  5.32k|  static bool doit(const From &Val) {
  112|  5.32k|    return isa_impl_wrap<To, SimpleFrom,
  113|  5.32k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  5.32k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  5.32k|  }
_ZN7llvm_ks13isa_impl_wrapINS_19MCRelaxableFragmentEPKNS_10MCFragmentES4_E4doitERKS4_:
  121|  5.32k|  static bool doit(const FromTy &Val) {
  122|  5.32k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  5.32k|  }
_ZN7llvm_ks11isa_impl_clINS_19MCRelaxableFragmentEPKNS_10MCFragmentEE4doitES4_:
   94|  5.32k|  static inline bool doit(const From *Val) {
   95|  5.32k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 5.32k, False: 0]
  |  Branch (95:5): [True: 5.32k, Folded]
  |  Branch (95:5): [True: 5.32k, False: 0]
  ------------------
   96|  5.32k|    return isa_impl<To, From>::doit(*Val);
   97|  5.32k|  }
_ZN7llvm_ks8isa_implINS_19MCRelaxableFragmentENS_10MCFragmentEvE4doitERKS2_:
   55|  11.2k|  static inline bool doit(const From &Val) {
   56|  11.2k|    return To::classof(&Val);
   57|  11.2k|  }
_ZN7llvm_ks13simplify_typeIKPNS_10MCFragmentEE18getSimplifiedValueERS3_:
   45|   154M|  static RetType getSimplifiedValue(const From& Val) {
   46|   154M|    return simplify_type<From>::getSimplifiedValue(const_cast<From&>(Val));
   47|   154M|  }
_ZN7llvm_ks13simplify_typeIPNS_10MCFragmentEE18getSimplifiedValueERS2_:
   36|   154M|  static SimpleType &getSimplifiedValue(From &Val) { return Val; }
_ZN7llvm_ks16cast_convert_valINS_19MCRelaxableFragmentEPNS_10MCFragmentES3_E4doitERKS3_:
  200|  7.53k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  7.53k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  7.53k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  7.53k|    return Res2;
  204|  7.53k|  }
_ZN7llvm_ks4castINS_14MCDataFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  77.1M|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  77.1M|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 77.1M, False: 0]
  |  Branch (237:3): [True: 77.1M, Folded]
  |  Branch (237:3): [True: 77.1M, False: 0]
  ------------------
  238|  77.1M|  return cast_convert_val<X, Y*,
  239|  77.1M|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  77.1M|}
_ZN7llvm_ks3isaINS_14MCDataFragmentEPNS_10MCFragmentEEEbRKT0_:
  132|   154M|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   154M|  return isa_impl_wrap<X, const Y,
  134|   154M|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   154M|}
_ZN7llvm_ks13isa_impl_wrapINS_14MCDataFragmentEKPNS_10MCFragmentEPKS2_E4doitERS4_:
  111|   154M|  static bool doit(const From &Val) {
  112|   154M|    return isa_impl_wrap<To, SimpleFrom,
  113|   154M|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|   154M|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|   154M|  }
_ZN7llvm_ks13isa_impl_wrapINS_14MCDataFragmentEPKNS_10MCFragmentES4_E4doitERKS4_:
  121|   154M|  static bool doit(const FromTy &Val) {
  122|   154M|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   154M|  }
_ZN7llvm_ks11isa_impl_clINS_14MCDataFragmentEPKNS_10MCFragmentEE4doitES4_:
   94|   154M|  static inline bool doit(const From *Val) {
   95|   154M|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 154M, False: 0]
  |  Branch (95:5): [True: 154M, Folded]
  |  Branch (95:5): [True: 154M, False: 0]
  ------------------
   96|   154M|    return isa_impl<To, From>::doit(*Val);
   97|   154M|  }
_ZN7llvm_ks8isa_implINS_14MCDataFragmentENS_10MCFragmentEvE4doitERKS2_:
   55|   154M|  static inline bool doit(const From &Val) {
   56|   154M|    return To::classof(&Val);
   57|   154M|  }
_ZN7llvm_ks16cast_convert_valINS_14MCDataFragmentEPNS_10MCFragmentES3_E4doitERKS3_:
  200|  77.1M|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  77.1M|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  77.1M|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  77.1M|    return Res2;
  204|  77.1M|  }
_ZN7llvm_ks8dyn_castINS_15MCSymbolRefExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  297|  20.1k|dyn_cast(Y *Val) {
  298|  20.1k|  return isa<X>(Val) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (298:10): [True: 14.5k, False: 5.60k]
  ------------------
  299|  20.1k|}
_ZN7llvm_ks8isa_implINS_14MCConstantExprENS_6MCExprEvE4doitERKS2_:
   55|  1.59M|  static inline bool doit(const From &Val) {
   56|  1.59M|    return To::classof(&Val);
   57|  1.59M|  }
_ZN7llvm_ks4castINS_15MCSymbolRefExprEKNS_6MCExprEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|   295k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|   295k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 295k, False: 0]
  |  Branch (230:3): [True: 295k, Folded]
  |  Branch (230:3): [True: 295k, False: 0]
  ------------------
  231|   295k|  return cast_convert_val<X, Y,
  232|   295k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|   295k|}
_ZN7llvm_ks3isaINS_15MCSymbolRefExprENS_6MCExprEEEbRKT0_:
  132|   295k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   295k|  return isa_impl_wrap<X, const Y,
  134|   295k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   295k|}
_ZN7llvm_ks13isa_impl_wrapINS_15MCSymbolRefExprEKNS_6MCExprES3_E4doitERS3_:
  121|   295k|  static bool doit(const FromTy &Val) {
  122|   295k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   295k|  }
_ZN7llvm_ks11isa_impl_clINS_15MCSymbolRefExprEKNS_6MCExprEE4doitERS3_:
   74|   295k|  static inline bool doit(const From &Val) {
   75|   295k|    return isa_impl<To, From>::doit(Val);
   76|   295k|  }
_ZN7llvm_ks16cast_convert_valINS_15MCSymbolRefExprEKNS_6MCExprES3_E4doitERS3_:
  200|   295k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   295k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   295k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   295k|    return Res2;
  204|   295k|  }
_ZN7llvm_ks4castINS_11MCUnaryExprEKNS_6MCExprEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|  62.4k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  62.4k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 62.4k, False: 0]
  |  Branch (230:3): [True: 62.4k, Folded]
  |  Branch (230:3): [True: 62.4k, False: 0]
  ------------------
  231|  62.4k|  return cast_convert_val<X, Y,
  232|  62.4k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  62.4k|}
_ZN7llvm_ks3isaINS_11MCUnaryExprENS_6MCExprEEEbRKT0_:
  132|  62.4k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  62.4k|  return isa_impl_wrap<X, const Y,
  134|  62.4k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  62.4k|}
_ZN7llvm_ks13isa_impl_wrapINS_11MCUnaryExprEKNS_6MCExprES3_E4doitERS3_:
  121|  62.4k|  static bool doit(const FromTy &Val) {
  122|  62.4k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  62.4k|  }
_ZN7llvm_ks11isa_impl_clINS_11MCUnaryExprEKNS_6MCExprEE4doitERS3_:
   74|  62.4k|  static inline bool doit(const From &Val) {
   75|  62.4k|    return isa_impl<To, From>::doit(Val);
   76|  62.4k|  }
_ZN7llvm_ks16cast_convert_valINS_11MCUnaryExprEKNS_6MCExprES3_E4doitERS3_:
  200|  62.4k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  62.4k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  62.4k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  62.4k|    return Res2;
  204|  62.4k|  }
_ZN7llvm_ks4castINS_12MCBinaryExprEKNS_6MCExprEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|   125k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|   125k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 125k, False: 0]
  |  Branch (230:3): [True: 125k, Folded]
  |  Branch (230:3): [True: 125k, False: 0]
  ------------------
  231|   125k|  return cast_convert_val<X, Y,
  232|   125k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|   125k|}
_ZN7llvm_ks3isaINS_12MCBinaryExprENS_6MCExprEEEbRKT0_:
  132|   125k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|   125k|  return isa_impl_wrap<X, const Y,
  134|   125k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|   125k|}
_ZN7llvm_ks13isa_impl_wrapINS_12MCBinaryExprEKNS_6MCExprES3_E4doitERS3_:
  121|   125k|  static bool doit(const FromTy &Val) {
  122|   125k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|   125k|  }
_ZN7llvm_ks11isa_impl_clINS_12MCBinaryExprEKNS_6MCExprEE4doitERS3_:
   74|   125k|  static inline bool doit(const From &Val) {
   75|   125k|    return isa_impl<To, From>::doit(Val);
   76|   125k|  }
_ZN7llvm_ks16cast_convert_valINS_12MCBinaryExprEKNS_6MCExprES3_E4doitERS3_:
  200|   125k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   125k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   125k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   125k|    return Res2;
  204|   125k|  }
_ZN7llvm_ks3isaINS_14MCConstantExprEPKNS_6MCExprEEEbRKT0_:
  132|  1.59M|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  1.59M|  return isa_impl_wrap<X, const Y,
  134|  1.59M|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  1.59M|}
_ZN7llvm_ks13isa_impl_wrapINS_14MCConstantExprEKPKNS_6MCExprES4_E4doitERS5_:
  111|  1.59M|  static bool doit(const From &Val) {
  112|  1.59M|    return isa_impl_wrap<To, SimpleFrom,
  113|  1.59M|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  1.59M|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  1.59M|  }
_ZN7llvm_ks13isa_impl_wrapINS_14MCConstantExprEPKNS_6MCExprES4_E4doitERKS4_:
  121|  1.59M|  static bool doit(const FromTy &Val) {
  122|  1.59M|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  1.59M|  }
_ZN7llvm_ks11isa_impl_clINS_14MCConstantExprEPKNS_6MCExprEE4doitES4_:
   94|  1.59M|  static inline bool doit(const From *Val) {
   95|  1.59M|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 1.59M, False: 0]
  |  Branch (95:5): [True: 1.59M, Folded]
  |  Branch (95:5): [True: 1.59M, False: 0]
  ------------------
   96|  1.59M|    return isa_impl<To, From>::doit(*Val);
   97|  1.59M|  }
_ZN7llvm_ks8dyn_castINS_14MCConstantExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  297|   905k|dyn_cast(Y *Val) {
  298|   905k|  return isa<X>(Val) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (298:10): [True: 297k, False: 607k]
  ------------------
  299|   905k|}
_ZN7llvm_ks4castINS_14MCConstantExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  236|   678k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|   678k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 678k, False: 0]
  |  Branch (237:3): [True: 678k, Folded]
  |  Branch (237:3): [True: 678k, False: 0]
  ------------------
  238|   678k|  return cast_convert_val<X, Y*,
  239|   678k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|   678k|}
_ZN7llvm_ks16cast_convert_valINS_14MCConstantExprEPKNS_6MCExprES4_E4doitERKS4_:
  200|   678k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|   678k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|   678k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|   678k|    return Res2;
  204|   678k|  }
_ZN7llvm_ks4castINS_15MCAlignFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  14.7k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  14.7k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 14.7k, False: 0]
  |  Branch (237:3): [True: 14.7k, Folded]
  |  Branch (237:3): [True: 14.7k, False: 0]
  ------------------
  238|  14.7k|  return cast_convert_val<X, Y*,
  239|  14.7k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  14.7k|}
_ZN7llvm_ks3isaINS_15MCAlignFragmentEPNS_10MCFragmentEEEbRKT0_:
  132|  14.7k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  14.7k|  return isa_impl_wrap<X, const Y,
  134|  14.7k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  14.7k|}
_ZN7llvm_ks13isa_impl_wrapINS_15MCAlignFragmentEKPNS_10MCFragmentEPKS2_E4doitERS4_:
  111|  14.7k|  static bool doit(const From &Val) {
  112|  14.7k|    return isa_impl_wrap<To, SimpleFrom,
  113|  14.7k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  14.7k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  14.7k|  }
_ZN7llvm_ks13isa_impl_wrapINS_15MCAlignFragmentEPKNS_10MCFragmentES4_E4doitERKS4_:
  121|  14.7k|  static bool doit(const FromTy &Val) {
  122|  14.7k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  14.7k|  }
_ZN7llvm_ks11isa_impl_clINS_15MCAlignFragmentEPKNS_10MCFragmentEE4doitES4_:
   94|  14.7k|  static inline bool doit(const From *Val) {
   95|  14.7k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 14.7k, False: 0]
  |  Branch (95:5): [True: 14.7k, Folded]
  |  Branch (95:5): [True: 14.7k, False: 0]
  ------------------
   96|  14.7k|    return isa_impl<To, From>::doit(*Val);
   97|  14.7k|  }
_ZN7llvm_ks8isa_implINS_15MCAlignFragmentENS_10MCFragmentEvE4doitERKS2_:
   55|  42.1k|  static inline bool doit(const From &Val) {
   56|  42.1k|    return To::classof(&Val);
   57|  42.1k|  }
_ZN7llvm_ks16cast_convert_valINS_15MCAlignFragmentEPNS_10MCFragmentES3_E4doitERKS3_:
  200|  14.7k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  14.7k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  14.7k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  14.7k|    return Res2;
  204|  14.7k|  }
_ZN7llvm_ks4castINS_14MCFillFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  2.47k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  2.47k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 2.47k, False: 0]
  |  Branch (237:3): [True: 2.47k, Folded]
  |  Branch (237:3): [True: 2.47k, False: 0]
  ------------------
  238|  2.47k|  return cast_convert_val<X, Y*,
  239|  2.47k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  2.47k|}
_ZN7llvm_ks3isaINS_14MCFillFragmentEPNS_10MCFragmentEEEbRKT0_:
  132|  2.47k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  2.47k|  return isa_impl_wrap<X, const Y,
  134|  2.47k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  2.47k|}
_ZN7llvm_ks13isa_impl_wrapINS_14MCFillFragmentEKPNS_10MCFragmentEPKS2_E4doitERS4_:
  111|  2.47k|  static bool doit(const From &Val) {
  112|  2.47k|    return isa_impl_wrap<To, SimpleFrom,
  113|  2.47k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  2.47k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  2.47k|  }
_ZN7llvm_ks13isa_impl_wrapINS_14MCFillFragmentEPKNS_10MCFragmentES4_E4doitERKS4_:
  121|  2.47k|  static bool doit(const FromTy &Val) {
  122|  2.47k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  2.47k|  }
_ZN7llvm_ks11isa_impl_clINS_14MCFillFragmentEPKNS_10MCFragmentEE4doitES4_:
   94|  2.47k|  static inline bool doit(const From *Val) {
   95|  2.47k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 2.47k, False: 0]
  |  Branch (95:5): [True: 2.47k, Folded]
  |  Branch (95:5): [True: 2.47k, False: 0]
  ------------------
   96|  2.47k|    return isa_impl<To, From>::doit(*Val);
   97|  2.47k|  }
_ZN7llvm_ks8isa_implINS_14MCFillFragmentENS_10MCFragmentEvE4doitERKS2_:
   55|  8.93k|  static inline bool doit(const From &Val) {
   56|  8.93k|    return To::classof(&Val);
   57|  8.93k|  }
_ZN7llvm_ks16cast_convert_valINS_14MCFillFragmentEPNS_10MCFragmentES3_E4doitERKS3_:
  200|  2.47k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  2.47k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  2.47k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  2.47k|    return Res2;
  204|  2.47k|  }
_ZN7llvm_ks4castINS_13MCOrgFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  21.7k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  21.7k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 21.7k, False: 0]
  |  Branch (237:3): [True: 21.7k, Folded]
  |  Branch (237:3): [True: 21.7k, False: 0]
  ------------------
  238|  21.7k|  return cast_convert_val<X, Y*,
  239|  21.7k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  21.7k|}
_ZN7llvm_ks3isaINS_13MCOrgFragmentEPNS_10MCFragmentEEEbRKT0_:
  132|  21.7k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  21.7k|  return isa_impl_wrap<X, const Y,
  134|  21.7k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  21.7k|}
_ZN7llvm_ks13isa_impl_wrapINS_13MCOrgFragmentEKPNS_10MCFragmentEPKS2_E4doitERS4_:
  111|  21.7k|  static bool doit(const From &Val) {
  112|  21.7k|    return isa_impl_wrap<To, SimpleFrom,
  113|  21.7k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  21.7k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  21.7k|  }
_ZN7llvm_ks13isa_impl_wrapINS_13MCOrgFragmentEPKNS_10MCFragmentES4_E4doitERKS4_:
  121|  21.7k|  static bool doit(const FromTy &Val) {
  122|  21.7k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  21.7k|  }
_ZN7llvm_ks11isa_impl_clINS_13MCOrgFragmentEPKNS_10MCFragmentEE4doitES4_:
   94|  21.7k|  static inline bool doit(const From *Val) {
   95|  21.7k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 21.7k, False: 0]
  |  Branch (95:5): [True: 21.7k, Folded]
  |  Branch (95:5): [True: 21.7k, False: 0]
  ------------------
   96|  21.7k|    return isa_impl<To, From>::doit(*Val);
   97|  21.7k|  }
_ZN7llvm_ks8isa_implINS_13MCOrgFragmentENS_10MCFragmentEvE4doitERKS2_:
   55|  69.6k|  static inline bool doit(const From &Val) {
   56|  69.6k|    return To::classof(&Val);
   57|  69.6k|  }
_ZN7llvm_ks16cast_convert_valINS_13MCOrgFragmentEPNS_10MCFragmentES3_E4doitERKS3_:
  200|  21.7k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  21.7k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  21.7k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  21.7k|    return Res2;
  204|  21.7k|  }
_ZN7llvm_ks16dyn_cast_or_nullINS_14MCDataFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  320|  77.7M|dyn_cast_or_null(Y *Val) {
  321|  77.7M|  return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (321:11): [True: 77.1M, False: 577k]
  |  Branch (321:18): [True: 77.1M, False: 46.5k]
  ------------------
  322|  77.7M|}
_ZN7llvm_ks16dyn_cast_or_nullINS_14MCConstantExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  320|    428|dyn_cast_or_null(Y *Val) {
  321|    428|  return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (321:11): [True: 428, False: 0]
  |  Branch (321:18): [True: 179, False: 249]
  ------------------
  322|    428|}
_ZN7llvm_ks8dyn_castINS_6MCExprEKS1_EENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  297|      4|dyn_cast(Y *Val) {
  298|      4|  return isa<X>(Val) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (298:10): [True: 4, False: 0]
  ------------------
  299|      4|}
_ZN7llvm_ks3isaINS_6MCExprEPKS1_EEbRKT0_:
  132|      8|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|      8|  return isa_impl_wrap<X, const Y,
  134|      8|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|      8|}
_ZN7llvm_ks13isa_impl_wrapINS_6MCExprEKPKS1_S3_E4doitERS4_:
  111|      8|  static bool doit(const From &Val) {
  112|      8|    return isa_impl_wrap<To, SimpleFrom,
  113|      8|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|      8|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|      8|  }
_ZN7llvm_ks13isa_impl_wrapINS_6MCExprEPKS1_S3_E4doitERKS3_:
  121|      8|  static bool doit(const FromTy &Val) {
  122|      8|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|      8|  }
_ZN7llvm_ks11isa_impl_clINS_6MCExprEPKS1_E4doitES3_:
   94|      8|  static inline bool doit(const From *Val) {
   95|      8|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 8, False: 0]
  |  Branch (95:5): [True: 8, Folded]
  |  Branch (95:5): [True: 8, False: 0]
  ------------------
   96|      8|    return isa_impl<To, From>::doit(*Val);
   97|      8|  }
_ZN7llvm_ks8isa_implINS_6MCExprES1_vE4doitERKS1_:
   64|      8|  static inline bool doit(const From &) { return true; }
_ZN7llvm_ks4castINS_6MCExprEKS1_EENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|      4|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|      4|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 4, False: 0]
  |  Branch (237:3): [True: 4, Folded]
  |  Branch (237:3): [True: 4, False: 0]
  ------------------
  238|      4|  return cast_convert_val<X, Y*,
  239|      4|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|      4|}
_ZN7llvm_ks16cast_convert_valINS_6MCExprEPKS1_S3_E4doitERKS3_:
  200|      4|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|      4|    typename cast_retty<To, FromTy>::ret_type Res2
  202|      4|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|      4|    return Res2;
  204|      4|  }
_ZN7llvm_ks8dyn_castINS_9ARMMCExprEKNS_6MCExprEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  297|      4|dyn_cast(Y *Val) {
  298|      4|  return isa<X>(Val) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (298:10): [True: 0, False: 4]
  ------------------
  299|      4|}
_ZN7llvm_ks3isaINS_9ARMMCExprEPKNS_6MCExprEEEbRKT0_:
  132|      4|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|      4|  return isa_impl_wrap<X, const Y,
  134|      4|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|      4|}
_ZN7llvm_ks13isa_impl_wrapINS_9ARMMCExprEKPKNS_6MCExprES4_E4doitERS5_:
  111|      4|  static bool doit(const From &Val) {
  112|      4|    return isa_impl_wrap<To, SimpleFrom,
  113|      4|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|      4|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|      4|  }
_ZN7llvm_ks13isa_impl_wrapINS_9ARMMCExprEPKNS_6MCExprES4_E4doitERKS4_:
  121|      4|  static bool doit(const FromTy &Val) {
  122|      4|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|      4|  }
_ZN7llvm_ks11isa_impl_clINS_9ARMMCExprEPKNS_6MCExprEE4doitES4_:
   94|      4|  static inline bool doit(const From *Val) {
   95|      4|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 4, False: 0]
  |  Branch (95:5): [True: 4, Folded]
  |  Branch (95:5): [True: 4, False: 0]
  ------------------
   96|      4|    return isa_impl<To, From>::doit(*Val);
   97|      4|  }
_ZN7llvm_ks8isa_implINS_9ARMMCExprENS_6MCExprEvE4doitERKS2_:
   55|      4|  static inline bool doit(const From &Val) {
   56|      4|    return To::classof(&Val);
   57|      4|  }
_ZN7llvm_ks4castINS_14MCDataFragmentEKNS_10MCFragmentEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|  22.3k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  22.3k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 22.3k, False: 0]
  |  Branch (230:3): [True: 22.3k, Folded]
  |  Branch (230:3): [True: 22.3k, False: 0]
  ------------------
  231|  22.3k|  return cast_convert_val<X, Y,
  232|  22.3k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  22.3k|}
_ZN7llvm_ks3isaINS_14MCDataFragmentENS_10MCFragmentEEEbRKT0_:
  132|  22.3k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  22.3k|  return isa_impl_wrap<X, const Y,
  134|  22.3k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  22.3k|}
_ZN7llvm_ks13isa_impl_wrapINS_14MCDataFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  121|  22.3k|  static bool doit(const FromTy &Val) {
  122|  22.3k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  22.3k|  }
_ZN7llvm_ks11isa_impl_clINS_14MCDataFragmentEKNS_10MCFragmentEE4doitERS3_:
   74|  22.3k|  static inline bool doit(const From &Val) {
   75|  22.3k|    return isa_impl<To, From>::doit(Val);
   76|  22.3k|  }
_ZN7llvm_ks16cast_convert_valINS_14MCDataFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  200|  22.3k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  22.3k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  22.3k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  22.3k|    return Res2;
  204|  22.3k|  }
_ZN7llvm_ks4castINS_19MCRelaxableFragmentEKNS_10MCFragmentEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|  3.76k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  3.76k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 3.76k, False: 0]
  |  Branch (230:3): [True: 3.76k, Folded]
  |  Branch (230:3): [True: 3.76k, False: 0]
  ------------------
  231|  3.76k|  return cast_convert_val<X, Y,
  232|  3.76k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  3.76k|}
_ZN7llvm_ks3isaINS_19MCRelaxableFragmentENS_10MCFragmentEEEbRKT0_:
  132|  3.76k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  3.76k|  return isa_impl_wrap<X, const Y,
  134|  3.76k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  3.76k|}
_ZN7llvm_ks13isa_impl_wrapINS_19MCRelaxableFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  121|  3.76k|  static bool doit(const FromTy &Val) {
  122|  3.76k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  3.76k|  }
_ZN7llvm_ks11isa_impl_clINS_19MCRelaxableFragmentEKNS_10MCFragmentEE4doitERS3_:
   74|  3.76k|  static inline bool doit(const From &Val) {
   75|  3.76k|    return isa_impl<To, From>::doit(Val);
   76|  3.76k|  }
_ZN7llvm_ks16cast_convert_valINS_19MCRelaxableFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  200|  3.76k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  3.76k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  3.76k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  3.76k|    return Res2;
  204|  3.76k|  }
_ZN7llvm_ks4castINS_14MCFillFragmentEKNS_10MCFragmentEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|  6.45k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  6.45k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 6.45k, False: 0]
  |  Branch (230:3): [True: 6.45k, Folded]
  |  Branch (230:3): [True: 6.45k, False: 0]
  ------------------
  231|  6.45k|  return cast_convert_val<X, Y,
  232|  6.45k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  6.45k|}
_ZN7llvm_ks3isaINS_14MCFillFragmentENS_10MCFragmentEEEbRKT0_:
  132|  6.45k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  6.45k|  return isa_impl_wrap<X, const Y,
  134|  6.45k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  6.45k|}
_ZN7llvm_ks13isa_impl_wrapINS_14MCFillFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  121|  6.45k|  static bool doit(const FromTy &Val) {
  122|  6.45k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  6.45k|  }
_ZN7llvm_ks11isa_impl_clINS_14MCFillFragmentEKNS_10MCFragmentEE4doitERS3_:
   74|  6.45k|  static inline bool doit(const From &Val) {
   75|  6.45k|    return isa_impl<To, From>::doit(Val);
   76|  6.45k|  }
_ZN7llvm_ks16cast_convert_valINS_14MCFillFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  200|  6.45k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  6.45k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  6.45k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  6.45k|    return Res2;
  204|  6.45k|  }
_ZN7llvm_ks4castINS_15MCAlignFragmentEKNS_10MCFragmentEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|  27.3k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  27.3k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 27.3k, False: 0]
  |  Branch (230:3): [True: 27.3k, Folded]
  |  Branch (230:3): [True: 27.3k, False: 0]
  ------------------
  231|  27.3k|  return cast_convert_val<X, Y,
  232|  27.3k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  27.3k|}
_ZN7llvm_ks3isaINS_15MCAlignFragmentENS_10MCFragmentEEEbRKT0_:
  132|  27.3k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  27.3k|  return isa_impl_wrap<X, const Y,
  134|  27.3k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  27.3k|}
_ZN7llvm_ks13isa_impl_wrapINS_15MCAlignFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  121|  27.3k|  static bool doit(const FromTy &Val) {
  122|  27.3k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  27.3k|  }
_ZN7llvm_ks11isa_impl_clINS_15MCAlignFragmentEKNS_10MCFragmentEE4doitERS3_:
   74|  27.3k|  static inline bool doit(const From &Val) {
   75|  27.3k|    return isa_impl<To, From>::doit(Val);
   76|  27.3k|  }
_ZN7llvm_ks16cast_convert_valINS_15MCAlignFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  200|  27.3k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  27.3k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  27.3k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  27.3k|    return Res2;
  204|  27.3k|  }
_ZN7llvm_ks4castINS_13MCOrgFragmentEKNS_10MCFragmentEEENS_10cast_rettyIT_T0_E8ret_typeERS6_:
  229|  47.9k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  47.9k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 47.9k, False: 0]
  |  Branch (230:3): [True: 47.9k, Folded]
  |  Branch (230:3): [True: 47.9k, False: 0]
  ------------------
  231|  47.9k|  return cast_convert_val<X, Y,
  232|  47.9k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  47.9k|}
_ZN7llvm_ks3isaINS_13MCOrgFragmentENS_10MCFragmentEEEbRKT0_:
  132|  47.9k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  47.9k|  return isa_impl_wrap<X, const Y,
  134|  47.9k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  47.9k|}
_ZN7llvm_ks13isa_impl_wrapINS_13MCOrgFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  121|  47.9k|  static bool doit(const FromTy &Val) {
  122|  47.9k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  47.9k|  }
_ZN7llvm_ks11isa_impl_clINS_13MCOrgFragmentEKNS_10MCFragmentEE4doitERS3_:
   74|  47.9k|  static inline bool doit(const From &Val) {
   75|  47.9k|    return isa_impl<To, From>::doit(Val);
   76|  47.9k|  }
_ZN7llvm_ks16cast_convert_valINS_13MCOrgFragmentEKNS_10MCFragmentES3_E4doitERS3_:
  200|  47.9k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  47.9k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  47.9k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  47.9k|    return Res2;
  204|  47.9k|  }
_ZN7llvm_ks3isaINS_17MCEncodedFragmentEPNS_10MCFragmentEEEbRKT0_:
  132|  48.2k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  48.2k|  return isa_impl_wrap<X, const Y,
  134|  48.2k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  48.2k|}
_ZN7llvm_ks13isa_impl_wrapINS_17MCEncodedFragmentEKPNS_10MCFragmentEPKS2_E4doitERS4_:
  111|  48.2k|  static bool doit(const From &Val) {
  112|  48.2k|    return isa_impl_wrap<To, SimpleFrom,
  113|  48.2k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  48.2k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  48.2k|  }
_ZN7llvm_ks13isa_impl_wrapINS_17MCEncodedFragmentEPKNS_10MCFragmentES4_E4doitERKS4_:
  121|  48.2k|  static bool doit(const FromTy &Val) {
  122|  48.2k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  48.2k|  }
_ZN7llvm_ks11isa_impl_clINS_17MCEncodedFragmentEPKNS_10MCFragmentEE4doitES4_:
   94|  48.2k|  static inline bool doit(const From *Val) {
   95|  48.2k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 48.2k, False: 0]
  |  Branch (95:5): [True: 48.2k, Folded]
  |  Branch (95:5): [True: 48.2k, False: 0]
  ------------------
   96|  48.2k|    return isa_impl<To, From>::doit(*Val);
   97|  48.2k|  }
_ZN7llvm_ks8isa_implINS_17MCEncodedFragmentENS_10MCFragmentEvE4doitERKS2_:
   55|  48.2k|  static inline bool doit(const From &Val) {
   56|  48.2k|    return To::classof(&Val);
   57|  48.2k|  }
_ZN7llvm_ks13simplify_typeIKPKNS_9MCSectionEE18getSimplifiedValueERS4_:
   45|  26.0k|  static RetType getSimplifiedValue(const From& Val) {
   46|  26.0k|    return simplify_type<From>::getSimplifiedValue(const_cast<From&>(Val));
   47|  26.0k|  }
_ZN7llvm_ks13simplify_typeIPKNS_9MCSectionEE18getSimplifiedValueERS3_:
   36|  26.0k|  static SimpleType &getSimplifiedValue(From &Val) { return Val; }
_ZN7llvm_ks8dyn_castINS_17MCEncodedFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  297|  37.4k|dyn_cast(Y *Val) {
  298|  37.4k|  return isa<X>(Val) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (298:10): [True: 10.7k, False: 26.6k]
  ------------------
  299|  37.4k|}
_ZN7llvm_ks4castINS_17MCEncodedFragmentENS_10MCFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  10.7k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  10.7k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 10.7k, False: 0]
  |  Branch (237:3): [True: 10.7k, Folded]
  |  Branch (237:3): [True: 10.7k, False: 0]
  ------------------
  238|  10.7k|  return cast_convert_val<X, Y*,
  239|  10.7k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  10.7k|}
_ZN7llvm_ks16cast_convert_valINS_17MCEncodedFragmentEPNS_10MCFragmentES3_E4doitERKS3_:
  200|  10.7k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  10.7k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  10.7k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  10.7k|    return Res2;
  204|  10.7k|  }
_ZN7llvm_ks3isaINS_28MCCompactEncodedInstFragmentEPNS_17MCEncodedFragmentEEEbRKT0_:
  132|  10.7k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  10.7k|  return isa_impl_wrap<X, const Y,
  134|  10.7k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  10.7k|}
_ZN7llvm_ks13isa_impl_wrapINS_28MCCompactEncodedInstFragmentEKPNS_17MCEncodedFragmentEPKS2_E4doitERS4_:
  111|  10.7k|  static bool doit(const From &Val) {
  112|  10.7k|    return isa_impl_wrap<To, SimpleFrom,
  113|  10.7k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  10.7k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  10.7k|  }
_ZN7llvm_ks13isa_impl_wrapINS_28MCCompactEncodedInstFragmentEPKNS_17MCEncodedFragmentES4_E4doitERKS4_:
  121|  10.7k|  static bool doit(const FromTy &Val) {
  122|  10.7k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  10.7k|  }
_ZN7llvm_ks11isa_impl_clINS_28MCCompactEncodedInstFragmentEPKNS_17MCEncodedFragmentEE4doitES4_:
   94|  10.7k|  static inline bool doit(const From *Val) {
   95|  10.7k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 10.7k, False: 0]
  |  Branch (95:5): [True: 10.7k, Folded]
  |  Branch (95:5): [True: 10.7k, False: 0]
  ------------------
   96|  10.7k|    return isa_impl<To, From>::doit(*Val);
   97|  10.7k|  }
_ZN7llvm_ks8isa_implINS_28MCCompactEncodedInstFragmentENS_17MCEncodedFragmentEvE4doitERKS2_:
   55|  10.7k|  static inline bool doit(const From &Val) {
   56|  10.7k|    return To::classof(&Val);
   57|  10.7k|  }
_ZN7llvm_ks13simplify_typeIKPNS_17MCEncodedFragmentEE18getSimplifiedValueERS3_:
   45|  33.5k|  static RetType getSimplifiedValue(const From& Val) {
   46|  33.5k|    return simplify_type<From>::getSimplifiedValue(const_cast<From&>(Val));
   47|  33.5k|  }
_ZN7llvm_ks13simplify_typeIPNS_17MCEncodedFragmentEE18getSimplifiedValueERS2_:
   36|  33.5k|  static SimpleType &getSimplifiedValue(From &Val) { return Val; }
_ZN7llvm_ks8dyn_castINS_14MCDataFragmentENS_17MCEncodedFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  297|  10.7k|dyn_cast(Y *Val) {
  298|  10.7k|  return isa<X>(Val) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (298:10): [True: 9.64k, False: 1.14k]
  ------------------
  299|  10.7k|}
_ZN7llvm_ks3isaINS_14MCDataFragmentEPNS_17MCEncodedFragmentEEEbRKT0_:
  132|  20.4k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  20.4k|  return isa_impl_wrap<X, const Y,
  134|  20.4k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  20.4k|}
_ZN7llvm_ks13isa_impl_wrapINS_14MCDataFragmentEKPNS_17MCEncodedFragmentEPKS2_E4doitERS4_:
  111|  20.4k|  static bool doit(const From &Val) {
  112|  20.4k|    return isa_impl_wrap<To, SimpleFrom,
  113|  20.4k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  20.4k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  20.4k|  }
_ZN7llvm_ks13isa_impl_wrapINS_14MCDataFragmentEPKNS_17MCEncodedFragmentES4_E4doitERKS4_:
  121|  20.4k|  static bool doit(const FromTy &Val) {
  122|  20.4k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  20.4k|  }
_ZN7llvm_ks11isa_impl_clINS_14MCDataFragmentEPKNS_17MCEncodedFragmentEE4doitES4_:
   94|  20.4k|  static inline bool doit(const From *Val) {
   95|  20.4k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 20.4k, False: 0]
  |  Branch (95:5): [True: 20.4k, Folded]
  |  Branch (95:5): [True: 20.4k, False: 0]
  ------------------
   96|  20.4k|    return isa_impl<To, From>::doit(*Val);
   97|  20.4k|  }
_ZN7llvm_ks8isa_implINS_14MCDataFragmentENS_17MCEncodedFragmentEvE4doitERKS2_:
   55|  20.4k|  static inline bool doit(const From &Val) {
   56|  20.4k|    return To::classof(&Val);
   57|  20.4k|  }
_ZN7llvm_ks4castINS_14MCDataFragmentENS_17MCEncodedFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  9.64k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  9.64k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 9.64k, False: 0]
  |  Branch (237:3): [True: 9.64k, Folded]
  |  Branch (237:3): [True: 9.64k, False: 0]
  ------------------
  238|  9.64k|  return cast_convert_val<X, Y*,
  239|  9.64k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  9.64k|}
_ZN7llvm_ks16cast_convert_valINS_14MCDataFragmentEPNS_17MCEncodedFragmentES3_E4doitERKS3_:
  200|  9.64k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  9.64k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  9.64k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  9.64k|    return Res2;
  204|  9.64k|  }
_ZN7llvm_ks8dyn_castINS_19MCRelaxableFragmentENS_17MCEncodedFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  297|  1.14k|dyn_cast(Y *Val) {
  298|  1.14k|  return isa<X>(Val) ? cast<X>(Val) : nullptr;
  ------------------
  |  Branch (298:10): [True: 1.14k, False: 0]
  ------------------
  299|  1.14k|}
_ZN7llvm_ks3isaINS_19MCRelaxableFragmentEPNS_17MCEncodedFragmentEEEbRKT0_:
  132|  2.28k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  2.28k|  return isa_impl_wrap<X, const Y,
  134|  2.28k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  2.28k|}
_ZN7llvm_ks13isa_impl_wrapINS_19MCRelaxableFragmentEKPNS_17MCEncodedFragmentEPKS2_E4doitERS4_:
  111|  2.28k|  static bool doit(const From &Val) {
  112|  2.28k|    return isa_impl_wrap<To, SimpleFrom,
  113|  2.28k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  2.28k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  2.28k|  }
_ZN7llvm_ks13isa_impl_wrapINS_19MCRelaxableFragmentEPKNS_17MCEncodedFragmentES4_E4doitERKS4_:
  121|  2.28k|  static bool doit(const FromTy &Val) {
  122|  2.28k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  2.28k|  }
_ZN7llvm_ks11isa_impl_clINS_19MCRelaxableFragmentEPKNS_17MCEncodedFragmentEE4doitES4_:
   94|  2.28k|  static inline bool doit(const From *Val) {
   95|  2.28k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 2.28k, False: 0]
  |  Branch (95:5): [True: 2.28k, Folded]
  |  Branch (95:5): [True: 2.28k, False: 0]
  ------------------
   96|  2.28k|    return isa_impl<To, From>::doit(*Val);
   97|  2.28k|  }
_ZN7llvm_ks8isa_implINS_19MCRelaxableFragmentENS_17MCEncodedFragmentEvE4doitERKS2_:
   55|  2.28k|  static inline bool doit(const From &Val) {
   56|  2.28k|    return To::classof(&Val);
   57|  2.28k|  }
_ZN7llvm_ks4castINS_19MCRelaxableFragmentENS_17MCEncodedFragmentEEENS_10cast_rettyIT_PT0_E8ret_typeES6_:
  236|  1.14k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  1.14k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 1.14k, False: 0]
  |  Branch (237:3): [True: 1.14k, Folded]
  |  Branch (237:3): [True: 1.14k, False: 0]
  ------------------
  238|  1.14k|  return cast_convert_val<X, Y*,
  239|  1.14k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  1.14k|}
_ZN7llvm_ks16cast_convert_valINS_19MCRelaxableFragmentEPNS_17MCEncodedFragmentES3_E4doitERKS3_:
  200|  1.14k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  1.14k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  1.14k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  1.14k|    return Res2;
  204|  1.14k|  }
_ZN7llvm_ks4castINS_19MCRelaxableFragmentENS_14ilist_iteratorINS_10MCFragmentEEEEENS_10cast_rettyIT_T0_E8ret_typeERS7_:
  229|  2.20k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  2.20k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 2.20k, False: 0]
  |  Branch (230:3): [True: 2.20k, Folded]
  |  Branch (230:3): [True: 2.20k, False: 0]
  ------------------
  231|  2.20k|  return cast_convert_val<X, Y,
  232|  2.20k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  2.20k|}
_ZN7llvm_ks3isaINS_19MCRelaxableFragmentENS_14ilist_iteratorINS_10MCFragmentEEEEEbRKT0_:
  132|  2.20k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  2.20k|  return isa_impl_wrap<X, const Y,
  134|  2.20k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  2.20k|}
_ZN7llvm_ks13isa_impl_wrapINS_19MCRelaxableFragmentEKNS_14ilist_iteratorINS_10MCFragmentEEEPS3_E4doitERS5_:
  111|  2.20k|  static bool doit(const From &Val) {
  112|  2.20k|    return isa_impl_wrap<To, SimpleFrom,
  113|  2.20k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  2.20k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  2.20k|  }
_ZN7llvm_ks13isa_impl_wrapINS_19MCRelaxableFragmentEPNS_10MCFragmentES3_E4doitERKS3_:
  121|  2.20k|  static bool doit(const FromTy &Val) {
  122|  2.20k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  2.20k|  }
_ZN7llvm_ks11isa_impl_clINS_19MCRelaxableFragmentEPNS_10MCFragmentEE4doitEPKS2_:
   80|  2.20k|  static inline bool doit(const From *Val) {
   81|  2.20k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (81:5): [True: 2.20k, False: 0]
  |  Branch (81:5): [True: 2.20k, Folded]
  |  Branch (81:5): [True: 2.20k, False: 0]
  ------------------
   82|  2.20k|    return isa_impl<To, From>::doit(*Val);
   83|  2.20k|  }
_ZN7llvm_ks16cast_convert_valINS_19MCRelaxableFragmentENS_14ilist_iteratorINS_10MCFragmentEEEPS3_E4doitERS4_:
  191|  2.20k|  static typename cast_retty<To, From>::ret_type doit(From &Val) {
  192|  2.20k|    return cast_convert_val<To, SimpleFrom,
  193|  2.20k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  194|  2.20k|                          simplify_type<From>::getSimplifiedValue(Val));
  195|  2.20k|  }
_ZN7llvm_ks3isaINS_11MCSymbolELFEPKNS_8MCSymbolEEEbRKT0_:
  132|  52.9k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  52.9k|  return isa_impl_wrap<X, const Y,
  134|  52.9k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  52.9k|}
_ZN7llvm_ks13isa_impl_wrapINS_11MCSymbolELFEKPKNS_8MCSymbolES4_E4doitERS5_:
  111|  52.9k|  static bool doit(const From &Val) {
  112|  52.9k|    return isa_impl_wrap<To, SimpleFrom,
  113|  52.9k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  52.9k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  52.9k|  }
_ZN7llvm_ks13simplify_typeIKPKNS_8MCSymbolEE18getSimplifiedValueERS4_:
   45|  52.9k|  static RetType getSimplifiedValue(const From& Val) {
   46|  52.9k|    return simplify_type<From>::getSimplifiedValue(const_cast<From&>(Val));
   47|  52.9k|  }
_ZN7llvm_ks13simplify_typeIPKNS_8MCSymbolEE18getSimplifiedValueERS3_:
   36|  52.9k|  static SimpleType &getSimplifiedValue(From &Val) { return Val; }
_ZN7llvm_ks4castINS_11MCSymbolELFEKNS_8MCSymbolEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  236|  39.6k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  39.6k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 39.6k, False: 0]
  |  Branch (237:3): [True: 39.6k, Folded]
  |  Branch (237:3): [True: 39.6k, False: 0]
  ------------------
  238|  39.6k|  return cast_convert_val<X, Y*,
  239|  39.6k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  39.6k|}
_ZN7llvm_ks16cast_convert_valINS_11MCSymbolELFEPKNS_8MCSymbolES4_E4doitERKS4_:
  200|  39.6k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  39.6k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  39.6k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  39.6k|    return Res2;
  204|  39.6k|  }
_ZN7llvm_ks4castINS_12MCSectionELFENS_9MCSectionEEENS_10cast_rettyIT_T0_E8ret_typeERS5_:
  229|  35.1k|inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  230|  35.1k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (230:3): [True: 35.1k, False: 0]
  |  Branch (230:3): [True: 35.1k, Folded]
  |  Branch (230:3): [True: 35.1k, False: 0]
  ------------------
  231|  35.1k|  return cast_convert_val<X, Y,
  232|  35.1k|                          typename simplify_type<Y>::SimpleType>::doit(Val);
  233|  35.1k|}
_ZN7llvm_ks3isaINS_12MCSectionELFENS_9MCSectionEEEbRKT0_:
  132|  35.1k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  35.1k|  return isa_impl_wrap<X, const Y,
  134|  35.1k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  35.1k|}
_ZN7llvm_ks13isa_impl_wrapINS_12MCSectionELFEKNS_9MCSectionES3_E4doitERS3_:
  121|  35.1k|  static bool doit(const FromTy &Val) {
  122|  35.1k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  35.1k|  }
_ZN7llvm_ks11isa_impl_clINS_12MCSectionELFEKNS_9MCSectionEE4doitERS3_:
   74|  35.1k|  static inline bool doit(const From &Val) {
   75|  35.1k|    return isa_impl<To, From>::doit(Val);
   76|  35.1k|  }
_ZN7llvm_ks8isa_implINS_12MCSectionELFENS_9MCSectionEvE4doitERKS2_:
   55|  61.1k|  static inline bool doit(const From &Val) {
   56|  61.1k|    return To::classof(&Val);
   57|  61.1k|  }
_ZN7llvm_ks16cast_convert_valINS_12MCSectionELFENS_9MCSectionES2_E4doitERKS2_:
  200|  35.1k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  35.1k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  35.1k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  35.1k|    return Res2;
  204|  35.1k|  }
_ZN7llvm_ks12cast_or_nullINS_11MCSymbolELFEKNS_8MCSymbolEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  267|  14.5k|cast_or_null(Y *Val) {
  268|  14.5k|  if (!Val) return nullptr;
  ------------------
  |  Branch (268:7): [True: 1.25k, False: 13.3k]
  ------------------
  269|  14.5k|  assert(isa<X>(Val) && "cast_or_null<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (269:3): [True: 13.3k, False: 0]
  |  Branch (269:3): [True: 13.3k, Folded]
  |  Branch (269:3): [True: 13.3k, False: 0]
  ------------------
  270|  13.3k|  return cast<X>(Val);
  271|  13.3k|}
_ZN7llvm_ks12cast_or_nullINS_12MCSectionELFEKNS_9MCSectionEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  267|  14.2k|cast_or_null(Y *Val) {
  268|  14.2k|  if (!Val) return nullptr;
  ------------------
  |  Branch (268:7): [True: 1.25k, False: 13.0k]
  ------------------
  269|  14.2k|  assert(isa<X>(Val) && "cast_or_null<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (269:3): [True: 13.0k, False: 0]
  |  Branch (269:3): [True: 13.0k, Folded]
  |  Branch (269:3): [True: 13.0k, False: 0]
  ------------------
  270|  13.0k|  return cast<X>(Val);
  271|  13.0k|}
_ZN7llvm_ks3isaINS_12MCSectionELFEPKNS_9MCSectionEEEbRKT0_:
  132|  26.0k|LLVM_ATTRIBUTE_UNUSED_RESULT inline bool isa(const Y &Val) {
  133|  26.0k|  return isa_impl_wrap<X, const Y,
  134|  26.0k|                       typename simplify_type<const Y>::SimpleType>::doit(Val);
  135|  26.0k|}
_ZN7llvm_ks13isa_impl_wrapINS_12MCSectionELFEKPKNS_9MCSectionES4_E4doitERS5_:
  111|  26.0k|  static bool doit(const From &Val) {
  112|  26.0k|    return isa_impl_wrap<To, SimpleFrom,
  113|  26.0k|      typename simplify_type<SimpleFrom>::SimpleType>::doit(
  114|  26.0k|                          simplify_type<const From>::getSimplifiedValue(Val));
  115|  26.0k|  }
_ZN7llvm_ks13isa_impl_wrapINS_12MCSectionELFEPKNS_9MCSectionES4_E4doitERKS4_:
  121|  26.0k|  static bool doit(const FromTy &Val) {
  122|  26.0k|    return isa_impl_cl<To,FromTy>::doit(Val);
  123|  26.0k|  }
_ZN7llvm_ks11isa_impl_clINS_12MCSectionELFEPKNS_9MCSectionEE4doitES4_:
   94|  26.0k|  static inline bool doit(const From *Val) {
   95|  26.0k|    assert(Val && "isa<> used on a null pointer");
  ------------------
  |  Branch (95:5): [True: 26.0k, False: 0]
  |  Branch (95:5): [True: 26.0k, Folded]
  |  Branch (95:5): [True: 26.0k, False: 0]
  ------------------
   96|  26.0k|    return isa_impl<To, From>::doit(*Val);
   97|  26.0k|  }
_ZN7llvm_ks4castINS_12MCSectionELFEKNS_9MCSectionEEENS_10cast_rettyIT_PT0_E8ret_typeES7_:
  236|  13.0k|inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  237|  13.0k|  assert(isa<X>(Val) && "cast<Ty>() argument of incompatible type!");
  ------------------
  |  Branch (237:3): [True: 13.0k, False: 0]
  |  Branch (237:3): [True: 13.0k, Folded]
  |  Branch (237:3): [True: 13.0k, False: 0]
  ------------------
  238|  13.0k|  return cast_convert_val<X, Y*,
  239|  13.0k|                          typename simplify_type<Y*>::SimpleType>::doit(Val);
  240|  13.0k|}
_ZN7llvm_ks16cast_convert_valINS_12MCSectionELFEPKNS_9MCSectionES4_E4doitERKS4_:
  200|  13.0k|  static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  201|  13.0k|    typename cast_retty<To, FromTy>::ret_type Res2
  202|  13.0k|     = (typename cast_retty<To, FromTy>::ret_type)const_cast<FromTy&>(Val);
  203|  13.0k|    return Res2;
  204|  13.0k|  }

_ZN7llvm_ks7support6endian9byte_swapItLNS0_10endiannessE1EEET_S4_:
   39|  34.0k|inline value_type byte_swap(value_type value) {
   40|  34.0k|  if (endian != native && sys::IsBigEndianHost != (endian == big))
  ------------------
  |  Branch (40:7): [True: 0, Folded]
  |  Branch (40:27): [Folded, False: 0]
  ------------------
   41|      0|    sys::swapByteOrder(value);
   42|  34.0k|  return value;
   43|  34.0k|}
_ZN7llvm_ks7support6endian9byte_swapIjLNS0_10endiannessE1EEET_S4_:
   39|  10.6M|inline value_type byte_swap(value_type value) {
   40|  10.6M|  if (endian != native && sys::IsBigEndianHost != (endian == big))
  ------------------
  |  Branch (40:7): [True: 0, Folded]
  |  Branch (40:27): [Folded, False: 0]
  ------------------
   41|      0|    sys::swapByteOrder(value);
   42|  10.6M|  return value;
   43|  10.6M|}

_ZN7llvm_ks7support6endian6WriterILNS0_10endiannessE1EE5writeIjEEvT_:
   34|  10.6M|  template <typename value_type> void write(value_type Val) {
   35|  10.6M|    Val = byte_swap<value_type, endian>(Val);
   36|  10.6M|    OS.write((const char *)&Val, sizeof(value_type));
   37|  10.6M|  }
_ZN7llvm_ks7support6endian6WriterILNS0_10endiannessE1EE5writeItEEvT_:
   34|  34.0k|  template <typename value_type> void write(value_type Val) {
   35|  34.0k|    Val = byte_swap<value_type, endian>(Val);
   36|  34.0k|    OS.write((const char *)&Val, sizeof(value_type));
   37|  34.0k|  }
_ZN7llvm_ks7support6endian6WriterILNS0_10endiannessE1EEC2ERNS_11raw_ostreamE:
   29|  10.6M|  Writer(raw_ostream &OS) : OS(OS) {}

_ZN7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEEC2ES6_:
  110|  20.9k|  ErrorOr(T Val) : HasError(false) {
  111|  20.9k|    new (getStorage()) storage_type(moveIfMoveConstructible<storage_type>(Val));
  112|  20.9k|  }
_ZN7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEE10getStorageEv:
  262|  62.9k|  storage_type *getStorage() {
  263|  62.9k|    assert(!HasError && "Cannot get value when an error exists!");
  ------------------
  |  Branch (263:5): [True: 62.9k, False: 0]
  |  Branch (263:5): [True: 62.9k, Folded]
  |  Branch (263:5): [True: 62.9k, False: 0]
  ------------------
  264|  62.9k|    return reinterpret_cast<storage_type*>(TStorage.buffer);
  265|  62.9k|  }
_ZN7llvm_ks23moveIfMoveConstructibleINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEES6_EEONS1_9enable_ifIXsr3std16is_constructibleIT_T0_EE5valueENS1_16remove_referenceIS9_E4typeEE4typeERS9_:
   29|  20.9k| moveIfMoveConstructible(V &Val) {
   30|  20.9k|  return std::move(Val);
   31|  20.9k|}
_ZN7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEED2Ev:
  166|  20.9k|  ~ErrorOr() {
  167|  20.9k|    if (!HasError)
  ------------------
  |  Branch (167:9): [True: 20.9k, False: 7]
  ------------------
  168|  20.9k|      getStorage()->~storage_type();
  169|  20.9k|  }
_ZNK7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEE8getErrorEv:
  179|  20.9k|  std::error_code getError() const {
  180|  20.9k|    return HasError ? *getErrorStorage() : std::error_code();
  ------------------
  |  Branch (180:12): [True: 0, False: 20.9k]
  ------------------
  181|  20.9k|  }
_ZN7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEE15getErrorStorageEv:
  272|      7|  std::error_code *getErrorStorage() {
  273|      7|    assert(HasError && "Cannot get error when a value exists!");
  ------------------
  |  Branch (273:5): [True: 7, False: 0]
  |  Branch (273:5): [True: 7, Folded]
  |  Branch (273:5): [True: 7, False: 0]
  ------------------
  274|      7|    return reinterpret_cast<std::error_code *>(ErrorStorage.buffer);
  275|      7|  }
_ZN7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEEdeEv:
  189|  20.9k|  reference operator *() {
  190|  20.9k|    return *getStorage();
  191|  20.9k|  }
_ZN7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEEC2ENS1_10error_codeE:
  106|      7|  ErrorOr(std::error_code EC) : HasError(true) {
  107|      7|    new (getErrorStorage()) std::error_code(EC);
  108|      7|  }
_ZNK7llvm_ks7ErrorOrINSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEEEcvbEv:
  172|      7|  explicit operator bool() const {
  173|      7|    return !HasError;
  174|      7|  }

_ZN7llvm_ks3sys2fs8UniqueIDC2Emm:
  123|  41.9k|  UniqueID(uint64_t Device, uint64_t File) : Device(Device), File(File) {}
_ZNK7llvm_ks3sys2fs8UniqueIDeqERKS2_:
  124|  20.9k|  bool operator==(const UniqueID &Other) const {
  125|  20.9k|    return Device == Other.Device && File == Other.File;
  ------------------
  |  Branch (125:12): [True: 20.9k, False: 0]
  |  Branch (125:38): [True: 20.9k, False: 0]
  ------------------
  126|  20.9k|  }
_ZN7llvm_ks3sys2fs11file_statusC2Ev:
  161|  41.9k|    file_status() : fs_st_dev(0), fs_st_ino(0), fs_st_mtime(0),
  162|  41.9k|        fs_st_uid(0), fs_st_gid(0), fs_st_size(0),
  163|  41.9k|        Type(file_type::status_error), Perms(perms_not_known) {}
_ZN7llvm_ks3sys2fs11file_statusC2ENS1_9file_typeENS1_5permsEmmljjl:
  171|  41.9k|        : fs_st_dev(Dev), fs_st_ino(Ino), fs_st_mtime(MTime), fs_st_uid(UID),
  172|  41.9k|          fs_st_gid(GID), fs_st_size(Size), Type(Type), Perms(Perms) {}
_ZNK7llvm_ks3sys2fs11file_status4typeEv:
  196|      1|  file_type type() const { return Type; }

_ZN7llvm_ks6isUIntILj32EEEbm:
  302|  3.18k|inline bool isUInt<32>(uint64_t x) {
  303|  3.18k|  return static_cast<uint32_t>(x) == x;
  304|  3.18k|}
_ZN7llvm_ks7isUIntNEjm:
  315|  76.7M|inline bool isUIntN(unsigned N, uint64_t x) {
  316|  76.7M|  return N >= 64 || x < (UINT64_C(1)<<(N));
  ------------------
  |  Branch (316:10): [True: 2.35k, False: 76.7M]
  |  Branch (316:21): [True: 76.7M, False: 14.1k]
  ------------------
  317|  76.7M|}
_ZN7llvm_ks6isIntNEjl:
  321|  14.1k|inline bool isIntN(unsigned N, int64_t x) {
  322|  14.1k|  return N >= 64 || (-(INT64_C(1)<<(N-1)) <= x && x < (INT64_C(1)<<(N-1)));
  ------------------
  |  Branch (322:10): [True: 0, False: 14.1k]
  |  Branch (322:22): [True: 10.3k, False: 3.76k]
  |  Branch (322:51): [True: 5.37k, False: 5.00k]
  ------------------
  323|  14.1k|}
_ZN7llvm_ks13isPowerOf2_32Ej:
  354|     57|inline bool isPowerOf2_32(uint32_t Value) {
  355|     57|  return Value && !(Value & (Value - 1));
  ------------------
  |  Branch (355:10): [True: 57, False: 0]
  |  Branch (355:19): [True: 57, False: 0]
  ------------------
  356|     57|}
_ZN7llvm_ks13isPowerOf2_64Em:
  360|  3.42M|inline bool isPowerOf2_64(uint64_t Value) {
  361|  3.42M|  return Value && !(Value & (Value - int64_t(1L)));
  ------------------
  |  Branch (361:10): [True: 3.42M, False: 10]
  |  Branch (361:19): [True: 3.42M, False: 238]
  ------------------
  362|  3.42M|}
_ZN7llvm_ks7Log2_32Ej:
  468|     57|inline unsigned Log2_32(uint32_t Value) {
  469|     57|  return 31 - countLeadingZeros(Value);
  470|     57|}
_ZN7llvm_ks7Log2_64Em:
  474|     13|inline unsigned Log2_64(uint64_t Value) {
  475|     13|  return 63 - countLeadingZeros(Value);
  476|     13|}
_ZN7llvm_ks9alignAddrEPKvm:
  565|  3.42M|inline uintptr_t alignAddr(const void *Addr, size_t Alignment) {
  566|  3.42M|  assert(Alignment && isPowerOf2_64((uint64_t)Alignment) &&
  ------------------
  |  Branch (566:3): [True: 3.42M, False: 0]
  |  Branch (566:3): [True: 3.42M, False: 0]
  |  Branch (566:3): [True: 3.42M, Folded]
  |  Branch (566:3): [True: 3.42M, False: 0]
  ------------------
  567|  3.42M|         "Alignment is not a power of two!");
  568|       |
  569|  3.42M|  assert((uintptr_t)Addr + Alignment - 1 >= (uintptr_t)Addr);
  ------------------
  |  Branch (569:3): [True: 3.42M, False: 0]
  ------------------
  570|       |
  571|  3.42M|  return (((uintptr_t)Addr + Alignment - 1) & ~(uintptr_t)(Alignment - 1));
  572|  3.42M|}
_ZN7llvm_ks19alignmentAdjustmentEPKvm:
  576|  3.15M|inline size_t alignmentAdjustment(const void *Ptr, size_t Alignment) {
  577|  3.15M|  return alignAddr(Ptr, Alignment) - (uintptr_t)Ptr;
  578|  3.15M|}
_ZN7llvm_ks12NextPowerOf2Em:
  582|  55.7k|inline uint64_t NextPowerOf2(uint64_t A) {
  583|  55.7k|  A |= (A >> 1);
  584|  55.7k|  A |= (A >> 2);
  585|  55.7k|  A |= (A >> 4);
  586|  55.7k|  A |= (A >> 8);
  587|  55.7k|  A |= (A >> 16);
  588|  55.7k|  A |= (A >> 32);
  589|  55.7k|  return A + 1;
  590|  55.7k|}
_ZN7llvm_ks7alignToEmmm:
  619|  78.2k|inline uint64_t alignTo(uint64_t Value, uint64_t Align, uint64_t Skew = 0) {
  620|  78.2k|  Skew %= Align;
  621|  78.2k|  return (Value + Align - 1 - Skew) / Align * Align + Skew;
  622|  78.2k|}
_ZN7llvm_ks17OffsetToAlignmentEmm:
  627|  27.1k|inline uint64_t OffsetToAlignment(uint64_t Value, uint64_t Align) {
  628|  27.1k|  return alignTo(Value, Align) - Value;
  629|  27.1k|}
_ZN7llvm_ks17countLeadingZerosIjEEmT_NS_12ZeroBehaviorE:
  178|  1.87k|std::size_t countLeadingZeros(T Val, ZeroBehavior ZB = ZB_Width) {
  179|  1.87k|  static_assert(std::numeric_limits<T>::is_integer &&
  180|  1.87k|                    !std::numeric_limits<T>::is_signed,
  181|  1.87k|                "Only unsigned integral types are allowed.");
  182|  1.87k|  return detail::LeadingZerosCounter<T, sizeof(T)>::count(Val, ZB);
  183|  1.87k|}
_ZN7llvm_ks6detail19LeadingZerosCounterIjLm4EE5countEjNS_12ZeroBehaviorE:
  137|  1.87k|  static std::size_t count(T Val, ZeroBehavior ZB) {
  138|  1.87k|    if (ZB != ZB_Undefined && Val == 0)
  ------------------
  |  Branch (138:9): [True: 1.87k, False: 0]
  |  Branch (138:31): [True: 0, False: 1.87k]
  ------------------
  139|      0|      return 32;
  140|       |
  141|  1.87k|#if __has_builtin(__builtin_clz) || LLVM_GNUC_PREREQ(4, 0, 0)
  142|  1.87k|    return __builtin_clz(Val);
  143|       |#elif defined(_MSC_VER)
  144|       |    unsigned long Index;
  145|       |    _BitScanReverse(&Index, Val);
  146|       |    return Index ^ 31;
  147|       |#endif
  148|  1.87k|  }
_ZN7llvm_ks17countLeadingZerosImEEmT_NS_12ZeroBehaviorE:
  178|  1.47M|std::size_t countLeadingZeros(T Val, ZeroBehavior ZB = ZB_Width) {
  179|  1.47M|  static_assert(std::numeric_limits<T>::is_integer &&
  180|  1.47M|                    !std::numeric_limits<T>::is_signed,
  181|  1.47M|                "Only unsigned integral types are allowed.");
  182|  1.47M|  return detail::LeadingZerosCounter<T, sizeof(T)>::count(Val, ZB);
  183|  1.47M|}
_ZN7llvm_ks6detail19LeadingZerosCounterImLm8EE5countEmNS_12ZeroBehaviorE:
  153|  1.47M|  static std::size_t count(T Val, ZeroBehavior ZB) {
  154|  1.47M|    if (ZB != ZB_Undefined && Val == 0)
  ------------------
  |  Branch (154:9): [True: 1.01M, False: 463k]
  |  Branch (154:31): [True: 158k, False: 852k]
  ------------------
  155|   158k|      return 64;
  156|       |
  157|  1.31M|#if __has_builtin(__builtin_clzll) || LLVM_GNUC_PREREQ(4, 0, 0)
  158|  1.31M|    return __builtin_clzll(Val);
  159|       |#elif defined(_MSC_VER)
  160|       |    unsigned long Index;
  161|       |    _BitScanReverse64(&Index, Val);
  162|       |    return Index ^ 63;
  163|       |#endif
  164|  1.47M|  }
_ZN7llvm_ks18countTrailingZerosImEEmT_NS_12ZeroBehaviorE:
  109|  77.4k|std::size_t countTrailingZeros(T Val, ZeroBehavior ZB = ZB_Width) {
  110|  77.4k|  static_assert(std::numeric_limits<T>::is_integer &&
  111|  77.4k|                    !std::numeric_limits<T>::is_signed,
  112|  77.4k|                "Only unsigned integral types are allowed.");
  113|  77.4k|  return detail::TrailingZerosCounter<T, sizeof(T)>::count(Val, ZB);
  114|  77.4k|}
_ZN7llvm_ks6detail20TrailingZerosCounterImLm8EE5countEmNS_12ZeroBehaviorE:
   84|  77.4k|  static std::size_t count(T Val, ZeroBehavior ZB) {
   85|  77.4k|    if (ZB != ZB_Undefined && Val == 0)
  ------------------
  |  Branch (85:9): [True: 0, False: 77.4k]
  |  Branch (85:31): [True: 0, False: 0]
  ------------------
   86|      0|      return 64;
   87|       |
   88|  77.4k|#if __has_builtin(__builtin_ctzll) || LLVM_GNUC_PREREQ(4, 0, 0)
   89|  77.4k|    return __builtin_ctzll(Val);
   90|       |#elif defined(_MSC_VER)
   91|       |    unsigned long Index;
   92|       |    _BitScanForward64(&Index, Val);
   93|       |    return Index;
   94|       |#endif
   95|  77.4k|  }
_ZN7llvm_ks15countPopulationImEEjT_:
  449|  28.4k|inline unsigned countPopulation(T Value) {
  450|  28.4k|  static_assert(std::numeric_limits<T>::is_integer &&
  451|  28.4k|                    !std::numeric_limits<T>::is_signed,
  452|  28.4k|                "Only unsigned integral types are allowed.");
  453|  28.4k|  return detail::PopulationCounter<T, sizeof(T)>::count(Value);
  454|  28.4k|}
_ZN7llvm_ks6detail17PopulationCounterImLm8EE5countEm:
  431|  28.4k|  static unsigned count(T Value) {
  432|  28.4k|#if __GNUC__ >= 4
  433|  28.4k|    return __builtin_popcountll(Value);
  434|       |#else
  435|       |    uint64_t v = Value;
  436|       |    v = v - ((v >> 1) & 0x5555555555555555ULL);
  437|       |    v = (v & 0x3333333333333333ULL) + ((v >> 2) & 0x3333333333333333ULL);
  438|       |    v = (v + (v >> 4)) & 0x0F0F0F0F0F0F0F0FULL;
  439|       |    return unsigned((uint64_t)(v * 0x0101010101010101ULL) >> 56);
  440|       |#endif
  441|  28.4k|  }
_ZN7llvm_ks12findFirstSetImEET_S1_NS_12ZeroBehaviorE:
  192|  77.4k|template <typename T> T findFirstSet(T Val, ZeroBehavior ZB = ZB_Max) {
  193|  77.4k|  if (ZB == ZB_Max && Val == 0)
  ------------------
  |  Branch (193:7): [True: 77.4k, False: 0]
  |  Branch (193:23): [True: 0, False: 77.4k]
  ------------------
  194|      0|    return std::numeric_limits<T>::max();
  195|       |
  196|  77.4k|  return countTrailingZeros(Val, ZB_Undefined);
  197|  77.4k|}
_ZN7llvm_ks11findLastSetImEET_S1_NS_12ZeroBehaviorE:
  206|   463k|template <typename T> T findLastSet(T Val, ZeroBehavior ZB = ZB_Max) {
  207|   463k|  if (ZB == ZB_Max && Val == 0)
  ------------------
  |  Branch (207:7): [True: 463k, False: 0]
  |  Branch (207:23): [True: 0, False: 463k]
  ------------------
  208|      0|    return std::numeric_limits<T>::max();
  209|       |
  210|       |  // Use ^ instead of - because both gcc and llvm can remove the associated ^
  211|       |  // in the __builtin_clz intrinsic on x86.
  212|   463k|  return countLeadingZeros(Val, ZB_Undefined) ^
  213|   463k|         (std::numeric_limits<T>::digits - 1);
  214|   463k|}
_ZN7llvm_ks18countTrailingZerosIjEEmT_NS_12ZeroBehaviorE:
  109|  10.5k|std::size_t countTrailingZeros(T Val, ZeroBehavior ZB = ZB_Width) {
  110|  10.5k|  static_assert(std::numeric_limits<T>::is_integer &&
  111|  10.5k|                    !std::numeric_limits<T>::is_signed,
  112|  10.5k|                "Only unsigned integral types are allowed.");
  113|  10.5k|  return detail::TrailingZerosCounter<T, sizeof(T)>::count(Val, ZB);
  114|  10.5k|}
_ZN7llvm_ks6detail20TrailingZerosCounterIjLm4EE5countEjNS_12ZeroBehaviorE:
   68|  10.5k|  static std::size_t count(T Val, ZeroBehavior ZB) {
   69|  10.5k|    if (ZB != ZB_Undefined && Val == 0)
  ------------------
  |  Branch (69:9): [True: 10.5k, False: 0]
  |  Branch (69:31): [True: 0, False: 10.5k]
  ------------------
   70|      0|      return 32;
   71|       |
   72|  10.5k|#if __has_builtin(__builtin_ctz) || LLVM_GNUC_PREREQ(4, 0, 0)
   73|  10.5k|    return __builtin_ctz(Val);
   74|       |#elif defined(_MSC_VER)
   75|       |    unsigned long Index;
   76|       |    _BitScanForward(&Index, Val);
   77|       |    return Index;
   78|       |#endif
   79|  10.5k|  }

_ZN7llvm_ks12MemoryBufferC2Ev:
   43|  72.0k|  MemoryBuffer() {}
_ZNK7llvm_ks12MemoryBuffer14getBufferStartEv:
   49|  43.2M|  const char *getBufferStart() const { return BufferStart; }
_ZNK7llvm_ks12MemoryBuffer12getBufferEndEv:
   50|  19.6M|  const char *getBufferEnd() const   { return BufferEnd; }
_ZNK7llvm_ks12MemoryBuffer13getBufferSizeEv:
   51|   123k|  size_t getBufferSize() const { return BufferEnd-BufferStart; }
_ZNK7llvm_ks12MemoryBuffer9getBufferEv:
   53|   123k|  StringRef getBuffer() const {
   54|   123k|    return StringRef(BufferStart, getBufferSize());
   55|   123k|  }

_ZNK7llvm_ks3sys4path14const_iteratordeEv:
   61|  41.9k|  reference operator*() const { return Component; }
_ZNK7llvm_ks3sys4path14const_iteratorptEv:
   62|  20.9k|  pointer   operator->() const { return &Component; }
_ZNK7llvm_ks3sys4path14const_iteratorneERKS2_:
   65|  20.9k|  bool operator!=(const const_iterator &RHS) const { return !(*this == RHS); }

_ZN7llvm_ks21PointerLikeTypeTraitsIPNS_10MCFragmentEE16getAsVoidPointerES2_:
   41|   457k|  static inline void *getAsVoidPointer(T *P) { return P; }
_ZN7llvm_ks21PointerLikeTypeTraitsIPNS_10MCFragmentEE18getFromVoidPointerEPv:
   42|  1.19M|  static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
_ZN7llvm_ks21PointerLikeTypeTraitsIPKNS_8MCSymbolEE16getAsVoidPointerES3_:
   68|  53.3k|  static inline const void *getAsVoidPointer(const T *P) {
   69|  53.3k|    return NonConst::getAsVoidPointer(const_cast<T *>(P));
   70|  53.3k|  }
_ZN7llvm_ks21PointerLikeTypeTraitsIPNS_8MCSymbolEE16getAsVoidPointerES2_:
   41|  53.3k|  static inline void *getAsVoidPointer(T *P) { return P; }

_ZN7llvm_ks5SMLocC2Ev:
   27|   141M|  SMLoc() : Ptr(nullptr) {}
_ZNK7llvm_ks5SMLoc7isValidEv:
   29|  89.5k|  bool isValid() const { return Ptr != nullptr; }
_ZNK7llvm_ks5SMLoceqERKS0_:
   31|  60.6k|  bool operator==(const SMLoc &RHS) const { return RHS.Ptr == Ptr; }
_ZNK7llvm_ks5SMLocneERKS0_:
   32|  88.4M|  bool operator!=(const SMLoc &RHS) const { return RHS.Ptr != Ptr; }
_ZNK7llvm_ks5SMLoc10getPointerEv:
   34|  63.5M|  const char *getPointer() const { return Ptr; }
_ZN7llvm_ks5SMLoc14getFromPointerEPKc:
   36|   139M|  static SMLoc getFromPointer(const char *Ptr) {
   37|   139M|    SMLoc L;
   38|   139M|    L.Ptr = Ptr;
   39|   139M|    return L;
   40|   139M|  }
_ZN7llvm_ks7SMRangeC2ENS_5SMLocES1_:
   53|     10|  SMRange(SMLoc St, SMLoc En) : Start(St), End(En) {
   54|       |    assert(Start.isValid() == End.isValid() &&
  ------------------
  |  Branch (54:5): [True: 10, False: 0]
  |  Branch (54:5): [True: 10, Folded]
  |  Branch (54:5): [True: 10, False: 0]
  ------------------
   55|     10|           "Start and end should either both be valid or both be invalid!");
   56|     10|  }
_ZNK7llvm_ks7SMRange7isValidEv:
   58|     10|  bool isValid() const { return Start.isValid(); }

_ZN7llvm_ks9SourceMgrC2Ev:
   80|  20.9k|    : LineNoCache(nullptr), DiagHandler(nullptr), DiagContext(nullptr) {}
_ZN7llvm_ks9SourceMgr12clearBuffersEv:
  121|  20.9k|  void clearBuffers() {
  122|  20.9k|      Buffers.clear();
  123|  20.9k|  }
_ZN7llvm_ks9SourceMgr18AddNewSourceBufferENSt3__110unique_ptrINS_12MemoryBufferENS1_14default_deleteIS3_EEEENS_5SMLocE:
  128|  72.0k|                              SMLoc IncludeLoc) {
  129|  72.0k|    SrcBuffer NB;
  130|  72.0k|    NB.Buffer = std::move(F);
  131|  72.0k|    NB.IncludeLoc = IncludeLoc;
  132|  72.0k|    Buffers.push_back(std::move(NB));
  133|  72.0k|    return Buffers.size();
  134|  72.0k|  }
_ZN7llvm_ks9SourceMgr9SrcBufferC2Ev:
   55|  72.0k|    SrcBuffer() {}
_ZN7llvm_ks9SourceMgr9SrcBufferC2EOS1_:
   58|   161k|        : Buffer(std::move(O.Buffer)), IncludeLoc(O.IncludeLoc) {}
_ZNK7llvm_ks9SourceMgr15isValidBufferIDEj:
   74|   367k|  bool isValidBufferID(unsigned i) const { return i && i <= Buffers.size(); }
  ------------------
  |  Branch (74:51): [True: 367k, False: 0]
  |  Branch (74:56): [True: 367k, False: 0]
  ------------------
_ZN7llvm_ks9SourceMgr14setDiagHandlerEPFvRKNS_12SMDiagnosticEPvES4_:
   89|  41.9k|  void setDiagHandler(DiagHandlerTy DH, void *Ctx = nullptr) {
   90|  41.9k|    DiagHandler = DH;
   91|  41.9k|    DiagContext = Ctx;
   92|  41.9k|  }
_ZNK7llvm_ks9SourceMgr14getDiagHandlerEv:
   94|  20.9k|  DiagHandlerTy getDiagHandler() const { return DiagHandler; }
_ZNK7llvm_ks9SourceMgr14getDiagContextEv:
   95|  20.9k|  void *getDiagContext() const { return DiagContext; }
_ZNK7llvm_ks9SourceMgr15getMemoryBufferEj:
  102|   288k|  const MemoryBuffer *getMemoryBuffer(unsigned i) const {
  103|   288k|    assert(isValidBufferID(i));
  ------------------
  |  Branch (103:5): [True: 288k, False: 0]
  ------------------
  104|   288k|    return Buffers[i - 1].Buffer.get();
  105|   288k|  }
_ZNK7llvm_ks9SourceMgr13getNumBuffersEv:
  107|   122k|  unsigned getNumBuffers() const {
  108|   122k|    return Buffers.size();
  109|   122k|  }
_ZNK7llvm_ks9SourceMgr13getMainFileIDEv:
  111|   101k|  unsigned getMainFileID() const {
  112|   101k|    assert(getNumBuffers());
  ------------------
  |  Branch (112:5): [True: 101k, False: 0]
  ------------------
  113|   101k|    return 1;
  114|   101k|  }
_ZNK7llvm_ks9SourceMgr19getParentIncludeLocEj:
  116|  79.1k|  SMLoc getParentIncludeLoc(unsigned i) const {
  117|  79.1k|    assert(isValidBufferID(i));
  ------------------
  |  Branch (117:5): [True: 79.1k, False: 0]
  ------------------
  118|  79.1k|    return Buffers[i - 1].IncludeLoc;
  119|  79.1k|  }
_ZNK7llvm_ks9SourceMgr14FindLineNumberENS_5SMLocEj:
  152|  4.63k|  unsigned FindLineNumber(SMLoc Loc, unsigned BufferID = 0) const {
  153|  4.63k|    return getLineAndColumn(Loc, BufferID).first;
  154|  4.63k|  }
_ZNK7llvm_ks12SMDiagnostic12getSourceMgrEv:
  263|  82.8k|  const SourceMgr *getSourceMgr() const { return SM; }
_ZNK7llvm_ks12SMDiagnostic6getLocEv:
  264|  82.8k|  SMLoc getLoc() const { return Loc; }
_ZNK7llvm_ks12SMDiagnostic11getColumnNoEv:
  267|  2.31k|  int getColumnNo() const { return ColumnNo; }
_ZNK7llvm_ks12SMDiagnostic7getKindEv:
  268|  2.31k|  SourceMgr::DiagKind getKind() const { return Kind; }
_ZNK7llvm_ks12SMDiagnostic10getMessageEv:
  269|  2.31k|  StringRef getMessage() const { return Message; }
_ZNK7llvm_ks12SMDiagnostic15getLineContentsEv:
  270|  2.31k|  StringRef getLineContents() const { return LineContents; }
_ZNK7llvm_ks12SMDiagnostic9getRangesEv:
  271|  2.31k|  ArrayRef<std::pair<unsigned, unsigned> > getRanges() const {
  272|  2.31k|    return Ranges;
  273|  2.31k|  }

_ZN7llvm_ks11StringSaverC2ERNS_20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EEE:
   25|  20.9k|  StringSaver(BumpPtrAllocator &Alloc) : Alloc(Alloc) {}

_ZNK7llvm_ks6Target15createMCRegInfoENS_9StringRefE:
  260|  20.9k|  MCRegisterInfo *createMCRegInfo(StringRef TT) const {
  261|  20.9k|    if (!MCRegInfoCtorFn)
  ------------------
  |  Branch (261:9): [True: 0, False: 20.9k]
  ------------------
  262|      0|      return nullptr;
  263|  20.9k|    return MCRegInfoCtorFn(Triple(TT));
  264|  20.9k|  }
_ZNK7llvm_ks6Target15createMCAsmInfoERKNS_14MCRegisterInfoENS_9StringRefE:
  236|  20.9k|                             StringRef TheTriple) const {
  237|  20.9k|    if (!MCAsmInfoCtorFn)
  ------------------
  |  Branch (237:9): [True: 0, False: 20.9k]
  ------------------
  238|      0|      return nullptr;
  239|  20.9k|    return MCAsmInfoCtorFn(MRI, Triple(TheTriple));
  240|  20.9k|  }
_ZNK7llvm_ks6Target17createMCInstrInfoEv:
  244|  20.9k|  MCInstrInfo *createMCInstrInfo() const {
  245|  20.9k|    if (!MCInstrInfoCtorFn)
  ------------------
  |  Branch (245:9): [True: 0, False: 20.9k]
  ------------------
  246|      0|      return nullptr;
  247|  20.9k|    return MCInstrInfoCtorFn();
  248|  20.9k|  }
_ZNK7llvm_ks6Target21createMCSubtargetInfoENS_9StringRefES1_S1_:
  276|  20.9k|                                         StringRef Features) const {
  277|  20.9k|    if (!MCSubtargetInfoCtorFn)
  ------------------
  |  Branch (277:9): [True: 0, False: 20.9k]
  ------------------
  278|      0|      return nullptr;
  279|  20.9k|    return MCSubtargetInfoCtorFn(Triple(TheTriple), CPU, Features);
  280|  20.9k|  }
_ZNK7llvm_ks6Target18createMCAsmBackendERKNS_14MCRegisterInfoENS_9StringRefES4_:
  301|  20.9k|                                   StringRef TheTriple, StringRef CPU) const {
  302|  20.9k|    if (!MCAsmBackendCtorFn)
  ------------------
  |  Branch (302:9): [True: 0, False: 20.9k]
  ------------------
  303|      0|      return nullptr;
  304|  20.9k|    return MCAsmBackendCtorFn(*this, MRI, Triple(TheTriple), CPU);
  305|  20.9k|  }
_ZNK7llvm_ks6Target19createMCCodeEmitterERKNS_11MCInstrInfoERKNS_14MCRegisterInfoERNS_9MCContextE:
  338|  20.9k|                                     MCContext &Ctx) const {
  339|  20.9k|    if (!MCCodeEmitterCtorFn)
  ------------------
  |  Branch (339:9): [True: 0, False: 20.9k]
  ------------------
  340|      0|      return nullptr;
  341|  20.9k|    return MCCodeEmitterCtorFn(II, MRI, Ctx);
  342|  20.9k|  }
_ZNK7llvm_ks6Target22createMCObjectStreamerERKNS_6TripleERNS_9MCContextERNS_12MCAsmBackendERNS_17raw_pwrite_streamEPNS_13MCCodeEmitterERKNS_15MCSubtargetInfoEbb:
  356|  20.9k|                                     bool DWARFMustBeAtTheEnd) const {
  357|  20.9k|    MCStreamer *S;
  358|  20.9k|    switch (T.getObjectFormat()) {
  359|      0|    default:
  ------------------
  |  Branch (359:5): [True: 0, False: 20.9k]
  ------------------
  360|      0|      llvm_unreachable("Unknown object format");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  361|  20.9k|    case Triple::ELF:
  ------------------
  |  Branch (361:5): [True: 20.9k, False: 0]
  ------------------
  362|  20.9k|      if (ELFStreamerCtorFn)
  ------------------
  |  Branch (362:11): [True: 0, False: 20.9k]
  ------------------
  363|      0|        S = ELFStreamerCtorFn(T, Ctx, TAB, OS, Emitter, RelaxAll);
  364|  20.9k|      else
  365|  20.9k|        S = createELFStreamer(Ctx, TAB, OS, Emitter, RelaxAll);
  366|  20.9k|      break;
  367|  20.9k|    }
  368|  20.9k|    if (ObjectTargetStreamerCtorFn)
  ------------------
  |  Branch (368:9): [True: 0, False: 20.9k]
  ------------------
  369|      0|      ObjectTargetStreamerCtorFn(*S, STI);
  370|  20.9k|    return S;
  371|  20.9k|  }
_ZNK7llvm_ks6Target17createMCAsmParserERKNS_15MCSubtargetInfoERNS_11MCAsmParserERKNS_11MCInstrInfoERKNS_15MCTargetOptionsE:
  320|  20.9k|                                       const MCTargetOptions &Options) const {
  321|  20.9k|    if (!MCAsmParserCtorFn)
  ------------------
  |  Branch (321:9): [True: 0, False: 20.9k]
  ------------------
  322|      0|      return nullptr;
  323|  20.9k|    return MCAsmParserCtorFn(STI, Parser, MII, Options);
  324|  20.9k|  }
_ZN7llvm_ks6TargetC2Ev:
  198|     46|      : ELFStreamerCtorFn(nullptr), NullTargetStreamerCtorFn(nullptr),
  199|     46|        AsmTargetStreamerCtorFn(nullptr), ObjectTargetStreamerCtorFn(nullptr),
  200|     46|        MCRelocationInfoCtorFn(nullptr) {}
_ZNK7llvm_ks6Target7getNextEv:
  206|   482k|  const Target *getNext() const { return Next; }
_ZN7llvm_ks14TargetRegistry8iteratorC2EPNS_6TargetE:
  420|   146k|    explicit iterator(Target *T) : Current(T) {}
_ZN7llvm_ks14TargetRegistry8iteratorC2Ev:
  424|   146k|    iterator() : Current(nullptr) {}
_ZNK7llvm_ks14TargetRegistry8iteratoreqERKS1_:
  426|   566k|    bool operator==(const iterator &x) const { return Current == x.Current; }
_ZNK7llvm_ks14TargetRegistry8iteratorneERKS1_:
  427|   524k|    bool operator!=(const iterator &x) const { return !operator==(x); }
_ZN7llvm_ks14TargetRegistry8iteratorppEv:
  430|   482k|    iterator &operator++() { // Preincrement
  431|   482k|      assert(Current && "Cannot increment end iterator!");
  ------------------
  |  Branch (431:7): [True: 482k, False: 0]
  |  Branch (431:7): [True: 482k, Folded]
  |  Branch (431:7): [True: 482k, False: 0]
  ------------------
  432|   482k|      Current = Current->getNext();
  433|   482k|      return *this;
  434|   482k|    }
_ZNK7llvm_ks14TargetRegistry8iteratordeEv:
  441|   503k|    const Target &operator*() const {
  442|   503k|      assert(Current && "Cannot dereference end iterator!");
  ------------------
  |  Branch (442:7): [True: 503k, False: 0]
  |  Branch (442:7): [True: 503k, Folded]
  |  Branch (442:7): [True: 503k, False: 0]
  ------------------
  443|   503k|      return *Current;
  444|   503k|    }
_ZN7llvm_ks14TargetRegistry17RegisterMCAsmInfoERNS_6TargetEPFPNS_9MCAsmInfoERKNS_14MCRegisterInfoERKNS_6TripleEE:
  508|     23|  static void RegisterMCAsmInfo(Target &T, Target::MCAsmInfoCtorFnTy Fn) {
  509|     23|    T.MCAsmInfoCtorFn = Fn;
  510|     23|  }
_ZN7llvm_ks14TargetRegistry19RegisterMCInstrInfoERNS_6TargetEPFPNS_11MCInstrInfoEvE:
  521|     23|  static void RegisterMCInstrInfo(Target &T, Target::MCInstrInfoCtorFnTy Fn) {
  522|     23|    T.MCInstrInfoCtorFn = Fn;
  523|     23|  }
_ZN7llvm_ks14TargetRegistry17RegisterMCRegInfoERNS_6TargetEPFPNS_14MCRegisterInfoERKNS_6TripleEE:
  541|     23|  static void RegisterMCRegInfo(Target &T, Target::MCRegInfoCtorFnTy Fn) {
  542|     23|    T.MCRegInfoCtorFn = Fn;
  543|     23|  }
_ZN7llvm_ks14TargetRegistry23RegisterMCSubtargetInfoERNS_6TargetEPFPNS_15MCSubtargetInfoERKNS_6TripleENS_9StringRefES8_E:
  555|     23|                                      Target::MCSubtargetInfoCtorFnTy Fn) {
  556|     23|    T.MCSubtargetInfoCtorFn = Fn;
  557|     23|  }
_ZN7llvm_ks14TargetRegistry20RegisterMCAsmBackendERNS_6TargetEPFPNS_12MCAsmBackendERKS1_RKNS_14MCRegisterInfoERKNS_6TripleENS_9StringRefEE:
  581|     21|  static void RegisterMCAsmBackend(Target &T, Target::MCAsmBackendCtorTy Fn) {
  582|     21|    T.MCAsmBackendCtorFn = Fn;
  583|     21|  }
_ZN7llvm_ks14TargetRegistry21RegisterMCAsmBackend2ERNS_6TargetEPFPNS_12MCAsmBackendERKS1_RKNS_14MCRegisterInfoERKNS_6TripleENS_9StringRefERKNS_15MCSubtargetInfoERKNS_15MCTargetOptionsEE:
  584|      2|  static void RegisterMCAsmBackend2(Target &T, Target::MCAsmBackendCtorTy2 Fn) {
  585|      2|    T.MCAsmBackendCtorFn2 = Fn;
  586|      2|  }
_ZN7llvm_ks14TargetRegistry19RegisterMCAsmParserERNS_6TargetEPFPNS_17MCTargetAsmParserERKNS_15MCSubtargetInfoERNS_11MCAsmParserERKNS_11MCInstrInfoERKNS_15MCTargetOptionsEE:
  597|     23|  static void RegisterMCAsmParser(Target &T, Target::MCAsmParserCtorTy Fn) {
  598|     23|    T.MCAsmParserCtorFn = Fn;
  599|     23|  }
_ZN7llvm_ks14TargetRegistry21RegisterMCCodeEmitterERNS_6TargetEPFPNS_13MCCodeEmitterERKNS_11MCInstrInfoERKNS_14MCRegisterInfoERNS_9MCContextEE:
  623|     23|  static void RegisterMCCodeEmitter(Target &T, Target::MCCodeEmitterCtorTy Fn) {
  624|     23|    T.MCCodeEmitterCtorFn = Fn;
  625|     23|  }
_ZN7llvm_ks14TargetRegistry25RegisterAsmTargetStreamerERNS_6TargetEPFPNS_16MCTargetStreamerERNS_10MCStreamerERNS_21formatted_raw_ostreamEE:
  637|      2|                                        Target::AsmTargetStreamerCtorTy Fn) {
  638|      2|    T.AsmTargetStreamerCtorFn = Fn;
  639|      2|  }
_ZN7llvm_ks14TargetRegistry28RegisterObjectTargetStreamerERNS_6TargetEPFPNS_16MCTargetStreamerERNS_10MCStreamerERKNS_15MCSubtargetInfoEE:
  643|      2|                               Target::ObjectTargetStreamerCtorTy Fn) {
  644|      2|    T.ObjectTargetStreamerCtorFn = Fn;
  645|      2|  }
_ZN7llvm_ks14TargetRegistry24RegisterMCRelocationInfoERNS_6TargetEPFPNS_16MCRelocationInfoERKNS_6TripleERNS_9MCContextEE:
  657|      2|                                       Target::MCRelocationInfoCtorTy Fn) {
  658|      2|    T.MCRelocationInfoCtorFn = Fn;
  659|      2|  }
_ZN7llvm_ks19RegisterMCAsmInfoFnC2ERNS_6TargetEPFPNS_9MCAsmInfoERKNS_14MCRegisterInfoERKNS_6TripleEE:
  715|     20|  RegisterMCAsmInfoFn(Target &T, Target::MCAsmInfoCtorFnTy Fn) {
  716|     20|    TargetRegistry::RegisterMCAsmInfo(T, Fn);
  717|     20|  }
AArch64AsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_116AArch64AsmParserEEC2ERNS_6TargetE:
  900|      3|  RegisterMCAsmParser(Target &T) {
  901|      3|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      3|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE3EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE3EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE4EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE4EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
ARMAsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_112ARMAsmParserEEC2ERNS_6TargetE:
  900|      4|  RegisterMCAsmParser(Target &T) {
  901|      4|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      4|  }
ARMAsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_112ARMAsmParserEE9AllocatorERKNS_15MCSubtargetInfoERNS_11MCAsmParserERKNS_11MCInstrInfoERKNS_15MCTargetOptionsE:
  907|  20.9k|                                      const MCTargetOptions &Options) {
  908|  20.9k|    return new MCAsmParserImpl(STI, P, MII, Options);
  909|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE1EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE1EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE2EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE2EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE26EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE26EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE27EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE27EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
HexagonAsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_116HexagonAsmParserEEC2ERNS_6TargetE:
  900|      1|  RegisterMCAsmParser(Target &T) {
  901|      1|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE8EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE8EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
MipsAsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_113MipsAsmParserEEC2ERNS_6TargetE:
  900|      4|  RegisterMCAsmParser(Target &T) {
  901|      4|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      4|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE9EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE9EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE10EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE10EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE11EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE11EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE12EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE12EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
PPCAsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_112PPCAsmParserEEC2ERNS_6TargetE:
  900|      3|  RegisterMCAsmParser(Target &T) {
  901|      3|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      3|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE14EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE14EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE15EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE15EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE16EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE16EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
SparcAsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_114SparcAsmParserEEC2ERNS_6TargetE:
  900|      3|  RegisterMCAsmParser(Target &T) {
  901|      3|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      3|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE21EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE21EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE22EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE22EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE23EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE23EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
SystemZAsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_116SystemZAsmParserEEC2ERNS_6TargetE:
  900|      1|  RegisterMCAsmParser(Target &T) {
  901|      1|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE24EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE24EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
X86AsmParser.cpp:_ZN7llvm_ks19RegisterMCAsmParserIN12_GLOBAL__N_112X86AsmParserEEC2ERNS_6TargetE:
  900|      2|  RegisterMCAsmParser(Target &T) {
  901|      2|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      2|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE28EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE28EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE29EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE29EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks19RegisterMCAsmParserINS_14RISCVAsmParserEEC2ERNS_6TargetE:
  900|      2|  RegisterMCAsmParser(Target &T) {
  901|      2|    TargetRegistry::RegisterMCAsmParser(T, &Allocator);
  902|      2|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE18EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE18EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE19EEC2ERNS_6TargetEPKcS7_:
  677|      1|  RegisterTarget(Target &T, const char *Name, const char *Desc) {
  678|      1|    TargetRegistry::RegisterTarget(T, Name, Desc, &getArchMatch);
  679|      1|  }
_ZN7llvm_ks14RegisterTargetILNS_6Triple8ArchTypeE19EE12getArchMatchES2_:
  681|  20.9k|  static bool getArchMatch(Triple::ArchType Arch) {
  682|  20.9k|    return Arch == TargetArchType;
  683|  20.9k|  }

_ZN7llvm_ks24InitializeAllTargetInfosEv:
   44|      1|  inline void InitializeAllTargetInfos() {
   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
   46|      1|#include "llvm/Config/Targets.def"
  ------------------
  |  |    1|       |/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
  |  |    2|       ||*                                                                            *|
  |  |    3|       ||*                     The LLVM Compiler Infrastructure                       *|
  |  |    4|       ||*                                                                            *|
  |  |    5|       ||* This file is distributed under the University of Illinois Open Source      *|
  |  |    6|       ||* License. See LICENSE.TXT for details.                                      *|
  |  |    7|       ||*                                                                            *|
  |  |    8|       ||*===----------------------------------------------------------------------===*|
  |  |    9|       ||*                                                                            *|
  |  |   10|       ||* This file enumerates all of the target architectures supported by          *|
  |  |   11|       ||* this build of LLVM. Clients of this file should define the                 *|
  |  |   12|       ||* LLVM_TARGET macro to be a function-like macro with a single                *|
  |  |   13|       ||* parameter (the name of the target); including this file will then          *|
  |  |   14|       ||* enumerate all of the targets.                                              *|
  |  |   15|       ||*                                                                            *|
  |  |   16|       ||* The set of targets supported by LLVM is generated at configuration         *|
  |  |   17|       ||* time, at which point this header is generated. Do not modify this          *|
  |  |   18|       ||* header directly.                                                           *|
  |  |   19|       ||*                                                                            *|
  |  |   20|       |\*===----------------------------------------------------------------------===*/
  |  |   21|       |
  |  |   22|       |#ifndef LLVM_TARGET
  |  |   23|       |#  error Please define the macro LLVM_TARGET(TargetName)
  |  |   24|       |#endif
  |  |   25|       |
  |  |   26|      1|LLVM_TARGET(AArch64)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   27|      1|LLVM_TARGET(ARM)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   28|      1|LLVM_TARGET(Hexagon)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   29|      1|LLVM_TARGET(Mips)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   30|      1|LLVM_TARGET(PowerPC)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   31|      1|LLVM_TARGET(Sparc)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   32|      1|LLVM_TARGET(SystemZ)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   33|      1|LLVM_TARGET(X86)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   34|      1|LLVM_TARGET(RISCV)
  |  |  ------------------
  |  |  |  |   45|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
  |  |  ------------------
  |  |   35|       |
  |  |   36|       |
  |  |   37|      1|#undef LLVM_TARGET
  ------------------
   47|      1|  }
_ZN7llvm_ks22InitializeAllTargetMCsEv:
   67|      1|  inline void InitializeAllTargetMCs() {
   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
   69|      1|#include "llvm/Config/Targets.def"
  ------------------
  |  |    1|       |/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
  |  |    2|       ||*                                                                            *|
  |  |    3|       ||*                     The LLVM Compiler Infrastructure                       *|
  |  |    4|       ||*                                                                            *|
  |  |    5|       ||* This file is distributed under the University of Illinois Open Source      *|
  |  |    6|       ||* License. See LICENSE.TXT for details.                                      *|
  |  |    7|       ||*                                                                            *|
  |  |    8|       ||*===----------------------------------------------------------------------===*|
  |  |    9|       ||*                                                                            *|
  |  |   10|       ||* This file enumerates all of the target architectures supported by          *|
  |  |   11|       ||* this build of LLVM. Clients of this file should define the                 *|
  |  |   12|       ||* LLVM_TARGET macro to be a function-like macro with a single                *|
  |  |   13|       ||* parameter (the name of the target); including this file will then          *|
  |  |   14|       ||* enumerate all of the targets.                                              *|
  |  |   15|       ||*                                                                            *|
  |  |   16|       ||* The set of targets supported by LLVM is generated at configuration         *|
  |  |   17|       ||* time, at which point this header is generated. Do not modify this          *|
  |  |   18|       ||* header directly.                                                           *|
  |  |   19|       ||*                                                                            *|
  |  |   20|       |\*===----------------------------------------------------------------------===*/
  |  |   21|       |
  |  |   22|       |#ifndef LLVM_TARGET
  |  |   23|       |#  error Please define the macro LLVM_TARGET(TargetName)
  |  |   24|       |#endif
  |  |   25|       |
  |  |   26|      1|LLVM_TARGET(AArch64)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   27|      1|LLVM_TARGET(ARM)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   28|      1|LLVM_TARGET(Hexagon)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   29|      1|LLVM_TARGET(Mips)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   30|      1|LLVM_TARGET(PowerPC)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   31|      1|LLVM_TARGET(Sparc)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   32|      1|LLVM_TARGET(SystemZ)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   33|      1|LLVM_TARGET(X86)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   34|      1|LLVM_TARGET(RISCV)
  |  |  ------------------
  |  |  |  |   68|      1|#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC();
  |  |  ------------------
  |  |   35|       |
  |  |   36|       |
  |  |   37|      1|#undef LLVM_TARGET
  ------------------
   70|      1|  }
_ZN7llvm_ks23InitializeAllAsmParsersEv:
   85|      1|  inline void InitializeAllAsmParsers() {
   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
   87|      1|#include "llvm/Config/AsmParsers.def"
  ------------------
  |  |    1|       |/*===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===*\
  |  |    2|       ||*                                                                            *|
  |  |    3|       ||*                     The LLVM Compiler Infrastructure                       *|
  |  |    4|       ||*                                                                            *|
  |  |    5|       ||* This file is distributed under the University of Illinois Open Source      *|
  |  |    6|       ||* License. See LICENSE.TXT for details.                                      *|
  |  |    7|       ||*                                                                            *|
  |  |    8|       ||*===----------------------------------------------------------------------===*|
  |  |    9|       ||*                                                                            *|
  |  |   10|       ||* This file enumerates all of the assembly-language parsers                  *|
  |  |   11|       ||* supported by this build of LLVM. Clients of this file should define        *|
  |  |   12|       ||* the LLVM_ASM_PARSER macro to be a function-like macro with a               *|
  |  |   13|       ||* single parameter (the name of the target whose assembly can be             *|
  |  |   14|       ||* generated); including this file will then enumerate all of the             *|
  |  |   15|       ||* targets with assembly parsers.                                             *|
  |  |   16|       ||*                                                                            *|
  |  |   17|       ||* The set of targets supported by LLVM is generated at configuration         *|
  |  |   18|       ||* time, at which point this header is generated. Do not modify this          *|
  |  |   19|       ||* header directly.                                                           *|
  |  |   20|       ||*                                                                            *|
  |  |   21|       |\*===----------------------------------------------------------------------===*/
  |  |   22|       |
  |  |   23|       |#ifndef LLVM_ASM_PARSER
  |  |   24|       |#  error Please define the macro LLVM_ASM_PARSER(TargetName)
  |  |   25|       |#endif
  |  |   26|       |
  |  |   27|      1|LLVM_ASM_PARSER(AArch64)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   28|      1|LLVM_ASM_PARSER(ARM)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   29|      1|LLVM_ASM_PARSER(Hexagon)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   30|      1|LLVM_ASM_PARSER(Mips)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   31|      1|LLVM_ASM_PARSER(PowerPC)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   32|      1|LLVM_ASM_PARSER(Sparc)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   33|      1|LLVM_ASM_PARSER(SystemZ)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   34|      1|LLVM_ASM_PARSER(X86)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   35|      1|LLVM_ASM_PARSER(RISCV)
  |  |  ------------------
  |  |  |  |   86|      1|#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser();
  |  |  ------------------
  |  |   36|       |
  |  |   37|       |
  |  |   38|      1|#undef LLVM_ASM_PARSER
  ------------------
   88|      1|  }

_ZN7llvm_ks19raw_svector_ostreamC2ERNS_15SmallVectorImplIcEE:
  493|   617k|  explicit raw_svector_ostream(SmallVectorImpl<char> &O) : OS(O) {
  494|   617k|    SetUnbuffered();
  495|   617k|  }
_ZN7llvm_ks17raw_pwrite_streamC2Eb:
  325|   617k|      : raw_ostream(Unbuffered) {}
_ZN7llvm_ks11raw_ostreamC2Eb:
   84|   617k|      : BufferMode(unbuffered ? Unbuffered : InternalBuffer) {
  ------------------
  |  Branch (84:20): [True: 1, False: 617k]
  ------------------
   85|       |    // Start out ready to flush.
   86|   617k|    OutBufStart = OutBufEnd = OutBufCur = nullptr;
   87|   617k|  }
_ZN7llvm_ks11raw_ostream13SetUnbufferedEv:
  121|   617k|  void SetUnbuffered() {
  122|   617k|    flush();
  123|   617k|    SetBufferAndMode(nullptr, 0, Unbuffered);
  124|   617k|  }
_ZN7llvm_ks11raw_ostream5flushEv:
  134|   617k|  void flush() {
  135|   617k|    if (OutBufCur != OutBufStart)
  ------------------
  |  Branch (135:9): [True: 0, False: 617k]
  ------------------
  136|      0|      flush_nonempty();
  137|   617k|  }
_ZNK7llvm_ks11raw_ostream4tellEv:
   92|  99.1k|  uint64_t tell() const { return current_pos() + GetNumBytesInBuffer(); }
_ZNK7llvm_ks11raw_ostream19GetNumBytesInBufferEv:
  126|   716k|  size_t GetNumBytesInBuffer() const {
  127|   716k|    return OutBufCur - OutBufStart;
  128|   716k|  }
_ZN7llvm_ks11raw_ostreamlsEc:
  139|   140M|  raw_ostream &operator<<(char C) {
  140|   140M|    if (OutBufCur >= OutBufEnd)
  ------------------
  |  Branch (140:9): [True: 140M, False: 0]
  ------------------
  141|   140M|      return write(C);
  142|      0|    *OutBufCur++ = C;
  143|      0|    return *this;
  144|   140M|  }
_ZN7llvm_ks11raw_ostreamlsENS_9StringRefE:
  160|  6.57M|  raw_ostream &operator<<(StringRef Str) {
  161|       |    // Inline fast path, particularly for strings with a known length.
  162|  6.57M|    size_t Size = Str.size();
  163|       |
  164|       |    // Make sure we can use the fast path.
  165|  6.57M|    if (Size > (size_t)(OutBufEnd - OutBufCur))
  ------------------
  |  Branch (165:9): [True: 6.53M, False: 37.4k]
  ------------------
  166|  6.53M|      return write(Str.data(), Size);
  167|       |
  168|  37.4k|    if (Size) {
  ------------------
  |  Branch (168:9): [True: 0, False: 37.4k]
  ------------------
  169|      0|      memcpy(OutBufCur, Str.data(), Size);
  170|      0|      OutBufCur += Size;
  171|      0|    }
  172|  37.4k|    return *this;
  173|  6.57M|  }
_ZN7llvm_ks11raw_ostreamlsEPKc:
  175|   882k|  raw_ostream &operator<<(const char *Str) {
  176|       |    // Inline fast path, particularly for constant strings where a sufficiently
  177|       |    // smart compiler will simplify strlen.
  178|       |
  179|   882k|    return this->operator<<(StringRef(Str));
  180|   882k|  }
_ZN7llvm_ks11raw_ostreamlsERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  182|   184k|  raw_ostream &operator<<(const std::string &Str) {
  183|       |    // Avoid the fast path, it would only increase code size for a marginal win.
  184|   184k|    return write(Str.data(), Str.length());
  185|   184k|  }
_ZN7llvm_ks11raw_ostreamlsEj:
  196|   119k|  raw_ostream &operator<<(unsigned int N) {
  197|   119k|    return this->operator<<(static_cast<unsigned long>(N));
  198|   119k|  }
_ZN7llvm_ks11raw_ostreamlsEi:
  200|   124k|  raw_ostream &operator<<(int N) {
  201|   124k|    return this->operator<<(static_cast<long>(N));
  202|   124k|  }
_ZNK7llvm_ks14raw_fd_ostream9has_errorEv:
  415|      1|  bool has_error() const {
  416|      1|    return Error;
  417|      1|  }
_ZN7llvm_ks19raw_svector_ostream3strEv:
  501|  51.0k|  StringRef str() { return StringRef(OS.data(), OS.size()); }

ks_errno:
   42|  14.0k|{
   43|  14.0k|    return (ks_err)ks->errnum;
   44|  14.0k|}
ks_open:
  261|  20.9k|{
  262|  20.9k|    struct ks_struct *ks;
  263|  20.9k|    std::string TripleName = "";
  264|       |
  265|  20.9k|    if (arch < KS_ARCH_MAX) {
  ------------------
  |  Branch (265:9): [True: 20.9k, False: 0]
  ------------------
  266|       |        // LLVM-based architectures
  267|  20.9k|        ks = new (std::nothrow) ks_struct(arch, mode, KS_ERR_OK, KS_OPT_SYNTAX_INTEL);
  268|       |        
  269|  20.9k|        if (!ks) {
  ------------------
  |  Branch (269:13): [True: 0, False: 20.9k]
  ------------------
  270|       |            // memory insufficient
  271|      0|            return KS_ERR_NOMEM;
  272|      0|        }
  273|       |
  274|  20.9k|        switch(arch) {
  275|      0|            default: break;
  ------------------
  |  Branch (275:13): [True: 0, False: 20.9k]
  ------------------
  276|       |
  277|      0|#ifdef LLVM_ENABLE_ARCH_ARM
  278|  20.9k|            case KS_ARCH_ARM:
  ------------------
  |  Branch (278:13): [True: 20.9k, False: 0]
  ------------------
  279|  20.9k|                if (mode & ~KS_MODE_ARM_MASK) {
  ------------------
  |  |   23|  20.9k|#define KS_MODE_ARM_MASK    (KS_MODE_ARM|KS_MODE_THUMB|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN|KS_MODE_V8)
  ------------------
  |  Branch (279:21): [True: 0, False: 20.9k]
  ------------------
  280|      0|                    delete ks;
  281|      0|                    return KS_ERR_MODE;
  282|      0|                }
  283|       |
  284|  20.9k|                switch(mode) {
  285|      0|                    default:
  ------------------
  |  Branch (285:21): [True: 0, False: 20.9k]
  ------------------
  286|      0|                        return KS_ERR_MODE;
  287|       |                    // big-endian
  288|      0|                    case KS_MODE_BIG_ENDIAN | KS_MODE_V8 | KS_MODE_ARM:
  ------------------
  |  Branch (288:21): [True: 0, False: 20.9k]
  ------------------
  289|      0|                        TripleName = "armv8eb";
  290|      0|                        break;
  291|      0|                    case KS_MODE_BIG_ENDIAN | KS_MODE_V8 | KS_MODE_THUMB:
  ------------------
  |  Branch (291:21): [True: 0, False: 20.9k]
  ------------------
  292|      0|                        TripleName = "thumbv8eb";
  293|      0|                        break;
  294|      0|                    case KS_MODE_BIG_ENDIAN | KS_MODE_ARM:
  ------------------
  |  Branch (294:21): [True: 0, False: 20.9k]
  ------------------
  295|      0|                        TripleName = "armv7eb";
  296|      0|                        break;
  297|      0|                    case KS_MODE_BIG_ENDIAN | KS_MODE_THUMB:
  ------------------
  |  Branch (297:21): [True: 0, False: 20.9k]
  ------------------
  298|      0|                        TripleName = "thumbebv7";
  299|      0|                        break;
  300|       |
  301|       |                    // little-endian
  302|      0|                    case KS_MODE_LITTLE_ENDIAN | KS_MODE_V8 | KS_MODE_ARM:
  ------------------
  |  Branch (302:21): [True: 0, False: 20.9k]
  ------------------
  303|      0|                        TripleName = "armv8";
  304|      0|                        break;
  305|      0|                    case KS_MODE_LITTLE_ENDIAN | KS_MODE_V8 | KS_MODE_THUMB:
  ------------------
  |  Branch (305:21): [True: 0, False: 20.9k]
  ------------------
  306|      0|                        TripleName = "thumbv8";
  307|      0|                        break;
  308|  20.9k|                    case KS_MODE_LITTLE_ENDIAN | KS_MODE_ARM:
  ------------------
  |  Branch (308:21): [True: 20.9k, False: 0]
  ------------------
  309|  20.9k|                        TripleName = "armv7";
  310|  20.9k|                        break;
  311|      0|                    case KS_MODE_LITTLE_ENDIAN | KS_MODE_THUMB:
  ------------------
  |  Branch (311:21): [True: 0, False: 20.9k]
  ------------------
  312|      0|                        TripleName = "thumbv7";
  313|      0|                        break;
  314|  20.9k|                }
  315|       |
  316|  20.9k|                InitKs(arch, ks, TripleName);
  317|       |
  318|       |                //ks->init_arch = arm_ks_init;
  319|  20.9k|                break;
  320|      0|#endif
  321|       |
  322|      0|#ifdef LLVM_ENABLE_ARCH_AArch64
  323|      0|            case KS_ARCH_ARM64:
  ------------------
  |  Branch (323:13): [True: 0, False: 20.9k]
  ------------------
  324|      0|                if (mode != KS_MODE_LITTLE_ENDIAN) {
  ------------------
  |  Branch (324:21): [True: 0, False: 0]
  ------------------
  325|      0|                    delete ks;
  326|      0|                    return KS_ERR_MODE;
  327|      0|                }
  328|       |
  329|      0|                TripleName = "aarch64";
  330|      0|                InitKs(arch, ks, TripleName);
  331|       |
  332|       |                //ks->init_arch = arm64_ks_init;
  333|      0|                break;
  334|      0|#endif
  335|       |
  336|      0|#ifdef LLVM_ENABLE_ARCH_Hexagon
  337|      0|            case KS_ARCH_HEXAGON:
  ------------------
  |  Branch (337:13): [True: 0, False: 20.9k]
  ------------------
  338|      0|                if (mode & ~KS_MODE_HEXAGON_MASK) {
  ------------------
  |  |   28|      0|#define KS_MODE_HEXAGON_MASK  (KS_MODE_BIG_ENDIAN)
  ------------------
  |  Branch (338:21): [True: 0, False: 0]
  ------------------
  339|      0|                    delete ks;
  340|      0|                    return KS_ERR_MODE;
  341|      0|                }
  342|       |
  343|      0|                TripleName = "hexagon";
  344|       |
  345|      0|                InitKs(arch, ks, TripleName);
  346|       |
  347|       |                //ks->init_arch = arm_ks_init;
  348|      0|                break;
  349|      0|#endif
  350|       |
  351|      0|#ifdef LLVM_ENABLE_ARCH_SystemZ
  352|      0|            case KS_ARCH_SYSTEMZ:
  ------------------
  |  Branch (352:13): [True: 0, False: 20.9k]
  ------------------
  353|      0|                if (mode & ~KS_MODE_SYSTEMZ_MASK) {
  ------------------
  |  |   29|      0|#define KS_MODE_SYSTEMZ_MASK  (KS_MODE_BIG_ENDIAN)
  ------------------
  |  Branch (353:21): [True: 0, False: 0]
  ------------------
  354|      0|                    delete ks;
  355|      0|                    return KS_ERR_MODE;
  356|      0|                }
  357|       |
  358|      0|                TripleName = "s390x";
  359|       |
  360|      0|                InitKs(arch, ks, TripleName);
  361|       |
  362|       |                //ks->init_arch = arm_ks_init;
  363|      0|                break;
  364|      0|#endif
  365|       |
  366|      0|#ifdef LLVM_ENABLE_ARCH_Sparc
  367|      0|            case KS_ARCH_SPARC:
  ------------------
  |  Branch (367:13): [True: 0, False: 20.9k]
  ------------------
  368|      0|                if ((mode & ~KS_MODE_SPARC_MASK) ||
  ------------------
  |  |   27|      0|#define KS_MODE_SPARC_MASK  (KS_MODE_V9|KS_MODE_SPARC32|KS_MODE_SPARC64|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN)
  ------------------
  |  Branch (368:21): [True: 0, False: 0]
  ------------------
  369|      0|                        !(mode & (KS_MODE_SPARC32|KS_MODE_SPARC64))) {
  ------------------
  |  Branch (369:25): [True: 0, False: 0]
  ------------------
  370|      0|                    delete ks;
  371|      0|                    return KS_ERR_MODE;
  372|      0|                }
  373|      0|                if (mode & KS_MODE_BIG_ENDIAN) {
  ------------------
  |  Branch (373:21): [True: 0, False: 0]
  ------------------
  374|       |                    // big endian
  375|      0|                    if (mode & KS_MODE_SPARC64)
  ------------------
  |  Branch (375:25): [True: 0, False: 0]
  ------------------
  376|      0|                        TripleName = "sparc64";
  377|      0|                    else
  378|      0|                        TripleName = "sparc";
  379|      0|                } else {
  380|       |                    // little endian
  381|      0|                    if (mode & KS_MODE_SPARC64) {
  ------------------
  |  Branch (381:25): [True: 0, False: 0]
  ------------------
  382|       |                        // TripleName = "sparc64el";
  383|       |                        // FIXME
  384|      0|                        delete ks;
  385|      0|                        return KS_ERR_MODE;
  386|      0|                    } else
  387|      0|                        TripleName = "sparcel";
  388|      0|                }
  389|       |
  390|      0|                InitKs(arch, ks, TripleName);
  391|       |
  392|      0|                break;
  393|      0|#endif
  394|       |
  395|      0|#ifdef LLVM_ENABLE_ARCH_RISCV
  396|      0|            case KS_ARCH_RISCV: {
  ------------------
  |  Branch (396:13): [True: 0, False: 20.9k]
  ------------------
  397|      0|                if ((mode & ~KS_MODE_RISCV_MASK) ||
  ------------------
  |  |   32|      0|#define KS_MODE_RISCV_MASK (KS_MODE_RISCV32|KS_MODE_RISCV64|KS_MODE_LITTLE_ENDIAN)
  ------------------
  |  Branch (397:21): [True: 0, False: 0]
  ------------------
  398|      0|                        (mode & KS_MODE_BIG_ENDIAN) ||
  ------------------
  |  Branch (398:25): [True: 0, False: 0]
  ------------------
  399|      0|                        !(mode & (KS_MODE_RISCV32|KS_MODE_RISCV64))) {
  ------------------
  |  Branch (399:25): [True: 0, False: 0]
  ------------------
  400|      0|                    delete ks;
  401|      0|                    return KS_ERR_MODE;
  402|      0|                }
  403|       |
  404|      0|                switch(mode) {
  405|      0|                    default: break;
  ------------------
  |  Branch (405:21): [True: 0, False: 0]
  ------------------
  406|      0|                    case KS_MODE_RISCV32:
  ------------------
  |  Branch (406:21): [True: 0, False: 0]
  ------------------
  407|      0|                        TripleName = "riscv32";
  408|      0|                        break;
  409|      0|                    case KS_MODE_RISCV64:
  ------------------
  |  Branch (409:21): [True: 0, False: 0]
  ------------------
  410|      0|                        TripleName = "riscv64";
  411|      0|                        break;
  412|      0|                }
  413|       |
  414|      0|                InitKs(arch, ks, TripleName);
  415|       |
  416|      0|                break;
  417|      0|            }
  418|      0|#endif
  419|       |
  420|      0|#ifdef LLVM_ENABLE_ARCH_Mips
  421|      0|            case KS_ARCH_MIPS:
  ------------------
  |  Branch (421:13): [True: 0, False: 20.9k]
  ------------------
  422|      0|                if ((mode & ~KS_MODE_MIPS_MASK) ||
  ------------------
  |  |   24|      0|#define KS_MODE_MIPS_MASK   (KS_MODE_MIPS32|KS_MODE_MIPS64|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN)
  ------------------
  |  Branch (422:21): [True: 0, False: 0]
  ------------------
  423|      0|                        !(mode & (KS_MODE_MIPS32|KS_MODE_MIPS64))) {
  ------------------
  |  Branch (423:25): [True: 0, False: 0]
  ------------------
  424|      0|                    delete ks;
  425|      0|                    return KS_ERR_MODE;
  426|      0|                }
  427|      0|                if (mode & KS_MODE_BIG_ENDIAN) {
  ------------------
  |  Branch (427:21): [True: 0, False: 0]
  ------------------
  428|       |                    // big endian
  429|      0|                    if (mode & KS_MODE_MIPS32)
  ------------------
  |  Branch (429:25): [True: 0, False: 0]
  ------------------
  430|      0|                        TripleName = "mips";
  431|      0|                    if (mode & KS_MODE_MIPS64)
  ------------------
  |  Branch (431:25): [True: 0, False: 0]
  ------------------
  432|      0|                        TripleName = "mips64";
  433|      0|                } else {    // little endian
  434|      0|                    if (mode & KS_MODE_MIPS32)
  ------------------
  |  Branch (434:25): [True: 0, False: 0]
  ------------------
  435|      0|                        TripleName = "mipsel";
  436|      0|                    if (mode & KS_MODE_MIPS64)
  ------------------
  |  Branch (436:25): [True: 0, False: 0]
  ------------------
  437|      0|                        TripleName = "mips64el";
  438|      0|                }
  439|       |
  440|      0|                InitKs(arch, ks, TripleName);
  441|       |
  442|      0|                break;
  443|      0|#endif
  444|       |
  445|      0|#ifdef LLVM_ENABLE_ARCH_PowerPC
  446|      0|            case KS_ARCH_PPC:
  ------------------
  |  Branch (446:13): [True: 0, False: 20.9k]
  ------------------
  447|      0|                if ((mode & ~KS_MODE_PPC_MASK) ||
  ------------------
  |  |   26|      0|#define KS_MODE_PPC_MASK    (KS_MODE_PPC32|KS_MODE_PPC64|KS_MODE_LITTLE_ENDIAN|KS_MODE_BIG_ENDIAN)
  ------------------
  |  Branch (447:21): [True: 0, False: 0]
  ------------------
  448|      0|                        !(mode & (KS_MODE_PPC32|KS_MODE_PPC64))) {
  ------------------
  |  Branch (448:25): [True: 0, False: 0]
  ------------------
  449|      0|                    delete ks;
  450|      0|                    return KS_ERR_MODE;
  451|      0|                }
  452|       |
  453|      0|                if (mode & KS_MODE_BIG_ENDIAN) {
  ------------------
  |  Branch (453:21): [True: 0, False: 0]
  ------------------
  454|       |                    // big endian
  455|      0|                    if (mode & KS_MODE_PPC32)
  ------------------
  |  Branch (455:25): [True: 0, False: 0]
  ------------------
  456|      0|                        TripleName = "ppc32";
  457|      0|                    if (mode & KS_MODE_PPC64)
  ------------------
  |  Branch (457:25): [True: 0, False: 0]
  ------------------
  458|      0|                        TripleName = "ppc64";
  459|      0|                } else {    // little endian
  460|      0|                    if (mode & KS_MODE_PPC32) {
  ------------------
  |  Branch (460:25): [True: 0, False: 0]
  ------------------
  461|       |                        // do not support this mode
  462|      0|                        delete ks;
  463|      0|                        return KS_ERR_MODE;
  464|      0|                    }
  465|      0|                    if (mode & KS_MODE_MIPS64)
  ------------------
  |  Branch (465:25): [True: 0, False: 0]
  ------------------
  466|      0|                        TripleName = "ppc64le";
  467|      0|                }
  468|       |
  469|      0|                InitKs(arch, ks, TripleName);
  470|       |
  471|       |                //ks->init_arch = ppc_ks_init;
  472|      0|                break;
  473|      0|#endif
  474|       |
  475|      0|#ifdef LLVM_ENABLE_ARCH_X86
  476|      0|            case KS_ARCH_X86: {
  ------------------
  |  Branch (476:13): [True: 0, False: 20.9k]
  ------------------
  477|      0|                if ((mode & ~KS_MODE_X86_MASK) ||
  ------------------
  |  |   25|      0|#define KS_MODE_X86_MASK    (KS_MODE_16|KS_MODE_32|KS_MODE_64|KS_MODE_LITTLE_ENDIAN)
  ------------------
  |  Branch (477:21): [True: 0, False: 0]
  ------------------
  478|      0|                        (mode & KS_MODE_BIG_ENDIAN) ||
  ------------------
  |  Branch (478:25): [True: 0, False: 0]
  ------------------
  479|      0|                        !(mode & (KS_MODE_16|KS_MODE_32|KS_MODE_64))) {
  ------------------
  |  Branch (479:25): [True: 0, False: 0]
  ------------------
  480|      0|                    delete ks;
  481|      0|                    return KS_ERR_MODE;
  482|      0|                }
  483|       |
  484|      0|                switch(mode) {
  485|      0|                    default: break;
  ------------------
  |  Branch (485:21): [True: 0, False: 0]
  ------------------
  486|      0|                    case KS_MODE_16:
  ------------------
  |  Branch (486:21): [True: 0, False: 0]
  ------------------
  487|       |                        // FIXME
  488|      0|                        TripleName = "i386-unknown-unknown-code16";
  489|      0|                        break;
  490|      0|                    case KS_MODE_32:
  ------------------
  |  Branch (490:21): [True: 0, False: 0]
  ------------------
  491|       |                        // FIXME
  492|      0|                        TripleName = "i386";
  493|      0|                        break;
  494|      0|                    case KS_MODE_64:
  ------------------
  |  Branch (494:21): [True: 0, False: 0]
  ------------------
  495|       |                        // FIXME
  496|      0|                        TripleName = "x86_64";
  497|      0|                        break;
  498|      0|                }
  499|       |
  500|      0|                InitKs(arch, ks, TripleName);
  501|       |
  502|       |                //ks->init_arch = x86_ks_init;
  503|      0|                break;
  504|      0|            }
  505|      0|#endif
  506|      0|#ifdef LLVM_ENABLE_ARCH_EVM
  507|      0|            case KS_ARCH_EVM: {
  ------------------
  |  Branch (507:13): [True: 0, False: 20.9k]
  ------------------
  508|      0|                *result = ks;
  509|      0|                return KS_ERR_OK;
  510|      0|            }
  511|  20.9k|#endif
  512|  20.9k|        }
  513|       |
  514|  20.9k|        if (TripleName.empty()) {
  ------------------
  |  Branch (514:13): [True: 0, False: 20.9k]
  ------------------
  515|       |            // this arch is not supported
  516|      0|            delete ks;
  517|      0|            return KS_ERR_ARCH;
  518|      0|        }
  519|       |
  520|  20.9k|        *result = ks;
  521|       |
  522|  20.9k|        return KS_ERR_OK;
  523|  20.9k|    } else
  524|      0|        return KS_ERR_ARCH;
  525|  20.9k|}
ks_close:
  530|  20.9k|{
  531|  20.9k|    if (!ks)
  ------------------
  |  Branch (531:9): [True: 0, False: 20.9k]
  ------------------
  532|      0|        return KS_ERR_HANDLE;
  533|       |
  534|  20.9k|    if (ks->arch == KS_ARCH_EVM) {
  ------------------
  |  Branch (534:9): [True: 0, False: 20.9k]
  ------------------
  535|       |        // handle EVM differently
  536|      0|        delete ks;
  537|      0|        return KS_ERR_OK;
  538|      0|    }
  539|       |
  540|       |    // LLVM-based architectures
  541|  20.9k|    delete ks->STI;
  542|  20.9k|    delete ks->MCII;
  543|  20.9k|    delete ks->MAI;
  544|  20.9k|    delete ks->MRI;
  545|  20.9k|    delete ks->MAB;
  546|       |
  547|       |    // finally, free ks itself.
  548|  20.9k|    delete ks;
  549|       |
  550|  20.9k|    return KS_ERR_OK;
  551|  20.9k|}
ks_option:
  556|  20.9k|{
  557|  20.9k|    ks->MAI->setRadix(16);
  558|  20.9k|    switch(type) {
  ------------------
  |  Branch (558:12): [True: 20.9k, False: 0]
  ------------------
  559|  20.9k|        case KS_OPT_SYNTAX:
  ------------------
  |  Branch (559:9): [True: 20.9k, False: 0]
  ------------------
  560|  20.9k|            if (ks->arch != KS_ARCH_X86)
  ------------------
  |  Branch (560:17): [True: 20.9k, False: 0]
  ------------------
  561|  20.9k|                return KS_ERR_OPT_INVALID;
  562|      0|            switch(value) {
  563|      0|                default:
  ------------------
  |  Branch (563:17): [True: 0, False: 0]
  ------------------
  564|      0|                    return KS_ERR_OPT_INVALID;
  565|      0|                case KS_OPT_SYNTAX_RADIX16: // default syntax is Intel
  ------------------
  |  Branch (565:17): [True: 0, False: 0]
  ------------------
  566|      0|                case KS_OPT_SYNTAX_NASM | KS_OPT_SYNTAX_RADIX16:
  ------------------
  |  Branch (566:17): [True: 0, False: 0]
  ------------------
  567|      0|                case KS_OPT_SYNTAX_INTEL | KS_OPT_SYNTAX_RADIX16:
  ------------------
  |  Branch (567:17): [True: 0, False: 0]
  ------------------
  568|      0|                    ks->MAI->setRadix(16);
  569|      0|                case KS_OPT_SYNTAX_NASM:
  ------------------
  |  Branch (569:17): [True: 0, False: 0]
  ------------------
  570|      0|                case KS_OPT_SYNTAX_INTEL:
  ------------------
  |  Branch (570:17): [True: 0, False: 0]
  ------------------
  571|      0|                    ks->syntax = (ks_opt_value)value;
  572|      0|                    ks->MAI->setAssemblerDialect(1);
  573|      0|                    break;
  574|      0|                case KS_OPT_SYNTAX_GAS | KS_OPT_SYNTAX_RADIX16:
  ------------------
  |  Branch (574:17): [True: 0, False: 0]
  ------------------
  575|      0|                case KS_OPT_SYNTAX_ATT | KS_OPT_SYNTAX_RADIX16:
  ------------------
  |  Branch (575:17): [True: 0, False: 0]
  ------------------
  576|      0|                    ks->MAI->setRadix(16);
  577|      0|                case KS_OPT_SYNTAX_GAS:
  ------------------
  |  Branch (577:17): [True: 0, False: 0]
  ------------------
  578|      0|                case KS_OPT_SYNTAX_ATT:
  ------------------
  |  Branch (578:17): [True: 0, False: 0]
  ------------------
  579|      0|                    ks->syntax = (ks_opt_value)value;
  580|      0|                    ks->MAI->setAssemblerDialect(0);
  581|      0|                    break;
  582|      0|            }
  583|       |
  584|      0|            return KS_ERR_OK;
  585|      0|        case KS_OPT_SYM_RESOLVER:
  ------------------
  |  Branch (585:9): [True: 0, False: 20.9k]
  ------------------
  586|      0|            ks->sym_resolver = (ks_sym_resolver)value;
  587|      0|            return KS_ERR_OK;
  588|  20.9k|    }
  589|       |
  590|      0|    return KS_ERR_OPT_INVALID;
  591|  20.9k|}
ks_free:
  596|  6.95k|{
  597|  6.95k|    free(p);
  598|  6.95k|}
ks_asm:
  610|  20.9k|{
  611|  20.9k|    MCCodeEmitter *CE;
  612|  20.9k|    MCStreamer *Streamer;
  613|  20.9k|    unsigned char *encoding;
  614|  20.9k|    SmallString<1024> Msg;
  615|  20.9k|    raw_svector_ostream OS(Msg);
  616|       |
  617|  20.9k|    if (ks->arch == KS_ARCH_EVM) {
  ------------------
  |  Branch (617:9): [True: 0, False: 20.9k]
  ------------------
  618|       |        // handle EVM differently
  619|      0|        unsigned short opcode = EVM_opcode(assembly);
  620|      0|        if (opcode == (unsigned short)-1) {
  ------------------
  |  Branch (620:13): [True: 0, False: 0]
  ------------------
  621|       |            // invalid instruction
  622|      0|            return -1;
  623|      0|        }
  624|       |
  625|      0|        *insn_size = 1;
  626|      0|        *stat_count = 1;
  627|      0|        encoding = (unsigned char *)malloc(*insn_size);
  628|      0|        encoding[0] = opcode;
  629|      0|        *insn = encoding;
  630|      0|        return 0;
  631|      0|    }
  632|       |
  633|  20.9k|    *insn = NULL;
  634|  20.9k|    *insn_size = 0;
  635|       |
  636|  20.9k|    MCContext Ctx(ks->MAI, ks->MRI, &ks->MOFI, &ks->SrcMgr, true, address);
  637|  20.9k|    ks->MOFI.InitMCObjectFileInfo(Triple(ks->TripleName), Ctx);
  638|  20.9k|    CE = ks->TheTarget->createMCCodeEmitter(*ks->MCII, *ks->MRI, Ctx);
  639|  20.9k|    if (!CE) {
  ------------------
  |  Branch (639:9): [True: 0, False: 20.9k]
  ------------------
  640|       |        // memory insufficient
  641|      0|        return KS_ERR_NOMEM;
  642|      0|    }
  643|  20.9k|    Streamer = ks->TheTarget->createMCObjectStreamer(
  644|  20.9k|            Triple(ks->TripleName), Ctx, *ks->MAB, OS, CE, *ks->STI, ks->MCOptions.MCRelaxAll,
  645|  20.9k|            /*DWARFMustBeAtTheEnd*/ false);
  646|       |            
  647|  20.9k|    if (!Streamer) {
  ------------------
  |  Branch (647:9): [True: 0, False: 20.9k]
  ------------------
  648|       |        // memory insufficient
  649|      0|        delete CE;
  650|      0|        return KS_ERR_NOMEM;
  651|      0|    }
  652|       |
  653|       |    // Tell SrcMgr about this buffer, which is what the parser will pick up.
  654|  20.9k|    ErrorOr<std::unique_ptr<MemoryBuffer>> BufferPtr = MemoryBuffer::getMemBuffer(assembly);
  655|  20.9k|    if (BufferPtr.getError()) {
  ------------------
  |  Branch (655:9): [True: 0, False: 20.9k]
  ------------------
  656|      0|        delete Streamer;
  657|      0|        delete CE;
  658|      0|        return KS_ERR_NOMEM;
  659|      0|    }
  660|       |
  661|  20.9k|    ks->SrcMgr.clearBuffers();
  662|  20.9k|    ks->SrcMgr.AddNewSourceBuffer(std::move(*BufferPtr), SMLoc());
  663|       |
  664|  20.9k|    Streamer->setSymResolver((void *)(ks->sym_resolver));
  665|       |
  666|  20.9k|    MCAsmParser *Parser = createMCAsmParser(ks->SrcMgr, Ctx, *Streamer, *ks->MAI);
  667|  20.9k|    if (!Parser) {
  ------------------
  |  Branch (667:9): [True: 0, False: 20.9k]
  ------------------
  668|      0|        delete Streamer;
  669|      0|        delete CE;
  670|       |        // memory insufficient
  671|      0|        return KS_ERR_NOMEM;
  672|      0|    }
  673|  20.9k|    MCTargetAsmParser *TAP = ks->TheTarget->createMCAsmParser(*ks->STI, *Parser, *ks->MCII, ks->MCOptions);
  674|  20.9k|    if (!TAP) { 
  ------------------
  |  Branch (674:9): [True: 0, False: 20.9k]
  ------------------
  675|       |        // memory insufficient
  676|      0|        delete Parser;
  677|      0|        delete Streamer;
  678|      0|        delete CE;
  679|      0|        return KS_ERR_NOMEM;
  680|      0|    }
  681|  20.9k|    TAP->KsSyntax = ks->syntax;
  682|       |
  683|  20.9k|    Parser->setTargetParser(*TAP);
  684|       |
  685|       |    // TODO: optimize this to avoid setting up NASM every time we call ks_asm()
  686|  20.9k|    if (ks->arch == KS_ARCH_X86 && ks->syntax == KS_OPT_SYNTAX_NASM) {
  ------------------
  |  Branch (686:9): [True: 0, False: 20.9k]
  |  Branch (686:36): [True: 0, False: 0]
  ------------------
  687|      0|        Parser->initializeDirectiveKindMap(KS_OPT_SYNTAX_NASM);
  688|      0|        ks->MAI->setCommentString(";");
  689|      0|    }
  690|       |
  691|  20.9k|    *stat_count = Parser->Run(false, address);
  692|       |
  693|       |    // PPC counts empty statement
  694|  20.9k|    if (ks->arch == KS_ARCH_PPC)
  ------------------
  |  Branch (694:9): [True: 0, False: 20.9k]
  ------------------
  695|      0|        *stat_count = *stat_count / 2;
  696|       |
  697|  20.9k|    ks->errnum = Parser->KsError;
  698|       |
  699|  20.9k|    delete TAP;
  700|  20.9k|    delete Parser;
  701|  20.9k|    delete CE;
  702|  20.9k|    delete Streamer;
  703|       |
  704|  20.9k|    if (ks->errnum >= KS_ERR_ASM)
  ------------------
  |  |  103|  20.9k|#define KS_ERR_ASM 128
  ------------------
  |  Branch (704:9): [True: 14.0k, False: 6.95k]
  ------------------
  705|  14.0k|        return -1;
  706|  6.95k|    else {
  707|  6.95k|        *insn_size = Msg.size();
  708|  6.95k|        encoding = (unsigned char *)malloc(*insn_size);
  709|  6.95k|        if (!encoding) {
  ------------------
  |  Branch (709:13): [True: 0, False: 6.95k]
  ------------------
  710|      0|            return KS_ERR_NOMEM;
  711|      0|        }
  712|  6.95k|        memcpy(encoding, Msg.data(), *insn_size);
  713|  6.95k|        *insn = encoding;
  714|  6.95k|        return 0;
  715|  6.95k|    }
  716|  20.9k|}
ks.cpp:_ZL6InitKsiP9ks_structNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  204|  20.9k|{
  205|  20.9k|    static bool initialized = false;
  206|  20.9k|    std::string MCPU = "";
  207|       |
  208|  20.9k|    if (!initialized) {
  ------------------
  |  Branch (208:9): [True: 1, False: 20.9k]
  ------------------
  209|      1|        initialized = true;
  210|       |        // Initialize targets and assembly parsers.
  211|      1|        llvm_ks::InitializeAllTargetInfos();
  212|      1|        llvm_ks::InitializeAllTargetMCs();
  213|      1|        llvm_ks::InitializeAllAsmParsers();
  214|      1|    }
  215|       |
  216|  20.9k|    ks->TripleName = Triple::normalize(TripleName);
  217|  20.9k|    ks->TheTarget = GetTarget(ks->TripleName);
  218|  20.9k|    if (!ks->TheTarget)
  ------------------
  |  Branch (218:9): [True: 0, False: 20.9k]
  ------------------
  219|      0|        return KS_ERR_MODE;   // FIXME
  220|       |
  221|       |    // Now that GetTarget() has (potentially) replaced TripleName, it's safe to
  222|       |    // construct the Triple object.
  223|  20.9k|    Triple TheTriple(ks->TripleName);
  224|       |
  225|  20.9k|    ks->MRI = ks->TheTarget->createMCRegInfo(ks->TripleName);
  226|  20.9k|    assert(ks->MRI && "Unable to create target register info!");
  ------------------
  |  Branch (226:5): [True: 20.9k, False: 0]
  |  Branch (226:5): [True: 20.9k, Folded]
  |  Branch (226:5): [True: 20.9k, False: 0]
  ------------------
  227|       |
  228|       |    // Package up features to be passed to target/subtarget
  229|       |#if 0
  230|       |    if (MAttrs.size()) {
  231|       |        SubtargetFeatures Features;
  232|       |        for (unsigned i = 0; i != MAttrs.size(); ++i)
  233|       |            Features.AddFeature(MAttrs[i]);
  234|       |        ks->FeaturesStr = Features.getString();
  235|       |    }
  236|       |#endif
  237|       |
  238|  20.9k|    ks->MAI = ks->TheTarget->createMCAsmInfo(*ks->MRI, ks->TripleName);
  239|  20.9k|    assert(ks->MAI && "Unable to create target asm info!");
  ------------------
  |  Branch (239:5): [True: 20.9k, False: 0]
  |  Branch (239:5): [True: 20.9k, Folded]
  |  Branch (239:5): [True: 20.9k, False: 0]
  ------------------
  240|       |
  241|       |    // enable Knights Landing architecture for X86
  242|  20.9k|    if (ks->arch == KS_ARCH_X86)
  ------------------
  |  Branch (242:9): [True: 0, False: 20.9k]
  ------------------
  243|      0|        MCPU = "knl";
  244|       |
  245|  20.9k|    ks->MCII = ks->TheTarget->createMCInstrInfo();
  246|  20.9k|    ks->STI = ks->TheTarget->createMCSubtargetInfo(ks->TripleName, MCPU, ks->FeaturesStr);
  247|  20.9k|    if(ks->TripleName.rfind("riscv",0)==0){
  ------------------
  |  Branch (247:8): [True: 0, False: 20.9k]
  ------------------
  248|      0|        ks->MAB = ks->TheTarget->createMCAsmBackend2(*ks->MRI, ks->TripleName, MCPU, *ks->STI, ks->MCOptions);
  249|  20.9k|    } else {
  250|  20.9k|        ks->MAB = ks->TheTarget->createMCAsmBackend(*ks->MRI, ks->TripleName, MCPU);
  251|  20.9k|    }
  252|  20.9k|    ks->MAB->setArch(arch);
  253|  20.9k|    ks->MCOptions = InitMCTargetOptionsFromFlags();
  254|       |
  255|  20.9k|    return KS_ERR_OK;
  256|  20.9k|}
ks.cpp:_ZL9GetTargetNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE:
  192|  20.9k|{
  193|       |    // Figure out the target triple.
  194|  20.9k|    Triple TheTriple(TripleName);
  195|       |
  196|       |    // Get the target specific parser.
  197|  20.9k|    std::string Error;
  198|       |
  199|  20.9k|    return TargetRegistry::lookupTarget("", TheTriple, Error);
  200|  20.9k|}

_ZN9ks_structC2E7ks_archij12ks_opt_value:
   63|  20.9k|        : arch(arch), mode(mode), errnum(errnum), syntax(syntax) { }

_ZN7llvm_ks12ConstantPool11emitEntriesERNS_10MCStreamerE:
   24|     80|void ConstantPool::emitEntries(MCStreamer &Streamer) {
   25|     80|  if (Entries.empty())
  ------------------
  |  Branch (25:7): [True: 0, False: 80]
  ------------------
   26|      0|    return;
   27|     80|  Streamer.EmitDataRegion(MCDR_DataRegion);
   28|     80|  for (EntryVecTy::const_iterator I = Entries.begin(), E = Entries.end();
   29|  1.17k|       I != E; ++I) {
  ------------------
  |  Branch (29:8): [True: 1.09k, False: 80]
  ------------------
   30|  1.09k|    Streamer.EmitCodeAlignment(I->Size); // align naturally
   31|  1.09k|    Streamer.EmitLabel(I->Label);
   32|  1.09k|    Streamer.EmitValue(I->Value, I->Size, I->Loc);
   33|  1.09k|  }
   34|     80|  Streamer.EmitDataRegion(MCDR_DataRegionEnd);
   35|     80|  Entries.clear();
   36|     80|}
_ZN7llvm_ks12ConstantPool8addEntryEPKNS_6MCExprERNS_9MCContextEjNS_5SMLocE:
   39|  1.59k|                                     unsigned Size, SMLoc Loc) {
   40|  1.59k|  MCSymbol *CPEntryLabel = Context.createTempSymbol();
   41|       |
   42|  1.59k|  Entries.push_back(ConstantPoolEntry(CPEntryLabel, Value, Size, Loc));
   43|  1.59k|  return MCSymbolRefExpr::create(CPEntryLabel, Context);
   44|  1.59k|}
_ZN7llvm_ks12ConstantPool5emptyEv:
   46|     95|bool ConstantPool::empty() { return Entries.empty(); }
_ZN7llvm_ks22AssemblerConstantPools15getConstantPoolEPNS_9MCSectionE:
   51|  1.25k|ConstantPool *AssemblerConstantPools::getConstantPool(MCSection *Section) {
   52|  1.25k|  ConstantPoolMapTy::iterator CP = ConstantPools.find(Section);
   53|  1.25k|  if (CP == ConstantPools.end())
  ------------------
  |  Branch (53:7): [True: 1.22k, False: 24]
  ------------------
   54|  1.22k|    return nullptr;
   55|       |
   56|     24|  return &CP->second;
   57|  1.25k|}
_ZN7llvm_ks22AssemblerConstantPools23getOrCreateConstantPoolEPNS_9MCSectionE:
   60|  1.59k|AssemblerConstantPools::getOrCreateConstantPool(MCSection *Section) {
   61|  1.59k|  return ConstantPools[Section];
   62|  1.59k|}
_ZN7llvm_ks22AssemblerConstantPools7emitAllERNS_10MCStreamerE:
   72|  8.98k|void AssemblerConstantPools::emitAll(MCStreamer &Streamer) {
   73|       |  // Dump contents of assembler constant pools.
   74|  8.98k|  for (ConstantPoolMapTy::iterator CPI = ConstantPools.begin(),
   75|  8.98k|                                   CPE = ConstantPools.end();
   76|  9.05k|       CPI != CPE; ++CPI) {
  ------------------
  |  Branch (76:8): [True: 71, False: 8.98k]
  ------------------
   77|     71|    MCSection *Section = CPI->first;
   78|     71|    ConstantPool &CP = CPI->second;
   79|       |
   80|     71|    emitConstantPool(Streamer, Section, CP);
   81|     71|  }
   82|  8.98k|}
_ZN7llvm_ks22AssemblerConstantPools21emitForCurrentSectionERNS_10MCStreamerE:
   84|  1.25k|void AssemblerConstantPools::emitForCurrentSection(MCStreamer &Streamer) {
   85|  1.25k|  MCSection *Section = Streamer.getCurrentSection().first;
   86|  1.25k|  if (ConstantPool *CP = getConstantPool(Section)) {
  ------------------
  |  Branch (86:21): [True: 24, False: 1.22k]
  ------------------
   87|     24|    emitConstantPool(Streamer, Section, *CP);
   88|     24|  }
   89|  1.25k|}
_ZN7llvm_ks22AssemblerConstantPools8addEntryERNS_10MCStreamerEPKNS_6MCExprEjNS_5SMLocE:
   93|  1.59k|                                               unsigned Size, SMLoc Loc) {
   94|  1.59k|  MCSection *Section = Streamer.getCurrentSection().first;
   95|  1.59k|  return getOrCreateConstantPool(Section).addEntry(Expr, Streamer.getContext(),
   96|  1.59k|                                                   Size, Loc);
   97|  1.59k|}
ConstantPools.cpp:_ZL16emitConstantPoolRN7llvm_ks10MCStreamerEPNS_9MCSectionERNS_12ConstantPoolE:
   65|     95|                             ConstantPool &CP) {
   66|     95|  if (!CP.empty()) {
  ------------------
  |  Branch (66:7): [True: 80, False: 15]
  ------------------
   67|     80|    Streamer.SwitchSection(Section);
   68|     80|    CP.emitEntries(Streamer);
   69|     80|  }
   70|     95|}

_ZN7llvm_ks21createELFObjectWriterEPNS_23MCELFObjectTargetWriterERNS_17raw_pwrite_streamEb:
 1271|  20.9k|                                            bool IsLittleEndian) {
 1272|  20.9k|  return new ELFObjectWriter(MOTW, OS, IsLittleEndian);
 1273|  20.9k|}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriterC2EPN7llvm_ks23MCELFObjectTargetWriterERNS1_17raw_pwrite_streamEb:
  142|  20.9k|        : MCObjectWriter(OS, IsLittleEndian), TargetObjectWriter(MOTW) {}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriterD2Ev:
  297|  20.9k|{}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriter24executePostLayoutBindingERN7llvm_ks11MCAssemblerERKNS1_11MCAsmLayoutE:
  316|  8.98k|                                               const MCAsmLayout &Layout) {
  317|       |  // The presence of symbol versions causes undefined symbols and
  318|       |  // versions declared with @@@ to be renamed.
  319|       |
  320|   120k|  for (const MCSymbol &A : Asm.symbols()) {
  ------------------
  |  Branch (320:26): [True: 120k, False: 8.98k]
  ------------------
  321|   120k|    const auto &Alias = cast<MCSymbolELF>(A);
  322|       |    // Not an alias.
  323|   120k|    if (!Alias.isVariable())
  ------------------
  |  Branch (323:9): [True: 119k, False: 1.55k]
  ------------------
  324|   119k|      continue;
  325|  1.55k|    auto *Ref = dyn_cast<MCSymbolRefExpr>(Alias.getVariableValue());
  326|  1.55k|    if (!Ref)
  ------------------
  |  Branch (326:9): [True: 956, False: 597]
  ------------------
  327|    956|      continue;
  328|    597|    const auto &Symbol = cast<MCSymbolELF>(Ref->getSymbol());
  329|       |
  330|    597|    StringRef AliasName = Alias.getName();
  331|    597|    size_t Pos = AliasName.find('@');
  332|    597|    if (Pos == StringRef::npos)
  ------------------
  |  Branch (332:9): [True: 400, False: 197]
  ------------------
  333|    400|      continue;
  334|       |
  335|       |    // Aliases defined with .symvar copy the binding from the symbol they alias.
  336|       |    // This is the first place we are able to copy this information.
  337|    197|    Alias.setExternal(Symbol.isExternal());
  338|    197|    Alias.setBinding(Symbol.getBinding());
  339|       |
  340|    197|    StringRef Rest = AliasName.substr(Pos);
  341|    197|    if (!Symbol.isUndefined() && !Rest.startswith("@@@"))
  ------------------
  |  Branch (341:9): [True: 41, False: 156]
  |  Branch (341:9): [True: 35, False: 162]
  |  Branch (341:34): [True: 35, False: 6]
  ------------------
  342|     35|      continue;
  343|       |
  344|       |    // FIXME: produce a better error message.
  345|    162|    if (Symbol.isUndefined() && Rest.startswith("@@") &&
  ------------------
  |  Branch (345:9): [True: 156, False: 6]
  |  Branch (345:9): [True: 0, False: 162]
  |  Branch (345:33): [True: 11, False: 145]
  ------------------
  346|     11|        !Rest.startswith("@@@"))
  ------------------
  |  Branch (346:9): [True: 0, False: 11]
  ------------------
  347|      0|      report_fatal_error("A @@ version cannot be undefined");
  348|       |
  349|    162|    Renames.insert(std::make_pair(&Symbol, &Alias));
  350|    162|  }
  351|  8.98k|}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriter16recordRelocationERN7llvm_ks11MCAssemblerERKNS1_11MCAsmLayoutEPKNS1_10MCFragmentERKNS1_7MCFixupENS1_7MCValueERbRm:
  557|  21.8k|{
  558|  21.8k|  const MCSectionELF &FixupSection = cast<MCSectionELF>(*Fragment->getParent());
  559|  21.8k|  uint64_t C = Target.getConstant();
  560|  21.8k|  bool valid;
  561|  21.8k|  uint64_t FixupOffset = Layout.getFragmentOffset(Fragment, valid) + Fixup.getOffset();
  562|  21.8k|  MCContext &Ctx = Asm.getContext();
  563|       |
  564|  21.8k|  if (const MCSymbolRefExpr *RefB = Target.getSymB()) {
  ------------------
  |  Branch (564:30): [True: 8.10k, False: 13.7k]
  ------------------
  565|  8.10k|    assert(RefB->getKind() == MCSymbolRefExpr::VK_None &&
  ------------------
  |  Branch (565:5): [True: 8.10k, False: 0]
  |  Branch (565:5): [True: 8.10k, Folded]
  |  Branch (565:5): [True: 8.10k, False: 0]
  ------------------
  566|  8.10k|           "Should not have constructed this");
  567|       |
  568|       |    // Let A, B and C being the components of Target and R be the location of
  569|       |    // the fixup. If the fixup is not pcrel, we want to compute (A - B + C).
  570|       |    // If it is pcrel, we want to compute (A - B + C - R).
  571|       |
  572|       |    // In general, ELF has no relocations for -B. It can only represent (A + C)
  573|       |    // or (A + C - R). If B = R + K and the relocation is not pcrel, we can
  574|       |    // replace B to implement it: (A - R - K + C)
  575|  8.10k|    if (IsPCRel) {
  ------------------
  |  Branch (575:9): [True: 2.94k, False: 5.15k]
  ------------------
  576|  2.94k|      Ctx.reportError(
  577|  2.94k|          Fixup.getLoc(),
  578|  2.94k|          "No relocation available to represent this relative expression");
  579|  2.94k|      return;
  580|  2.94k|    }
  581|       |
  582|  5.15k|    const auto &SymB = cast<MCSymbolELF>(RefB->getSymbol());
  583|       |
  584|  5.15k|    if (SymB.isUndefined()) {
  ------------------
  |  Branch (584:9): [True: 4.32k, False: 833]
  ------------------
  585|  4.32k|      Ctx.reportError(Fixup.getLoc(),
  586|  4.32k|                      Twine("symbol '") + SymB.getName() +
  587|  4.32k|                          "' can not be undefined in a subtraction expression");
  588|  4.32k|      return;
  589|  4.32k|    }
  590|       |
  591|  5.15k|    assert(!SymB.isAbsolute() && "Should have been folded");
  ------------------
  |  Branch (591:5): [True: 833, False: 0]
  |  Branch (591:5): [True: 833, Folded]
  |  Branch (591:5): [True: 833, False: 0]
  ------------------
  592|    833|    const MCSection &SecB = SymB.getSection();
  593|    833|    if (&SecB != &FixupSection) {
  ------------------
  |  Branch (593:9): [True: 0, False: 833]
  ------------------
  594|      0|      Ctx.reportError(Fixup.getLoc(),
  595|      0|                      "Cannot represent a difference across sections");
  596|      0|      return;
  597|      0|    }
  598|       |
  599|    833|    bool valid;
  600|    833|    uint64_t SymBOffset = Layout.getSymbolOffset(SymB, valid);
  601|    833|    uint64_t K = SymBOffset - FixupOffset;
  602|    833|    IsPCRel = true;
  603|    833|    C -= K;
  604|    833|  }
  605|       |
  606|       |  // We either rejected the fixup or folded B into C at this point.
  607|  14.5k|  const MCSymbolRefExpr *RefA = Target.getSymA();
  608|  14.5k|  const auto *SymA = RefA ? cast<MCSymbolELF>(&RefA->getSymbol()) : nullptr;
  ------------------
  |  Branch (608:22): [True: 13.3k, False: 1.25k]
  ------------------
  609|       |
  610|  14.5k|  bool ViaWeakRef = false;
  611|  14.5k|  if (SymA && SymA->isVariable()) {
  ------------------
  |  Branch (611:7): [True: 13.3k, False: 1.25k]
  |  Branch (611:15): [True: 475, False: 12.8k]
  ------------------
  612|    475|    const MCExpr *Expr = SymA->getVariableValue();
  613|    475|    if (const auto *Inner = dyn_cast<MCSymbolRefExpr>(Expr)) {
  ------------------
  |  Branch (613:21): [True: 344, False: 131]
  ------------------
  614|    344|      if (Inner->getKind() == MCSymbolRefExpr::VK_WEAKREF) {
  ------------------
  |  Branch (614:11): [True: 0, False: 344]
  ------------------
  615|      0|        SymA = cast<MCSymbolELF>(&Inner->getSymbol());
  616|      0|        ViaWeakRef = true;
  617|      0|      }
  618|    344|    }
  619|    475|  }
  620|       |
  621|  14.5k|  unsigned Type = getRelocType(Ctx, Target, Fixup, IsPCRel);
  622|  14.5k|  bool RelocateWithSymbol = shouldRelocateWithSymbol(Asm, RefA, SymA, C, Type);
  623|  14.5k|  if (!RelocateWithSymbol && SymA && !SymA->isUndefined()) {
  ------------------
  |  Branch (623:7): [True: 14.2k, False: 285]
  |  Branch (623:30): [True: 13.0k, False: 1.25k]
  |  Branch (623:38): [True: 13.0k, False: 0]
  ------------------
  624|  13.0k|    bool valid;
  625|  13.0k|    C += Layout.getSymbolOffset(*SymA, valid);
  626|  13.0k|  }
  627|       |
  628|  14.5k|  uint64_t Addend = 0;
  629|  14.5k|  if (hasRelocationAddend()) {
  ------------------
  |  Branch (629:7): [True: 0, False: 14.5k]
  ------------------
  630|      0|    Addend = C;
  631|      0|    C = 0;
  632|      0|  }
  633|       |
  634|  14.5k|  FixedValue = C;
  635|       |
  636|  14.5k|  if (!RelocateWithSymbol) {
  ------------------
  |  Branch (636:7): [True: 14.2k, False: 285]
  ------------------
  637|  14.2k|    const MCSection *SecA =
  638|  14.2k|        (SymA && !SymA->isUndefined()) ? &SymA->getSection() : nullptr;
  ------------------
  |  Branch (638:10): [True: 13.0k, False: 1.25k]
  |  Branch (638:18): [True: 13.0k, False: 0]
  ------------------
  639|  14.2k|    auto *ELFSec = cast_or_null<MCSectionELF>(SecA);
  640|  14.2k|    const auto *SectionSymbol =
  641|  14.2k|        ELFSec ? cast<MCSymbolELF>(ELFSec->getBeginSymbol()) : nullptr;
  ------------------
  |  Branch (641:9): [True: 13.0k, False: 1.25k]
  ------------------
  642|  14.2k|    if (SectionSymbol)
  ------------------
  |  Branch (642:9): [True: 13.0k, False: 1.25k]
  ------------------
  643|  13.0k|      SectionSymbol->setUsedInReloc();
  644|  14.2k|    ELFRelocationEntry Rec(FixupOffset, SectionSymbol, Type, Addend);
  645|  14.2k|    Relocations[&FixupSection].push_back(Rec);
  646|  14.2k|    return;
  647|  14.2k|  }
  648|       |
  649|    285|  if (SymA) {
  ------------------
  |  Branch (649:7): [True: 285, False: 0]
  ------------------
  650|    285|    if (const MCSymbolELF *R = Renames.lookup(SymA))
  ------------------
  |  Branch (650:28): [True: 0, False: 285]
  ------------------
  651|      0|      SymA = R;
  652|       |
  653|    285|    if (ViaWeakRef)
  ------------------
  |  Branch (653:9): [True: 0, False: 285]
  ------------------
  654|      0|      SymA->setIsWeakrefUsedInReloc();
  655|    285|    else
  656|    285|      SymA->setUsedInReloc();
  657|    285|  }
  658|    285|  ELFRelocationEntry Rec(FixupOffset, SymA, Type, Addend);
  659|    285|  Relocations[&FixupSection].push_back(Rec);
  660|    285|  return;
  661|  14.5k|}
ELFObjectWriter.cpp:_ZNK12_GLOBAL__N_115ELFObjectWriter12getRelocTypeERN7llvm_ks9MCContextERKNS1_7MCValueERKNS1_7MCFixupEb:
  133|  14.5k|                          const MCFixup &Fixup, bool IsPCRel) const {
  134|  14.5k|      return TargetObjectWriter->getRelocType(Ctx, Target, Fixup, IsPCRel);
  135|  14.5k|    }
ELFObjectWriter.cpp:_ZNK12_GLOBAL__N_115ELFObjectWriter24shouldRelocateWithSymbolERKN7llvm_ks11MCAssemblerEPKNS1_15MCSymbolRefExprEPKNS1_8MCSymbolEmj:
  437|  14.5k|                                               unsigned Type) const {
  438|  14.5k|  const auto *Sym = cast_or_null<MCSymbolELF>(S);
  439|       |  // A PCRel relocation to an absolute value has no symbol (or section). We
  440|       |  // represent that with a relocation to a null section.
  441|  14.5k|  if (!RefA)
  ------------------
  |  Branch (441:7): [True: 1.25k, False: 13.3k]
  ------------------
  442|  1.25k|    return false;
  443|       |
  444|  13.3k|  MCSymbolRefExpr::VariantKind Kind = RefA->getKind();
  445|  13.3k|  switch (Kind) {
  446|  13.3k|  default:
  ------------------
  |  Branch (446:3): [True: 13.3k, False: 0]
  ------------------
  447|  13.3k|    break;
  448|       |  // The .odp creation emits a relocation against the symbol ".TOC." which
  449|       |  // create a R_PPC64_TOC relocation. However the relocation symbol name
  450|       |  // in final object creation should be NULL, since the symbol does not
  451|       |  // really exist, it is just the reference to TOC base for the current
  452|       |  // object file. Since the symbol is undefined, returning false results
  453|       |  // in a relocation with a null section which is the desired result.
  454|  13.3k|  case MCSymbolRefExpr::VK_PPC_TOCBASE:
  ------------------
  |  Branch (454:3): [True: 0, False: 13.3k]
  ------------------
  455|      0|    return false;
  456|       |
  457|       |  // These VariantKind cause the relocation to refer to something other than
  458|       |  // the symbol itself, like a linker generated table. Since the address of
  459|       |  // symbol is not relevant, we cannot replace the symbol with the
  460|       |  // section and patch the difference in the addend.
  461|      0|  case MCSymbolRefExpr::VK_GOT:
  ------------------
  |  Branch (461:3): [True: 0, False: 13.3k]
  ------------------
  462|      0|  case MCSymbolRefExpr::VK_PLT:
  ------------------
  |  Branch (462:3): [True: 0, False: 13.3k]
  ------------------
  463|      0|  case MCSymbolRefExpr::VK_GOTPCREL:
  ------------------
  |  Branch (463:3): [True: 0, False: 13.3k]
  ------------------
  464|      0|  case MCSymbolRefExpr::VK_Mips_GOT:
  ------------------
  |  Branch (464:3): [True: 0, False: 13.3k]
  ------------------
  465|      0|  case MCSymbolRefExpr::VK_PPC_GOT_LO:
  ------------------
  |  Branch (465:3): [True: 0, False: 13.3k]
  ------------------
  466|      0|  case MCSymbolRefExpr::VK_PPC_GOT_HI:
  ------------------
  |  Branch (466:3): [True: 0, False: 13.3k]
  ------------------
  467|      0|  case MCSymbolRefExpr::VK_PPC_GOT_HA:
  ------------------
  |  Branch (467:3): [True: 0, False: 13.3k]
  ------------------
  468|      0|    return true;
  469|  13.3k|  }
  470|       |
  471|       |  // An undefined symbol is not in any section, so the relocation has to point
  472|       |  // to the symbol itself.
  473|  13.3k|  assert(Sym && "Expected a symbol");
  ------------------
  |  Branch (473:3): [True: 13.3k, False: 0]
  |  Branch (473:3): [True: 13.3k, Folded]
  |  Branch (473:3): [True: 13.3k, False: 0]
  ------------------
  474|  13.3k|  if (Sym->isUndefined())
  ------------------
  |  Branch (474:7): [True: 0, False: 13.3k]
  ------------------
  475|      0|    return true;
  476|       |
  477|  13.3k|  unsigned Binding = Sym->getBinding();
  478|  13.3k|  switch(Binding) {
  479|      0|  default:
  ------------------
  |  Branch (479:3): [True: 0, False: 13.3k]
  ------------------
  480|      0|    llvm_unreachable("Invalid Binding");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  481|  13.3k|  case ELF::STB_LOCAL:
  ------------------
  |  Branch (481:3): [True: 13.3k, False: 0]
  ------------------
  482|  13.3k|    break;
  483|      0|  case ELF::STB_WEAK:
  ------------------
  |  Branch (483:3): [True: 0, False: 13.3k]
  ------------------
  484|       |    // If the symbol is weak, it might be overridden by a symbol in another
  485|       |    // file. The relocation has to point to the symbol so that the linker
  486|       |    // can update it.
  487|      0|    return true;
  488|      0|  case ELF::STB_GLOBAL:
  ------------------
  |  Branch (488:3): [True: 0, False: 13.3k]
  ------------------
  489|       |    // Global ELF symbols can be preempted by the dynamic linker. The relocation
  490|       |    // has to point to the symbol for a reason analogous to the STB_WEAK case.
  491|      0|    return true;
  492|  13.3k|  }
  493|       |
  494|       |  // If a relocation points to a mergeable section, we have to be careful.
  495|       |  // If the offset is zero, a relocation with the section will encode the
  496|       |  // same information. With a non-zero offset, the situation is different.
  497|       |  // For example, a relocation can point 42 bytes past the end of a string.
  498|       |  // If we change such a relocation to use the section, the linker would think
  499|       |  // that it pointed to another string and subtracting 42 at runtime will
  500|       |  // produce the wrong value.
  501|  13.3k|  auto &Sec = cast<MCSectionELF>(Sym->getSection());
  502|  13.3k|  unsigned Flags = Sec.getFlags();
  503|  13.3k|  if (Flags & ELF::SHF_MERGE) {
  ------------------
  |  Branch (503:7): [True: 0, False: 13.3k]
  ------------------
  504|      0|    if (C != 0)
  ------------------
  |  Branch (504:9): [True: 0, False: 0]
  ------------------
  505|      0|      return true;
  506|       |
  507|       |    // It looks like gold has a bug (http://sourceware.org/PR16794) and can
  508|       |    // only handle section relocations to mergeable sections if using RELA.
  509|      0|    if (!hasRelocationAddend())
  ------------------
  |  Branch (509:9): [True: 0, False: 0]
  ------------------
  510|      0|      return true;
  511|      0|  }
  512|       |
  513|       |  // Most TLS relocations use a got, so they need the symbol. Even those that
  514|       |  // are just an offset (@tpoff), require a symbol in gold versions before
  515|       |  // 5efeedf61e4fe720fd3e9a08e6c91c10abb66d42 (2014-09-26) which fixed
  516|       |  // http://sourceware.org/PR16773.
  517|  13.3k|  if (Flags & ELF::SHF_TLS)
  ------------------
  |  Branch (517:7): [True: 0, False: 13.3k]
  ------------------
  518|      0|    return true;
  519|       |
  520|       |  // If the symbol is a thumb function the final relocation must set the lowest
  521|       |  // bit. With a symbol that is done by just having the symbol have that bit
  522|       |  // set, so we would lose the bit if we relocated with the section.
  523|       |  // FIXME: We could use the section but add the bit to the relocation value.
  524|  13.3k|  if (Asm.isThumbFunc(Sym))
  ------------------
  |  Branch (524:7): [True: 0, False: 13.3k]
  ------------------
  525|      0|    return true;
  526|       |
  527|  13.3k|  if (TargetObjectWriter->needsRelocateWithSymbol(*Sym, Type))
  ------------------
  |  Branch (527:7): [True: 285, False: 13.0k]
  ------------------
  528|    285|    return true;
  529|  13.0k|  return false;
  530|  13.3k|}
ELFObjectWriter.cpp:_ZNK12_GLOBAL__N_115ELFObjectWriter19hasRelocationAddendEv:
  127|  15.1k|    bool hasRelocationAddend() const {
  128|       |      // Keystone doesn't want relocation addends.
  129|       |      /* return TargetObjectWriter->hasRelocationAddend(); */
  130|  15.1k|      return false;
  131|  15.1k|    }
ELFObjectWriter.cpp:_ZNK12_GLOBAL__N_115ELFObjectWriter38isSymbolRefDifferenceFullyResolvedImplERKN7llvm_ks11MCAssemblerERKNS1_8MCSymbolERKNS1_10MCFragmentEbb:
 1237|  25.7k|    bool InSet, bool IsPCRel) const {
 1238|  25.7k|  const auto &SymA = cast<MCSymbolELF>(SA);
 1239|  25.7k|  if (IsPCRel) {
  ------------------
  |  Branch (1239:7): [True: 3.57k, False: 22.2k]
  ------------------
 1240|  3.57k|    assert(!InSet);
  ------------------
  |  Branch (1240:5): [True: 3.57k, False: 0]
  ------------------
 1241|  3.57k|    if (::isWeak(SymA))
  ------------------
  |  Branch (1241:9): [True: 0, False: 3.57k]
  ------------------
 1242|      0|      return false;
 1243|  3.57k|  }
 1244|  25.7k|  return MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(Asm, SymA, FB,
 1245|  25.7k|                                                                InSet, IsPCRel);
 1246|  25.7k|}
ELFObjectWriter.cpp:_ZL6isWeakRKN7llvm_ks11MCSymbolELFE:
  535|  3.57k|static bool isWeak(const MCSymbolELF &Sym) {
  536|  3.57k|  if (Sym.getType() == ELF::STT_GNU_IFUNC)
  ------------------
  |  Branch (536:7): [True: 0, False: 3.57k]
  ------------------
  537|      0|    return true;
  538|       |
  539|  3.57k|  switch (Sym.getBinding()) {
  540|      0|  default:
  ------------------
  |  Branch (540:3): [True: 0, False: 3.57k]
  ------------------
  541|      0|    llvm_unreachable("Unknown binding");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  542|  3.57k|  case ELF::STB_LOCAL:
  ------------------
  |  Branch (542:3): [True: 3.57k, False: 0]
  ------------------
  543|  3.57k|    return false;
  544|      0|  case ELF::STB_GLOBAL:
  ------------------
  |  Branch (544:3): [True: 0, False: 3.57k]
  ------------------
  545|      0|    return false;
  546|      0|  case ELF::STB_WEAK:
  ------------------
  |  Branch (546:3): [True: 0, False: 3.57k]
  ------------------
  547|      0|  case ELF::STB_GNU_UNIQUE:
  ------------------
  |  Branch (547:3): [True: 0, False: 3.57k]
  ------------------
  548|      0|    return true;
  549|  3.57k|  }
  550|  3.57k|}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriter11writeObjectERN7llvm_ks11MCAssemblerERKNS1_11MCAsmLayoutE:
 1103|  8.18k|{
 1104|  8.18k|  MCContext &Ctx = Asm.getContext();
 1105|  8.18k|  MCSectionELF *StrtabSection =
 1106|  8.18k|      Ctx.getELFSection(".strtab", ELF::SHT_STRTAB, 0);
 1107|  8.18k|  StringTableIndex = addToSectionTable(StrtabSection);
 1108|       |
 1109|  8.18k|  RevGroupMapTy RevGroupMap;
 1110|  8.18k|  SectionIndexMapTy SectionIndexMap;
 1111|       |
 1112|  8.18k|  std::map<const MCSymbol *, std::vector<const MCSectionELF *>> GroupMembers;
 1113|       |
 1114|       |  // ... then the sections ...
 1115|  8.18k|  SectionOffsetsTy SectionOffsets;
 1116|  8.18k|  std::vector<MCSectionELF *> Groups;
 1117|  8.18k|  std::vector<MCSectionELF *> Relocations;
 1118|  8.49k|  for (MCSection &Sec : Asm) {
  ------------------
  |  Branch (1118:23): [True: 8.49k, False: 7.84k]
  ------------------
 1119|  8.49k|    MCSectionELF &Section = static_cast<MCSectionELF &>(Sec);
 1120|       |
 1121|  8.49k|    align(Section.getAlignment());
 1122|       |
 1123|       |    // Remember the offset into the file for this section.
 1124|  8.49k|    uint64_t SecStart = getStream().tell();
 1125|       |
 1126|  8.49k|    const MCSymbolELF *SignatureSymbol = Section.getGroup();
 1127|  8.49k|    writeSectionData(Asm, Section, Layout);
 1128|  8.49k|    if (Asm.getError())
  ------------------
  |  Branch (1128:9): [True: 347, False: 8.14k]
  ------------------
 1129|    347|        return;
 1130|       |
 1131|  8.14k|    uint64_t SecEnd = getStream().tell();
 1132|  8.14k|    SectionOffsets[&Section] = std::make_pair(SecStart, SecEnd);
 1133|       |
 1134|  8.14k|    MCSectionELF *RelSection = createRelocationSection(Ctx, Section);
 1135|       |
 1136|  8.14k|    if (SignatureSymbol) {
  ------------------
  |  Branch (1136:9): [True: 0, False: 8.14k]
  ------------------
 1137|      0|      Asm.registerSymbol(*SignatureSymbol);
 1138|      0|      unsigned &GroupIdx = RevGroupMap[SignatureSymbol];
 1139|      0|      if (!GroupIdx) {
  ------------------
  |  Branch (1139:11): [True: 0, False: 0]
  ------------------
 1140|      0|        MCSectionELF *Group = Ctx.createELFGroupSection(SignatureSymbol);
 1141|      0|        GroupIdx = addToSectionTable(Group);
 1142|      0|        Group->setAlignment(4);
 1143|      0|        Groups.push_back(Group);
 1144|      0|      }
 1145|      0|      std::vector<const MCSectionELF *> &Members =
 1146|      0|          GroupMembers[SignatureSymbol];
 1147|      0|      Members.push_back(&Section);
 1148|      0|      if (RelSection)
  ------------------
  |  Branch (1148:11): [True: 0, False: 0]
  ------------------
 1149|      0|        Members.push_back(RelSection);
 1150|      0|    }
 1151|       |
 1152|  8.14k|    SectionIndexMap[&Section] = addToSectionTable(&Section);
 1153|  8.14k|    if (RelSection) {
  ------------------
  |  Branch (1153:9): [True: 202, False: 7.94k]
  ------------------
 1154|    202|      SectionIndexMap[RelSection] = addToSectionTable(RelSection);
 1155|    202|      Relocations.push_back(RelSection);
 1156|    202|    }
 1157|  8.14k|  }
 1158|       |
 1159|  7.84k|return;
 1160|       |
 1161|  7.84k|  for (MCSectionELF *Group : Groups) {
  ------------------
  |  Branch (1161:28): [True: 0, False: 0]
  ------------------
 1162|      0|    align(Group->getAlignment());
 1163|       |
 1164|       |    // Remember the offset into the file for this section.
 1165|      0|    uint64_t SecStart = getStream().tell();
 1166|       |
 1167|      0|    const MCSymbol *SignatureSymbol = Group->getGroup();
 1168|      0|    assert(SignatureSymbol);
  ------------------
  |  Branch (1168:5): [True: 0, False: 0]
  ------------------
 1169|      0|    write(uint32_t(ELF::GRP_COMDAT));
 1170|      0|    for (const MCSectionELF *Member : GroupMembers[SignatureSymbol]) {
  ------------------
  |  Branch (1170:37): [True: 0, False: 0]
  ------------------
 1171|      0|      uint32_t SecIndex = SectionIndexMap.lookup(Member);
 1172|      0|      write(SecIndex);
 1173|      0|    }
 1174|       |
 1175|      0|    uint64_t SecEnd = getStream().tell();
 1176|      0|    SectionOffsets[Group] = std::make_pair(SecStart, SecEnd);
 1177|      0|  }
 1178|       |
 1179|       |  // Compute symbol table information.
 1180|      0|  computeSymbolTable(Asm, Layout, SectionIndexMap, RevGroupMap, SectionOffsets);
 1181|       |
 1182|      0|  for (MCSectionELF *RelSection : Relocations) {
  ------------------
  |  Branch (1182:33): [True: 0, False: 0]
  ------------------
 1183|      0|    align(RelSection->getAlignment());
 1184|       |
 1185|       |    // Remember the offset into the file for this section.
 1186|      0|    uint64_t SecStart = getStream().tell();
 1187|       |
 1188|      0|    writeRelocations(Asm, *RelSection->getAssociatedSection());	// qq
 1189|       |
 1190|      0|    uint64_t SecEnd = getStream().tell();
 1191|      0|    SectionOffsets[RelSection] = std::make_pair(SecStart, SecEnd);
 1192|      0|  }
 1193|       |
 1194|      0|  {
 1195|      0|    uint64_t SecStart = getStream().tell();
 1196|      0|    const MCSectionELF *Sec = createStringTable(Ctx);
 1197|      0|    uint64_t SecEnd = getStream().tell();
 1198|      0|    SectionOffsets[Sec] = std::make_pair(SecStart, SecEnd);
 1199|      0|  }
 1200|       |
 1201|      0|  uint64_t NaturalAlignment = is64Bit() ? 8 : 4;
  ------------------
  |  Branch (1201:31): [True: 0, False: 0]
  ------------------
 1202|      0|  align(NaturalAlignment);
 1203|       |
 1204|      0|  const uint64_t SectionHeaderOffset = getStream().tell();
 1205|       |
 1206|       |  // ... then the section header table ...
 1207|      0|  writeSectionHeader(Layout, SectionIndexMap, SectionOffsets);
 1208|       |
 1209|      0|  uint16_t NumSections = (SectionTable.size() + 1 >= ELF::SHN_LORESERVE)
  ------------------
  |  Branch (1209:26): [True: 0, False: 0]
  ------------------
 1210|      0|                             ? (uint16_t)ELF::SHN_UNDEF
 1211|      0|                             : SectionTable.size() + 1;
 1212|      0|  if (sys::IsLittleEndianHost != IsLittleEndian)
  ------------------
  |  Branch (1212:7): [True: 0, False: 0]
  ------------------
 1213|      0|    sys::swapByteOrder(NumSections);
 1214|      0|  unsigned NumSectionsOffset;
 1215|       |
 1216|      0|  if (is64Bit()) {
  ------------------
  |  Branch (1216:7): [True: 0, False: 0]
  ------------------
 1217|      0|    uint64_t Val = SectionHeaderOffset;
 1218|      0|    if (sys::IsLittleEndianHost != IsLittleEndian)
  ------------------
  |  Branch (1218:9): [True: 0, False: 0]
  ------------------
 1219|      0|      sys::swapByteOrder(Val);
 1220|      0|    getStream().pwrite(reinterpret_cast<char *>(&Val), sizeof(Val),
 1221|      0|                       offsetof(ELF::Elf64_Ehdr, e_shoff));
 1222|      0|    NumSectionsOffset = offsetof(ELF::Elf64_Ehdr, e_shnum);
 1223|      0|  } else {
 1224|      0|    uint32_t Val = SectionHeaderOffset;
 1225|      0|    if (sys::IsLittleEndianHost != IsLittleEndian)
  ------------------
  |  Branch (1225:9): [True: 0, False: 0]
  ------------------
 1226|      0|      sys::swapByteOrder(Val);
 1227|      0|    getStream().pwrite(reinterpret_cast<char *>(&Val), sizeof(Val),
 1228|      0|                       offsetof(ELF::Elf32_Ehdr, e_shoff));
 1229|       |    NumSectionsOffset = offsetof(ELF::Elf32_Ehdr, e_shnum);
 1230|      0|  }
 1231|      0|  getStream().pwrite(reinterpret_cast<char *>(&NumSections),
 1232|      0|                     sizeof(NumSections), NumSectionsOffset);
 1233|      0|}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriter17addToSectionTableEPKN7llvm_ks12MCSectionELFE:
  240|  16.5k|unsigned ELFObjectWriter::addToSectionTable(const MCSectionELF *Sec) {
  241|  16.5k|  SectionTable.push_back(Sec);
  242|  16.5k|  StrTabBuilder.add(Sec->getSectionName());
  243|  16.5k|  return SectionTable.size();
  244|  16.5k|}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriter5alignEj:
  235|  8.49k|void ELFObjectWriter::align(unsigned Alignment) {
  236|  8.49k|  uint64_t Padding = OffsetToAlignment(getStream().tell(), Alignment);
  237|  8.49k|  WriteZeros(Padding);
  238|  8.49k|}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriter16writeSectionDataERKN7llvm_ks11MCAssemblerERNS1_9MCSectionERKNS1_11MCAsmLayoutE:
  911|  8.49k|                                       const MCAsmLayout &Layout) {
  912|  8.49k|  MCSectionELF &Section = static_cast<MCSectionELF &>(Sec);
  913|  8.49k|  StringRef SectionName = Section.getSectionName();
  914|       |
  915|       |  // Compressing debug_frame requires handling alignment fragments which is
  916|       |  // more work (possibly generalizing MCAssembler.cpp:writeFragment to allow
  917|       |  // for writing to arbitrary buffers) for little benefit.
  918|  8.49k|  if (!Asm.getContext().getAsmInfo()->compressDebugSections() ||
  ------------------
  |  Branch (918:7): [True: 8.49k, False: 0]
  |  Branch (918:7): [True: 8.49k, False: 0]
  ------------------
  919|  8.49k|      !SectionName.startswith(".debug_") || SectionName == ".debug_frame") {
  ------------------
  |  Branch (919:7): [True: 0, False: 0]
  |  Branch (919:45): [True: 0, False: 0]
  ------------------
  920|  8.49k|    Asm.writeSectionData(&Section, Layout);
  921|  8.49k|    return;
  922|  8.49k|  }
  923|       |
  924|      0|  SmallVector<char, 128> UncompressedData;
  925|      0|  raw_svector_ostream VecOS(UncompressedData);
  926|      0|  raw_pwrite_stream &OldStream = getStream();
  927|      0|  setStream(VecOS);
  928|      0|  Asm.writeSectionData(&Section, Layout);
  929|      0|  setStream(OldStream);
  930|       |
  931|       |#if 0
  932|       |  SmallVector<char, 128> CompressedContents;
  933|       |  zlib::Status Success = zlib::compress(
  934|       |      StringRef(UncompressedData.data(), UncompressedData.size()),
  935|       |      CompressedContents);
  936|       |  if (Success != zlib::StatusOK) {
  937|       |    getStream() << UncompressedData;
  938|       |    return;
  939|       |  }
  940|       |
  941|       |  if (!prependCompressionHeader(UncompressedData.size(), CompressedContents)) {
  942|       |    getStream() << UncompressedData;
  943|       |    return;
  944|       |  }
  945|       |  Asm.getContext().renameELFSection(&Section,
  946|       |                                    (".z" + SectionName.drop_front(1)).str());
  947|       |  getStream() << CompressedContents;
  948|       |#endif
  949|      0|}
ELFObjectWriter.cpp:_ZN12_GLOBAL__N_115ELFObjectWriter23createRelocationSectionERN7llvm_ks9MCContextERKNS1_12MCSectionELFE:
  885|  8.14k|                                         const MCSectionELF &Sec) {
  886|  8.14k|  if (Relocations[&Sec].empty())
  ------------------
  |  Branch (886:7): [True: 7.94k, False: 202]
  ------------------
  887|  7.94k|    return nullptr;
  888|       |
  889|    202|  const StringRef SectionName = Sec.getSectionName();
  890|    202|  std::string RelaSectionName = hasRelocationAddend() ? ".rela" : ".rel";
  ------------------
  |  Branch (890:33): [True: 0, False: 202]
  ------------------
  891|    202|  RelaSectionName += SectionName;
  892|       |
  893|    202|  unsigned EntrySize;
  894|    202|  if (hasRelocationAddend())
  ------------------
  |  Branch (894:7): [True: 0, False: 202]
  ------------------
  895|      0|    EntrySize = is64Bit() ? sizeof(ELF::Elf64_Rela) : sizeof(ELF::Elf32_Rela);
  ------------------
  |  Branch (895:17): [True: 0, False: 0]
  ------------------
  896|    202|  else
  897|    202|    EntrySize = is64Bit() ? sizeof(ELF::Elf64_Rel) : sizeof(ELF::Elf32_Rel);
  ------------------
  |  Branch (897:17): [True: 0, False: 202]
  ------------------
  898|       |
  899|    202|  unsigned Flags = 0;
  900|    202|  if (Sec.getFlags() & ELF::SHF_GROUP)
  ------------------
  |  Branch (900:7): [True: 0, False: 202]
  ------------------
  901|      0|    Flags = ELF::SHF_GROUP;
  902|       |
  903|    202|  MCSectionELF *RelaSection = Ctx.createELFRelSection(
  904|    202|      RelaSectionName, hasRelocationAddend() ? ELF::SHT_RELA : ELF::SHT_REL,
  ------------------
  |  Branch (904:24): [True: 0, False: 202]
  ------------------
  905|    202|      Flags, EntrySize, Sec.getGroup(), &Sec);
  906|    202|  RelaSection->setAlignment(is64Bit() ? 8 : 4);
  ------------------
  |  Branch (906:29): [True: 0, False: 202]
  ------------------
  907|    202|  return RelaSection;
  908|  8.14k|}
ELFObjectWriter.cpp:_ZNK12_GLOBAL__N_115ELFObjectWriter7is64BitEv:
  126|    404|    bool is64Bit() const { return TargetObjectWriter->is64Bit(); }

_ZN7llvm_ks12MCAsmBackendC2Ev:
   15|  20.9k|MCAsmBackend::MCAsmBackend() : HasDataInCodeSupport(false) {}
_ZN7llvm_ks12MCAsmBackendD2Ev:
   17|  20.9k|MCAsmBackend::~MCAsmBackend() {}
_ZNK7llvm_ks12MCAsmBackend12getFixupKindENS_9StringRefE:
   19|    562|Optional<MCFixupKind> MCAsmBackend::getFixupKind(StringRef Name) const {
   20|    562|  return None;
   21|    562|}
_ZNK7llvm_ks12MCAsmBackend16getFixupKindInfoENS_11MCFixupKindE:
   23|  56.5k|const MCFixupKindInfo &MCAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
   24|  56.5k|  static const MCFixupKindInfo Builtins[] = {
   25|  56.5k|      {"FK_Data_1", 0, 8, 0},
   26|  56.5k|      {"FK_Data_2", 0, 16, 0},
   27|  56.5k|      {"FK_Data_4", 0, 32, 0},
   28|  56.5k|      {"FK_Data_8", 0, 64, 0},
   29|  56.5k|      {"FK_PCRel_1", 0, 8, MCFixupKindInfo::FKF_IsPCRel},
   30|  56.5k|      {"FK_PCRel_2", 0, 16, MCFixupKindInfo::FKF_IsPCRel},
   31|  56.5k|      {"FK_PCRel_4", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   32|  56.5k|      {"FK_PCRel_8", 0, 64, MCFixupKindInfo::FKF_IsPCRel},
   33|  56.5k|      {"FK_GPRel_1", 0, 8, 0},
   34|  56.5k|      {"FK_GPRel_2", 0, 16, 0},
   35|  56.5k|      {"FK_GPRel_4", 0, 32, 0},
   36|  56.5k|      {"FK_GPRel_8", 0, 64, 0},
   37|  56.5k|      {"FK_SecRel_1", 0, 8, 0},
   38|  56.5k|      {"FK_SecRel_2", 0, 16, 0},
   39|  56.5k|      {"FK_SecRel_4", 0, 32, 0},
   40|  56.5k|      {"FK_SecRel_8", 0, 64, 0}};
   41|       |
   42|  56.5k|  assert((size_t)Kind <= array_lengthof(Builtins) && "Unknown fixup kind");
  ------------------
  |  Branch (42:3): [True: 56.5k, False: 0]
  |  Branch (42:3): [True: 56.5k, Folded]
  |  Branch (42:3): [True: 56.5k, False: 0]
  ------------------
   43|  56.5k|  return Builtins[Kind];
   44|  56.5k|}
_ZNK7llvm_ks12MCAsmBackend28fixupNeedsRelaxationAdvancedERKNS_7MCFixupEbmPKNS_19MCRelaxableFragmentERKNS_11MCAsmLayoutE:
   48|    969|    const MCRelaxableFragment *DF, const MCAsmLayout &Layout) const {
   49|    969|  if (!Resolved)
  ------------------
  |  Branch (49:7): [True: 85, False: 884]
  ------------------
   50|     85|    return true;
   51|    884|  unsigned KsError;
   52|    884|  return fixupNeedsRelaxation(Fixup, Value, DF, Layout, KsError);
   53|    969|}

_ZN7llvm_ks9MCAsmInfoC2Ev:
   25|  20.9k|MCAsmInfo::MCAsmInfo() {
   26|  20.9k|  PointerSize = 4;
   27|  20.9k|  CalleeSaveStackSlotSize = 4;
   28|       |
   29|  20.9k|  IsLittleEndian = true;
   30|  20.9k|  StackGrowsUp = false;
   31|  20.9k|  HasSubsectionsViaSymbols = false;
   32|  20.9k|  HasMachoZeroFillDirective = false;
   33|  20.9k|  HasMachoTBSSDirective = false;
   34|  20.9k|  HasStaticCtorDtorReferenceInStaticMode = false;
   35|  20.9k|  MaxInstLength = 4;
   36|  20.9k|  MinInstAlignment = 1;
   37|  20.9k|  DollarIsPC = false;
   38|  20.9k|  SeparatorString = ";";
   39|  20.9k|  CommentString = "#";
   40|  20.9k|  LabelSuffix = ":";
   41|  20.9k|  UseAssignmentForEHBegin = false;
   42|  20.9k|  NeedsLocalForSize = false;
   43|  20.9k|  PrivateGlobalPrefix = "L";
   44|  20.9k|  PrivateLabelPrefix = PrivateGlobalPrefix;
   45|  20.9k|  LinkerPrivateGlobalPrefix = "";
   46|  20.9k|  InlineAsmStart = "APP";
   47|  20.9k|  InlineAsmEnd = "NO_APP";
   48|  20.9k|  Code16Directive = ".code16";
   49|  20.9k|  Code32Directive = ".code32";
   50|  20.9k|  Code64Directive = ".code64";
   51|  20.9k|  AssemblerDialect = 0;
   52|  20.9k|  AllowAtInName = false;
   53|  20.9k|  SupportsQuotedNames = true;
   54|  20.9k|  UseDataRegionDirectives = false;
   55|  20.9k|  ZeroDirective = "\t.zero\t";
   56|  20.9k|  AsciiDirective = "\t.ascii\t";
   57|  20.9k|  AscizDirective = "\t.asciz\t";
   58|  20.9k|  Data8bitsDirective = "\t.byte\t";
   59|  20.9k|  Data16bitsDirective = "\t.short\t";
   60|  20.9k|  Data32bitsDirective = "\t.long\t";
   61|  20.9k|  Data64bitsDirective = "\t.quad\t";
   62|  20.9k|  SunStyleELFSectionSwitchSyntax = false;
   63|  20.9k|  UsesELFSectionDirectiveForBSS = false;
   64|  20.9k|  AlignmentIsInBytes = true;
   65|  20.9k|  TextAlignFillValue = 0;
   66|  20.9k|  GPRel64Directive = nullptr;
   67|  20.9k|  GPRel32Directive = nullptr;
   68|  20.9k|  GlobalDirective = "\t.globl\t";
   69|  20.9k|  SetDirectiveSuppressesReloc = false;
   70|  20.9k|  HasAggressiveSymbolFolding = true;
   71|  20.9k|  COMMDirectiveAlignmentIsInBytes = true;
   72|  20.9k|  LCOMMDirectiveAlignmentType = LCOMM::NoAlignment;
   73|  20.9k|  HasFunctionAlignment = true;
   74|  20.9k|  HasDotTypeDotSizeDirective = true;
   75|  20.9k|  HasSingleParameterDotFile = true;
   76|  20.9k|  HasIdentDirective = false;
   77|  20.9k|  HasNoDeadStrip = false;
   78|  20.9k|  WeakDirective = "\t.weak\t";
   79|  20.9k|  WeakRefDirective = nullptr;
   80|  20.9k|  HasWeakDefDirective = false;
   81|  20.9k|  HasWeakDefCanBeHiddenDirective = false;
   82|  20.9k|  HasLinkOnceDirective = false;
   83|  20.9k|  HiddenVisibilityAttr = MCSA_Hidden;
   84|  20.9k|  HiddenDeclarationVisibilityAttr = MCSA_Hidden;
   85|  20.9k|  ProtectedVisibilityAttr = MCSA_Protected;
   86|  20.9k|  SupportsDebugInformation = false;
   87|  20.9k|  ExceptionsType = ExceptionHandling::None;
   88|  20.9k|  WinEHEncodingType = WinEH::EncodingType::Invalid;
   89|  20.9k|  DwarfUsesRelocationsAcrossSections = true;
   90|  20.9k|  DwarfFDESymbolsUseAbsDiff = false;
   91|  20.9k|  DwarfRegNumForCFI = false;
   92|  20.9k|  NeedsDwarfSectionOffsetDirective = false;
   93|  20.9k|  UseParensForSymbolVariant = false;
   94|  20.9k|  UseLogicalShr = true;
   95|       |
   96|       |  // FIXME: Clang's logic should be synced with the logic used to initialize
   97|       |  //        this member and the two implementations should be merged.
   98|       |  // For reference:
   99|       |  // - Solaris always enables the integrated assembler by default
  100|       |  //   - SparcELFMCAsmInfo and X86ELFMCAsmInfo are handling this case
  101|       |  // - Windows always enables the integrated assembler by default
  102|       |  //   - MCAsmInfoCOFF is handling this case, should it be MCAsmInfoMicrosoft?
  103|       |  // - MachO targets always enables the integrated assembler by default
  104|       |  //   - MCAsmInfoDarwin is handling this case
  105|       |  // - Generic_GCC toolchains enable the integrated assembler on a per
  106|       |  //   architecture basis.
  107|       |  //   - The target subclasses for AArch64, ARM, and X86 handle these cases
  108|  20.9k|  UseIntegratedAssembler = false;
  109|       |
  110|  20.9k|  CompressDebugSections = false;
  111|  20.9k|}
_ZN7llvm_ks9MCAsmInfoD2Ev:
  113|  20.9k|MCAsmInfo::~MCAsmInfo() {
  114|  20.9k|}

_ZN7llvm_ks12MCAsmInfoELFC2Ev:
   27|  20.9k|MCAsmInfoELF::MCAsmInfoELF() {
   28|  20.9k|  HasIdentDirective = true;
   29|  20.9k|  WeakRefDirective = "\t.weak\t";
   30|  20.9k|  PrivateGlobalPrefix = ".L";
   31|  20.9k|  PrivateLabelPrefix = ".L";
   32|  20.9k|  UsesNonexecutableStackSection = true;
   33|  20.9k|}

_ZN7llvm_ks11MCAssemblerC2ERNS_9MCContextERNS_12MCAsmBackendERNS_13MCCodeEmitterERNS_14MCObjectWriterE:
   48|  20.9k|    : Context(Context_), Backend(Backend_), Emitter(Emitter_), Writer(Writer_),
   49|  20.9k|      BundleAlignSize(0), RelaxAll(false), SubsectionsViaSymbols(false),
   50|  20.9k|      IncrementalLinkerCompatible(false), ELFHeaderEFlags(0) {
   51|  20.9k|  VersionMinInfo.Major = 0; // Major version == 0 for "none specified"
   52|  20.9k|}
_ZN7llvm_ks11MCAssemblerD2Ev:
   54|  20.9k|MCAssembler::~MCAssembler() {
   55|  20.9k|}
_ZN7llvm_ks11MCAssembler15registerSectionERNS_9MCSectionE:
   80|  21.8k|bool MCAssembler::registerSection(MCSection &Section) {
   81|  21.8k|  if (Section.isRegistered())
  ------------------
  |  Branch (81:7): [True: 468, False: 21.3k]
  ------------------
   82|    468|    return false;
   83|  21.3k|  Sections.push_back(&Section);
   84|  21.3k|  Section.setIsRegistered(true);
   85|  21.3k|  return true;
   86|  21.8k|}
_ZNK7llvm_ks11MCAssembler11isThumbFuncEPKNS_8MCSymbolE:
   88|  53.3k|bool MCAssembler::isThumbFunc(const MCSymbol *Symbol) const {
   89|  53.3k|  if (ThumbFuncs.count(Symbol))
  ------------------
  |  Branch (89:7): [True: 0, False: 53.3k]
  ------------------
   90|      0|    return true;
   91|       |
   92|  53.3k|  if (!Symbol->isVariable())
  ------------------
  |  Branch (92:7): [True: 51.5k, False: 1.84k]
  ------------------
   93|  51.5k|    return false;
   94|       |
   95|       |  // FIXME: It looks like gas supports some cases of the form "foo + 2". It
   96|       |  // is not clear if that is a bug or a feature.
   97|  1.84k|  const MCExpr *Expr = Symbol->getVariableValue();
   98|  1.84k|  const MCSymbolRefExpr *Ref = dyn_cast<MCSymbolRefExpr>(Expr);
   99|  1.84k|  if (!Ref)
  ------------------
  |  Branch (99:7): [True: 465, False: 1.38k]
  ------------------
  100|    465|    return false;
  101|       |
  102|  1.38k|  if (Ref->getKind() != MCSymbolRefExpr::VK_None)
  ------------------
  |  Branch (102:7): [True: 0, False: 1.38k]
  ------------------
  103|      0|    return false;
  104|       |
  105|  1.38k|  const MCSymbol &Sym = Ref->getSymbol();
  106|  1.38k|  if (!isThumbFunc(&Sym))
  ------------------
  |  Branch (106:7): [True: 1.38k, False: 0]
  ------------------
  107|  1.38k|    return false;
  108|       |
  109|      0|  ThumbFuncs.insert(Symbol); // Cache it.
  110|      0|  return true;
  111|  1.38k|}
_ZNK7llvm_ks11MCAssembler13evaluateFixupERKNS_11MCAsmLayoutERKNS_7MCFixupEPKNS_10MCFragmentERNS_7MCValueERmRj:
  150|  26.8k|{
  151|  26.8k|  KsError = 0;
  152|       |
  153|       |  // FIXME: This code has some duplication with recordRelocation. We should
  154|       |  // probably merge the two into a single callback that tries to evaluate a
  155|       |  // fixup and records a relocation if one is needed.
  156|  26.8k|  const MCExpr *Expr = Fixup.getValue();
  157|  26.8k|  if (!Expr->evaluateAsRelocatable(Target, &Layout, &Fixup)) {
  ------------------
  |  Branch (157:7): [True: 299, False: 26.5k]
  ------------------
  158|       |    // getContext().reportError(Fixup.getLoc(), "expected relocatable expression");
  159|       |    // Claim to have completely evaluated the fixup, to prevent any further
  160|       |    // processing from being done.
  161|       |    // return true;
  162|    299|    Value = 0;
  163|    299|    KsError = KS_ERR_ASM_INVALIDOPERAND;
  164|    299|    return false;
  165|    299|  }
  166|       |
  167|  26.5k|  bool IsPCRel = Backend.getFixupKindInfo(
  168|  26.5k|    Fixup.getKind()).Flags & MCFixupKindInfo::FKF_IsPCRel;
  169|       |
  170|  26.5k|  bool IsResolved;
  171|  26.5k|  if (IsPCRel) {
  ------------------
  |  Branch (171:7): [True: 7.73k, False: 18.8k]
  ------------------
  172|  7.73k|    if (Target.getSymB()) {
  ------------------
  |  Branch (172:9): [True: 2.98k, False: 4.74k]
  ------------------
  173|  2.98k|      IsResolved = false;
  174|  4.74k|    } else if (!Target.getSymA()) {
  ------------------
  |  Branch (174:16): [True: 479, False: 4.27k]
  ------------------
  175|    479|      if (getBackend().getArch() == KS_ARCH_X86)
  ------------------
  |  Branch (175:11): [True: 0, False: 479]
  ------------------
  176|      0|          IsResolved = true;
  177|    479|      else
  178|    479|          IsResolved = false;
  179|  4.27k|    } else {
  180|  4.27k|      const MCSymbolRefExpr *A = Target.getSymA();
  181|  4.27k|      const MCSymbol &SA = A->getSymbol();
  182|  4.27k|      if (A->getKind() != MCSymbolRefExpr::VK_None || SA.isUndefined()) {
  ------------------
  |  Branch (182:11): [True: 3, False: 4.26k]
  |  Branch (182:55): [True: 697, False: 3.57k]
  ------------------
  183|    700|        IsResolved = false;
  184|  3.57k|      } else {
  185|  3.57k|        IsResolved = getWriter().isSymbolRefDifferenceFullyResolvedImpl(
  186|  3.57k|            *this, SA, *DF, false, true);
  187|  3.57k|      }
  188|  4.27k|    }
  189|  18.8k|  } else {
  190|  18.8k|    IsResolved = Target.isAbsolute();
  191|  18.8k|  }
  192|       |
  193|  26.5k|  Value = Target.getConstant();
  194|       |
  195|  26.5k|  if (const MCSymbolRefExpr *A = Target.getSymA()) {
  ------------------
  |  Branch (195:30): [True: 22.1k, False: 4.40k]
  ------------------
  196|  22.1k|    const MCSymbol &Sym = A->getSymbol();
  197|  22.1k|    bool valid;
  198|  22.1k|    if (Sym.isDefined()) {
  ------------------
  |  Branch (198:9): [True: 21.2k, False: 900]
  ------------------
  199|  21.2k|      Value += Layout.getSymbolOffset(Sym, valid);
  200|  21.2k|      if (!valid) {
  ------------------
  |  Branch (200:11): [True: 10, False: 21.2k]
  ------------------
  201|     10|        KsError = KS_ERR_ASM_FIXUP_INVALID;
  202|     10|        return false;
  203|     10|      }
  204|  21.2k|    } else {
  205|       |        // a missing symbol. is there any resolver registered?
  206|    900|        if (KsSymResolver) {
  ------------------
  |  Branch (206:13): [True: 0, False: 900]
  ------------------
  207|      0|            uint64_t imm;
  208|      0|            ks_sym_resolver resolver = (ks_sym_resolver)KsSymResolver;
  209|      0|            if (resolver(Sym.getName().str().c_str(), &imm)) {
  ------------------
  |  Branch (209:17): [True: 0, False: 0]
  ------------------
  210|       |                // resolver handled this symbol
  211|      0|                Value = imm;
  212|      0|                IsResolved = true;
  213|      0|            } else {
  214|       |                // resolver did not handle this symbol
  215|      0|                KsError = KS_ERR_ASM_SYMBOL_MISSING;
  216|      0|                return false;
  217|      0|            }
  218|    900|        } else {
  219|       |            // no resolver registered
  220|    900|            KsError = KS_ERR_ASM_SYMBOL_MISSING;
  221|    900|            return false;
  222|    900|        }
  223|    900|    }
  224|  22.1k|  }
  225|       |
  226|  25.6k|  if (const MCSymbolRefExpr *B = Target.getSymB()) {
  ------------------
  |  Branch (226:30): [True: 8.13k, False: 17.5k]
  ------------------
  227|  8.13k|    const MCSymbol &Sym = B->getSymbol();
  228|  8.13k|    bool valid;
  229|  8.13k|    if (Sym.isDefined()) {
  ------------------
  |  Branch (229:9): [True: 873, False: 7.26k]
  ------------------
  230|    873|      Value -= Layout.getSymbolOffset(Sym, valid);
  231|    873|      if (!valid) {
  ------------------
  |  Branch (231:11): [True: 2, False: 871]
  ------------------
  232|      2|        KsError = KS_ERR_ASM_FIXUP_INVALID;
  233|      2|        return false;
  234|      2|      }
  235|    873|    }
  236|  8.13k|  }
  237|       |
  238|  25.6k|  bool ShouldAlignPC = Backend.getFixupKindInfo(Fixup.getKind()).Flags &
  239|  25.6k|                         MCFixupKindInfo::FKF_IsAlignedDownTo32Bits;
  240|  25.6k|  assert((ShouldAlignPC ? IsPCRel : true) &&
  ------------------
  |  Branch (240:3): [True: 1.05k, False: 24.5k]
  |  Branch (240:3): [True: 25.6k, False: 0]
  |  Branch (240:3): [True: 25.6k, Folded]
  |  Branch (240:3): [True: 25.6k, False: 0]
  ------------------
  241|  25.6k|    "FKF_IsAlignedDownTo32Bits is only allowed on PC-relative fixups!");
  242|       |
  243|  25.6k|  if (IsPCRel) {
  ------------------
  |  Branch (243:7): [True: 7.01k, False: 18.6k]
  ------------------
  244|  7.01k|    bool valid;
  245|  7.01k|    uint64_t Offset = Layout.getFragmentOffset(DF, valid) + Fixup.getOffset();
  246|  7.01k|    if (!valid) {
  ------------------
  |  Branch (246:9): [True: 68, False: 6.94k]
  ------------------
  247|     68|        KsError = KS_ERR_ASM_FRAGMENT_INVALID;
  248|     68|        return false;
  249|     68|    }
  250|       |
  251|       |    // A number of ARM fixups in Thumb mode require that the effective PC
  252|       |    // address be determined as the 32-bit aligned version of the actual offset.
  253|  6.94k|    if (ShouldAlignPC) Offset &= ~0x3;
  ------------------
  |  Branch (253:9): [True: 1.05k, False: 5.89k]
  ------------------
  254|  6.94k|    Value -= Offset;
  255|  6.94k|  }
  256|       |
  257|       |  // Let the backend adjust the fixup value if necessary, including whether
  258|       |  // we need a relocation.
  259|  25.5k|  Backend.processFixupValue(*this, Layout, Fixup, DF, Target, Value,
  260|  25.5k|                            IsResolved);
  261|       |
  262|  25.5k|  return IsResolved;
  263|  25.6k|}
_ZNK7llvm_ks11MCAssembler19computeFragmentSizeERKNS_11MCAsmLayoutERKNS_10MCFragmentERb:
  267|  74.9k|{
  268|  74.9k|  valid = true;
  269|  74.9k|  switch (F.getKind()) {
  ------------------
  |  Branch (269:11): [True: 74.9k, False: 0]
  ------------------
  270|  14.1k|  case MCFragment::FT_Data:
  ------------------
  |  Branch (270:3): [True: 14.1k, False: 60.8k]
  ------------------
  271|  14.1k|    return cast<MCDataFragment>(F).getContents().size();
  272|  2.73k|  case MCFragment::FT_Relaxable:
  ------------------
  |  Branch (272:3): [True: 2.73k, False: 72.2k]
  ------------------
  273|  2.73k|    return cast<MCRelaxableFragment>(F).getContents().size();
  274|      0|  case MCFragment::FT_CompactEncodedInst:
  ------------------
  |  Branch (274:3): [True: 0, False: 74.9k]
  ------------------
  275|      0|    return cast<MCCompactEncodedInstFragment>(F).getContents().size();
  276|  4.40k|  case MCFragment::FT_Fill:
  ------------------
  |  Branch (276:3): [True: 4.40k, False: 70.5k]
  ------------------
  277|  4.40k|    return cast<MCFillFragment>(F).getSize();
  278|       |
  279|      0|  case MCFragment::FT_LEB:
  ------------------
  |  Branch (279:3): [True: 0, False: 74.9k]
  ------------------
  280|      0|    return cast<MCLEBFragment>(F).getContents().size();
  281|       |
  282|      0|  case MCFragment::FT_SafeSEH:
  ------------------
  |  Branch (282:3): [True: 0, False: 74.9k]
  ------------------
  283|      0|    return 4;
  284|       |
  285|  18.7k|  case MCFragment::FT_Align: {
  ------------------
  |  Branch (285:3): [True: 18.7k, False: 56.2k]
  ------------------
  286|  18.7k|    const MCAlignFragment &AF = cast<MCAlignFragment>(F);
  287|  18.7k|    unsigned Offset = Layout.getFragmentOffset(&AF, valid);
  288|  18.7k|    if (!valid) {
  ------------------
  |  Branch (288:9): [True: 0, False: 18.7k]
  ------------------
  289|      0|        return 0;
  290|      0|    }
  291|  18.7k|    unsigned Size = OffsetToAlignment(Offset, AF.getAlignment());
  292|       |    // If we are padding with nops, force the padding to be larger than the
  293|       |    // minimum nop size.
  294|  18.7k|    if (Size > 0 && AF.hasEmitNops()) {
  ------------------
  |  Branch (294:9): [True: 1.02k, False: 17.6k]
  |  Branch (294:21): [True: 758, False: 266]
  ------------------
  295|    758|      while (Size % getBackend().getMinimumNopSize())
  ------------------
  |  Branch (295:14): [True: 0, False: 758]
  ------------------
  296|      0|        Size += AF.getAlignment();
  297|    758|    }
  298|  18.7k|    if (Size > AF.getMaxBytesToEmit())
  ------------------
  |  Branch (298:9): [True: 196, False: 18.5k]
  ------------------
  299|    196|      return 0;
  300|  18.5k|    return Size;
  301|  18.7k|  }
  302|       |
  303|  35.0k|  case MCFragment::FT_Org: {
  ------------------
  |  Branch (303:3): [True: 35.0k, False: 39.9k]
  ------------------
  304|  35.0k|    const MCOrgFragment &OF = cast<MCOrgFragment>(F);
  305|  35.0k|    MCValue Value;
  306|  35.0k|    if (!OF.getOffset().evaluateAsValue(Value, Layout)) {
  ------------------
  |  Branch (306:9): [True: 1.45k, False: 33.5k]
  ------------------
  307|       |      //report_fatal_error("expected assembly-time absolute expression");
  308|  1.45k|      valid = false;
  309|  1.45k|      return 0;
  310|  1.45k|    }
  311|       |
  312|       |    // FIXME: We need a way to communicate this error.
  313|  33.5k|    uint64_t FragmentOffset = Layout.getFragmentOffset(&OF, valid);
  314|  33.5k|    if (!valid) {
  ------------------
  |  Branch (314:9): [True: 10, False: 33.5k]
  ------------------
  315|     10|      return 0;
  316|     10|    }
  317|  33.5k|    int64_t TargetLocation = Value.getConstant();
  318|  33.5k|    if (const MCSymbolRefExpr *A = Value.getSymA()) {
  ------------------
  |  Branch (318:32): [True: 4.64k, False: 28.9k]
  ------------------
  319|  4.64k|      uint64_t Val;
  320|  4.64k|      if (!Layout.getSymbolOffset(A->getSymbol(), Val, valid)) {
  ------------------
  |  Branch (320:11): [True: 717, False: 3.93k]
  ------------------
  321|       |        //report_fatal_error("expected absolute expression");
  322|    717|        valid = false;
  323|    717|        return 0;
  324|    717|      }
  325|  3.93k|      TargetLocation += Val;
  326|  3.93k|    }
  327|  32.8k|    int64_t Size = TargetLocation - FragmentOffset;
  328|  32.8k|    if (Size < 0 || Size >= 0x40000000) {
  ------------------
  |  Branch (328:9): [True: 3.33k, False: 29.5k]
  |  Branch (328:21): [True: 376, False: 29.1k]
  ------------------
  329|       |      //report_fatal_error("invalid .org offset '" + Twine(TargetLocation) +
  330|       |      //                   "' (at offset '" + Twine(FragmentOffset) + "')");
  331|  3.70k|      valid = false;
  332|  3.70k|      return 0;
  333|  3.70k|    }
  334|  29.1k|    return Size;
  335|  32.8k|  }
  336|       |
  337|      0|  case MCFragment::FT_Dwarf:
  ------------------
  |  Branch (337:3): [True: 0, False: 74.9k]
  ------------------
  338|      0|    return cast<MCDwarfLineAddrFragment>(F).getContents().size();
  339|      0|  case MCFragment::FT_DwarfFrame:
  ------------------
  |  Branch (339:3): [True: 0, False: 74.9k]
  ------------------
  340|      0|    return cast<MCDwarfCallFrameFragment>(F).getContents().size();
  341|      0|  case MCFragment::FT_Dummy:
  ------------------
  |  Branch (341:3): [True: 0, False: 74.9k]
  ------------------
  342|      0|    llvm_unreachable("Should not have been added");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  343|  74.9k|  }
  344|       |
  345|      0|  llvm_unreachable("invalid fragment kind");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  346|  74.9k|}
_ZN7llvm_ks11MCAsmLayout14layoutFragmentEPNS_10MCFragmentE:
  349|  54.8k|{
  350|  54.8k|  MCFragment *Prev = F->getPrevNode();
  351|       |
  352|       |  // We should never try to recompute something which is valid.
  353|       |  //assert(!isFragmentValid(F) && "Attempt to recompute a valid fragment!");
  354|  54.8k|  if (isFragmentValid(F))
  ------------------
  |  Branch (354:7): [True: 0, False: 54.8k]
  ------------------
  355|      0|      return true;
  356|       |
  357|       |  // We should never try to compute the fragment layout if its predecessor
  358|       |  // isn't valid.
  359|       |  //assert((!Prev || isFragmentValid(Prev)) &&
  360|       |  //       "Attempt to compute fragment before its predecessor!");
  361|  54.8k|  if (Prev && !isFragmentValid(Prev))
  ------------------
  |  Branch (361:7): [True: 45.5k, False: 9.33k]
  |  Branch (361:15): [True: 3.71k, False: 41.8k]
  ------------------
  362|  3.71k|      return true;
  363|       |
  364|  51.1k|  bool valid = true;
  365|       |  // Compute fragment offset and size.
  366|  51.1k|  if (Prev)
  ------------------
  |  Branch (366:7): [True: 41.8k, False: 9.33k]
  ------------------
  367|  41.8k|    F->Offset = Prev->Offset + getAssembler().computeFragmentSize(*this, *Prev, valid);
  368|  9.33k|  else
  369|  9.33k|    F->Offset = getAssembler().getContext().getBaseAddress();
  370|  51.1k|  if (!valid) {
  ------------------
  |  Branch (370:7): [True: 5.54k, False: 45.6k]
  ------------------
  371|  5.54k|      return false;
  372|  5.54k|  }
  373|  45.6k|  LastValidFragment[F->getParent()] = F;
  374|       |
  375|       |  // If bundling is enabled and this fragment has instructions in it, it has to
  376|       |  // obey the bundling restrictions. With padding, we'll have:
  377|       |  //
  378|       |  //
  379|       |  //        BundlePadding
  380|       |  //             |||
  381|       |  // -------------------------------------
  382|       |  //   Prev  |##########|       F        |
  383|       |  // -------------------------------------
  384|       |  //                    ^
  385|       |  //                    |
  386|       |  //                    F->Offset
  387|       |  //
  388|       |  // The fragment's offset will point to after the padding, and its computed
  389|       |  // size won't include the padding.
  390|       |  //
  391|       |  // When the -mc-relax-all flag is used, we optimize bundling by writting the
  392|       |  // padding directly into fragments when the instructions are emitted inside
  393|       |  // the streamer. When the fragment is larger than the bundle size, we need to
  394|       |  // ensure that it's bundle aligned. This means that if we end up with
  395|       |  // multiple fragments, we must emit bundle padding between fragments.
  396|       |  //
  397|       |  // ".align N" is an example of a directive that introduces multiple
  398|       |  // fragments. We could add a special case to handle ".align N" by emitting
  399|       |  // within-fragment padding (which would produce less padding when N is less
  400|       |  // than the bundle size), but for now we don't.
  401|       |  //
  402|  45.6k|  if (Assembler.isBundlingEnabled() && F->hasInstructions()) {
  ------------------
  |  Branch (402:7): [True: 0, False: 45.6k]
  |  Branch (402:40): [True: 0, False: 0]
  ------------------
  403|      0|    assert(isa<MCEncodedFragment>(F) &&
  ------------------
  |  Branch (403:5): [True: 0, False: 0]
  |  Branch (403:5): [True: 0, Folded]
  |  Branch (403:5): [True: 0, False: 0]
  ------------------
  404|      0|           "Only MCEncodedFragment implementations have instructions");
  405|      0|    if (!isa<MCEncodedFragment>(F))
  ------------------
  |  Branch (405:9): [True: 0, False: 0]
  ------------------
  406|      0|        return true;
  407|       |
  408|      0|    bool valid;
  409|      0|    uint64_t FSize = Assembler.computeFragmentSize(*this, *F, valid);
  410|      0|    if (!valid)
  ------------------
  |  Branch (410:9): [True: 0, False: 0]
  ------------------
  411|      0|        return true;
  412|       |
  413|      0|    if (!Assembler.getRelaxAll() && FSize > Assembler.getBundleAlignSize())
  ------------------
  |  Branch (413:9): [True: 0, False: 0]
  |  Branch (413:37): [True: 0, False: 0]
  ------------------
  414|       |      //report_fatal_error("Fragment can't be larger than a bundle size");
  415|      0|      return true;
  416|       |
  417|      0|    uint64_t RequiredBundlePadding = computeBundlePadding(Assembler, F,
  418|      0|                                                          F->Offset, FSize);
  419|      0|    if (RequiredBundlePadding > UINT8_MAX)
  ------------------
  |  Branch (419:9): [True: 0, False: 0]
  ------------------
  420|       |      //report_fatal_error("Padding cannot exceed 255 bytes");
  421|      0|      return true;
  422|       |
  423|      0|    F->setBundlePadding(static_cast<uint8_t>(RequiredBundlePadding));
  424|      0|    F->Offset += RequiredBundlePadding;
  425|      0|  }
  426|       |
  427|  45.6k|  return false;
  428|  45.6k|}
_ZN7llvm_ks11MCAssembler14registerSymbolERKNS_8MCSymbolEPb:
  430|   557k|void MCAssembler::registerSymbol(const MCSymbol &Symbol, bool *Created) {
  431|   557k|  bool New = !Symbol.isRegistered();
  432|   557k|  if (Created)
  ------------------
  |  Branch (432:7): [True: 0, False: 557k]
  ------------------
  433|      0|    *Created = New;
  434|   557k|  if (New) {
  ------------------
  |  Branch (434:7): [True: 145k, False: 411k]
  ------------------
  435|   145k|    Symbol.setIsRegistered(true);
  436|   145k|    Symbols.push_back(&Symbol);
  437|   145k|  }
  438|   557k|}
_ZNK7llvm_ks11MCAssembler20writeFragmentPaddingERKNS_10MCFragmentEmPNS_14MCObjectWriterE:
  441|  32.7k|                                       MCObjectWriter *OW) const {
  442|       |  // Should NOP padding be written out before this fragment?
  443|  32.7k|  unsigned BundlePadding = F.getBundlePadding();
  444|  32.7k|  if (BundlePadding > 0) {
  ------------------
  |  Branch (444:7): [True: 0, False: 32.7k]
  ------------------
  445|      0|    assert(isBundlingEnabled() &&
  ------------------
  |  Branch (445:5): [True: 0, False: 0]
  |  Branch (445:5): [True: 0, Folded]
  |  Branch (445:5): [True: 0, False: 0]
  ------------------
  446|      0|           "Writing bundle padding with disabled bundling");
  447|      0|    assert(F.hasInstructions() &&
  ------------------
  |  Branch (447:5): [True: 0, False: 0]
  |  Branch (447:5): [True: 0, Folded]
  |  Branch (447:5): [True: 0, False: 0]
  ------------------
  448|      0|           "Writing bundle padding for a fragment without instructions");
  449|       |
  450|      0|    unsigned TotalLength = BundlePadding + static_cast<unsigned>(FSize);
  451|      0|    if (F.alignToBundleEnd() && TotalLength > getBundleAlignSize()) {
  ------------------
  |  Branch (451:9): [True: 0, False: 0]
  |  Branch (451:33): [True: 0, False: 0]
  ------------------
  452|       |      // If the padding itself crosses a bundle boundary, it must be emitted
  453|       |      // in 2 pieces, since even nop instructions must not cross boundaries.
  454|       |      //             v--------------v   <- BundleAlignSize
  455|       |      //        v---------v             <- BundlePadding
  456|       |      // ----------------------------
  457|       |      // | Prev |####|####|    F    |
  458|       |      // ----------------------------
  459|       |      //        ^-------------------^   <- TotalLength
  460|      0|      unsigned DistanceToBoundary = TotalLength - getBundleAlignSize();
  461|      0|      if (!getBackend().writeNopData(DistanceToBoundary, OW))
  ------------------
  |  Branch (461:11): [True: 0, False: 0]
  ------------------
  462|      0|          report_fatal_error("unable to write NOP sequence of " +
  463|      0|                             Twine(DistanceToBoundary) + " bytes");
  464|      0|      BundlePadding -= DistanceToBoundary;
  465|      0|    }
  466|      0|    if (!getBackend().writeNopData(BundlePadding, OW))
  ------------------
  |  Branch (466:9): [True: 0, False: 0]
  ------------------
  467|      0|      report_fatal_error("unable to write NOP sequence of " +
  468|      0|                         Twine(BundlePadding) + " bytes");
  469|      0|  }
  470|  32.7k|}
_ZNK7llvm_ks11MCAssembler16writeSectionDataEPKNS_9MCSectionERKNS_11MCAsmLayoutE:
  608|  8.49k|{
  609|       |  // Ignore virtual sections.
  610|  8.49k|  if (Sec->isVirtualSection()) {
  ------------------
  |  Branch (610:7): [True: 22, False: 8.46k]
  ------------------
  611|     22|    assert(Layout.getSectionFileSize(Sec) == 0 && "Invalid size for section!");
  ------------------
  |  Branch (611:5): [True: 22, False: 0]
  |  Branch (611:5): [True: 22, Folded]
  |  Branch (611:5): [True: 22, False: 0]
  ------------------
  612|       |
  613|       |    // Check that contents are only things legal inside a virtual section.
  614|     72|    for (const MCFragment &F : *Sec) {
  ------------------
  |  Branch (614:30): [True: 72, False: 22]
  ------------------
  615|     72|      switch (F.getKind()) {
  616|      0|      default: llvm_unreachable("Invalid fragment in virtual section!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (616:7): [True: 0, False: 72]
  ------------------
  617|      0|      case MCFragment::FT_Data: {
  ------------------
  |  Branch (617:7): [True: 0, False: 72]
  ------------------
  618|       |        // Check that we aren't trying to write a non-zero contents (or fixups)
  619|       |        // into a virtual section. This is to support clients which use standard
  620|       |        // directives to fill the contents of virtual sections.
  621|      0|        const MCDataFragment &DF = cast<MCDataFragment>(F);
  622|      0|        assert(DF.fixup_begin() == DF.fixup_end() &&
  ------------------
  |  Branch (622:9): [True: 0, False: 0]
  |  Branch (622:9): [True: 0, Folded]
  |  Branch (622:9): [True: 0, False: 0]
  ------------------
  623|      0|               "Cannot have fixups in virtual section!");
  624|      0|        for (unsigned i = 0, e = DF.getContents().size(); i != e; ++i)
  ------------------
  |  Branch (624:59): [True: 0, False: 0]
  ------------------
  625|      0|          if (DF.getContents()[i]) {
  ------------------
  |  Branch (625:15): [True: 0, False: 0]
  ------------------
  626|      0|            if (auto *ELFSec = dyn_cast<const MCSectionELF>(Sec))
  ------------------
  |  Branch (626:23): [True: 0, False: 0]
  ------------------
  627|      0|              report_fatal_error("non-zero initializer found in section '" +
  628|      0|                  ELFSec->getSectionName() + "'");
  629|      0|            else
  630|      0|              report_fatal_error("non-zero initializer found in virtual section");
  631|      0|          }
  632|      0|        break;
  633|      0|      }
  634|     36|      case MCFragment::FT_Align:
  ------------------
  |  Branch (634:7): [True: 36, False: 36]
  ------------------
  635|       |        // Check that we aren't trying to write a non-zero value into a virtual
  636|       |        // section.
  637|     36|        assert((cast<MCAlignFragment>(F).getValueSize() == 0 ||
  ------------------
  |  Branch (637:9): [True: 0, False: 36]
  |  Branch (637:9): [True: 36, False: 0]
  |  Branch (637:9): [True: 36, Folded]
  |  Branch (637:9): [True: 36, False: 0]
  ------------------
  638|     36|                cast<MCAlignFragment>(F).getValue() == 0) &&
  639|     36|               "Invalid align in virtual section!");
  640|     36|        break;
  641|     36|      case MCFragment::FT_Fill:
  ------------------
  |  Branch (641:7): [True: 36, False: 36]
  ------------------
  642|     36|        assert((cast<MCFillFragment>(F).getValue() == 0) &&
  ------------------
  |  Branch (642:9): [True: 36, False: 0]
  |  Branch (642:9): [True: 36, Folded]
  |  Branch (642:9): [True: 36, False: 0]
  ------------------
  643|     36|               "Invalid fill in virtual section!");
  644|     36|        break;
  645|     72|      }
  646|     72|    }
  647|       |
  648|     22|    return;
  649|     22|  }
  650|       |
  651|  8.46k|  uint64_t Start = getWriter().getStream().tell();
  652|  8.46k|  (void)Start;
  653|       |
  654|  8.46k|  setError(0);
  655|  8.46k|  for (const MCFragment &F : *Sec)
  ------------------
  |  Branch (655:28): [True: 36.3k, False: 8.46k]
  ------------------
  656|  36.3k|    writeFragment(*this, Layout, F);
  657|       |
  658|       |  //assert(getWriter().getStream().tell() - Start ==
  659|       |  //       Layout.getSectionAddressSize(Sec));
  660|  8.46k|}
_ZN7llvm_ks11MCAssembler11handleFixupERKNS_11MCAsmLayoutERNS_10MCFragmentERKNS_7MCFixupERj:
  664|  25.3k|                                                   const MCFixup &Fixup, unsigned int &KsError) {
  665|       |  // Evaluate the fixup.
  666|  25.3k|  MCValue Target;
  667|  25.3k|  uint64_t FixedValue;
  668|  25.3k|  bool IsPCRel = Backend.getFixupKindInfo(Fixup.getKind()).Flags &
  669|  25.3k|                 MCFixupKindInfo::FKF_IsPCRel;
  670|  25.3k|  if (!evaluateFixup(Layout, Fixup, &F, Target, FixedValue, KsError)) {
  ------------------
  |  Branch (670:7): [True: 22.6k, False: 2.78k]
  ------------------
  671|  22.6k|    if (KsError) {
  ------------------
  |  Branch (671:9): [True: 791, False: 21.8k]
  ------------------
  672|       |        // return a dummy value
  673|    791|        return std::make_pair(0, false);
  674|    791|    }
  675|       |    // The fixup was unresolved, we need a relocation. Inform the object
  676|       |    // writer of the relocation, and give it an opportunity to adjust the
  677|       |    // fixup value if need be.
  678|  21.8k|    if (const MCSymbolRefExpr *RefB = Target.getSymB()) {
  ------------------
  |  Branch (678:32): [True: 8.10k, False: 13.7k]
  ------------------
  679|  8.10k|        if (RefB->getKind() != MCSymbolRefExpr::VK_None) {
  ------------------
  |  Branch (679:13): [True: 7, False: 8.10k]
  ------------------
  680|      7|            KsError = KS_ERR_ASM_FIXUP_INVALID;
  681|       |            // return a dummy value
  682|      7|            return std::make_pair(0, false);
  683|      7|        }
  684|  8.10k|    }
  685|  21.8k|    getWriter().recordRelocation(*this, Layout, &F, Fixup, Target, IsPCRel,
  686|  21.8k|                                 FixedValue);
  687|  21.8k|  }
  688|       |
  689|  24.6k|  return std::make_pair(FixedValue, IsPCRel);
  690|  25.3k|}
_ZN7llvm_ks11MCAssembler6layoutERNS_11MCAsmLayoutERj:
  693|  8.98k|{
  694|  8.98k|  DEBUG_WITH_TYPE("mc-dump", {
  695|  8.98k|      llvm_ks::errs() << "assembler backend - pre-layout\n--\n";
  696|  8.98k|      dump(); });
  697|       |
  698|       |  // Create dummy fragments and assign section ordinals.
  699|  8.98k|  unsigned SectionIndex = 0;
  700|  9.30k|  for (MCSection &Sec : *this) {
  ------------------
  |  Branch (700:23): [True: 9.30k, False: 8.98k]
  ------------------
  701|       |    // Create dummy fragments to eliminate any empty sections, this simplifies
  702|       |    // layout.
  703|  9.30k|    if (Sec.getFragmentList().empty())
  ------------------
  |  Branch (703:9): [True: 0, False: 9.30k]
  ------------------
  704|      0|      new MCDataFragment(&Sec);
  705|       |
  706|  9.30k|    Sec.setOrdinal(SectionIndex++);
  707|  9.30k|  }
  708|       |
  709|       |  // Assign layout order indices to sections and fragments.
  710|  18.2k|  for (unsigned i = 0, e = Layout.getSectionOrder().size(); i != e; ++i) {
  ------------------
  |  Branch (710:61): [True: 9.30k, False: 8.98k]
  ------------------
  711|  9.30k|    MCSection *Sec = Layout.getSectionOrder()[i];
  712|  9.30k|    Sec->setLayoutOrder(i);
  713|       |
  714|  9.30k|    unsigned FragmentIndex = 0;
  715|  9.30k|    for (MCFragment &Frag : *Sec)
  ------------------
  |  Branch (715:27): [True: 52.1k, False: 9.30k]
  ------------------
  716|  52.1k|      Frag.setLayoutOrder(FragmentIndex++);
  717|  9.30k|  }
  718|       |
  719|       |  // Layout until everything fits.
  720|  9.04k|  while (layoutOnce(Layout))
  ------------------
  |  Branch (720:10): [True: 56, False: 8.98k]
  ------------------
  721|     56|    continue;
  722|       |
  723|  8.98k|  DEBUG_WITH_TYPE("mc-dump", {
  724|  8.98k|      llvm_ks::errs() << "assembler backend - post-relaxation\n--\n";
  725|  8.98k|      dump(); });
  726|       |
  727|       |  // Finalize the layout, including fragment lowering.
  728|  8.98k|  finishLayout(Layout);
  729|       |
  730|  8.98k|  DEBUG_WITH_TYPE("mc-dump", {
  731|  8.98k|      llvm_ks::errs() << "assembler backend - final-layout\n--\n";
  732|  8.98k|      dump(); });
  733|       |
  734|       |  // Allow the object writer a chance to perform post-layout binding (for
  735|       |  // example, to set the index fields in the symbol data).
  736|  8.98k|  getWriter().executePostLayoutBinding(*this, Layout);
  737|       |
  738|       |  // Evaluate and apply the fixups, generating relocation entries as necessary.
  739|  9.29k|  for (MCSection &Sec : *this) {
  ------------------
  |  Branch (739:23): [True: 9.29k, False: 8.18k]
  ------------------
  740|  37.4k|    for (MCFragment &Frag : Sec) {
  ------------------
  |  Branch (740:27): [True: 37.4k, False: 8.49k]
  ------------------
  741|  37.4k|      MCEncodedFragment *F = dyn_cast<MCEncodedFragment>(&Frag);
  742|       |      // Data and relaxable fragments both have fixups.  So only process
  743|       |      // those here.
  744|       |      // FIXME: Is there a better way to do this?  MCEncodedFragmentWithFixups
  745|       |      // being templated makes this tricky.
  746|  37.4k|      if (!F || isa<MCCompactEncodedInstFragment>(F))
  ------------------
  |  Branch (746:11): [True: 26.6k, False: 10.7k]
  |  Branch (746:17): [True: 0, False: 10.7k]
  ------------------
  747|  26.6k|        continue;
  748|  10.7k|      ArrayRef<MCFixup> Fixups;
  749|  10.7k|      MutableArrayRef<char> Contents;
  750|  10.7k|      if (auto *FragWithFixups = dyn_cast<MCDataFragment>(F)) {
  ------------------
  |  Branch (750:17): [True: 9.64k, False: 1.14k]
  ------------------
  751|  9.64k|        Fixups = FragWithFixups->getFixups();
  752|  9.64k|        Contents = FragWithFixups->getContents();
  753|  9.64k|      } else if (auto *FragWithFixups = dyn_cast<MCRelaxableFragment>(F)) {
  ------------------
  |  Branch (753:24): [True: 1.14k, False: 0]
  ------------------
  754|  1.14k|        Fixups = FragWithFixups->getFixups();
  755|  1.14k|        Contents = FragWithFixups->getContents();
  756|  1.14k|      } else
  757|      0|        llvm_unreachable("Unknown fragment with fixups!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  758|  25.3k|      for (const MCFixup &Fixup : Fixups) {
  ------------------
  |  Branch (758:33): [True: 25.3k, False: 9.99k]
  ------------------
  759|  25.3k|        uint64_t FixedValue;
  760|  25.3k|        bool IsPCRel;
  761|  25.3k|        std::tie(FixedValue, IsPCRel) = handleFixup(Layout, *F, Fixup, KsError);
  762|  25.3k|        if (KsError)
  ------------------
  |  Branch (762:13): [True: 798, False: 24.6k]
  ------------------
  763|    798|            return;
  764|  24.6k|        getBackend().applyFixup(Fixup, Contents.data(),
  765|  24.6k|                                Contents.size(), FixedValue, IsPCRel, KsError);
  766|  24.6k|        if (KsError)
  ------------------
  |  Branch (766:13): [True: 0, False: 24.6k]
  ------------------
  767|      0|            return;
  768|  24.6k|      }
  769|  10.7k|    }
  770|  9.29k|  }
  771|  8.98k|}
_ZN7llvm_ks11MCAssembler6FinishERj:
  773|  8.98k|void MCAssembler::Finish(unsigned int &KsError) {
  774|       |  // Create the layout object.
  775|  8.98k|  MCAsmLayout Layout(*this);
  776|  8.98k|  layout(Layout, KsError);
  777|       |
  778|       |  // Write the object file.
  779|  8.98k|  if (!KsError) {
  ------------------
  |  Branch (779:7): [True: 8.18k, False: 798]
  ------------------
  780|  8.18k|      getWriter().writeObject(*this, Layout);
  781|  8.18k|      KsError = getError();
  782|  8.18k|  }
  783|  8.98k|}
_ZNK7llvm_ks11MCAssembler20fixupNeedsRelaxationERKNS_7MCFixupEPKNS_19MCRelaxableFragmentERKNS_11MCAsmLayoutERj:
  788|  1.45k|{
  789|  1.45k|  MCValue Target;
  790|  1.45k|  uint64_t Value;
  791|  1.45k|  bool Resolved = evaluateFixup(Layout, Fixup, DF, Target, Value, KsError);
  792|  1.45k|  if (KsError) {
  ------------------
  |  Branch (792:7): [True: 488, False: 969]
  ------------------
  793|    488|      KsError = KS_ERR_ASM_FIXUP_INVALID;
  794|       |      // return a dummy value
  795|    488|      return false;
  796|    488|  }
  797|    969|  return getBackend().fixupNeedsRelaxationAdvanced(Fixup, Resolved, Value, DF,
  798|    969|                                                   Layout);
  799|  1.45k|}
_ZNK7llvm_ks11MCAssembler23fragmentNeedsRelaxationEPKNS_19MCRelaxableFragmentERKNS_11MCAsmLayoutERj:
  803|  2.20k|{
  804|       |  // If this inst doesn't ever need relaxation, ignore it. This occurs when we
  805|       |  // are intentionally pushing out inst fragments, or because we relaxed a
  806|       |  // previous instruction to one that doesn't need relaxation.
  807|  2.20k|  if (!getBackend().mayNeedRelaxation(F->getInst()))
  ------------------
  |  Branch (807:7): [True: 342, False: 1.86k]
  ------------------
  808|    342|    return false;
  809|       |
  810|  1.86k|  for (const MCFixup &Fixup : F->getFixups())
  ------------------
  |  Branch (810:29): [True: 1.45k, False: 1.69k]
  ------------------
  811|  1.45k|    if (fixupNeedsRelaxation(Fixup, F, Layout, KsError))
  ------------------
  |  Branch (811:9): [True: 171, False: 1.28k]
  ------------------
  812|    171|      return true;
  813|       |
  814|  1.69k|  return false;
  815|  1.86k|}
_ZN7llvm_ks11MCAssembler16relaxInstructionERNS_11MCAsmLayoutERNS_19MCRelaxableFragmentE:
  819|  2.20k|{
  820|  2.20k|  unsigned KsError = 0;
  821|  2.20k|  if (!fragmentNeedsRelaxation(&F, Layout, KsError))
  ------------------
  |  Branch (821:7): [True: 2.03k, False: 171]
  ------------------
  822|  2.03k|    return false;
  823|       |
  824|       |  // FIXME-PERF: We could immediately lower out instructions if we can tell
  825|       |  // they are fully resolved, to avoid retesting on later passes.
  826|       |
  827|       |  // Relax the fragment.
  828|       |
  829|    171|  MCInst Relaxed;
  830|    171|  getBackend().relaxInstruction(F.getInst(), Relaxed);
  831|       |
  832|       |  // Encode the new instruction.
  833|       |  //
  834|       |  // FIXME-PERF: If it matters, we could let the target do this. It can
  835|       |  // probably do so more efficiently in many cases.
  836|    171|  SmallVector<MCFixup, 4> Fixups;
  837|    171|  SmallString<256> Code;
  838|    171|  raw_svector_ostream VecOS(Code);
  839|    171|  getEmitter().encodeInstruction(Relaxed, VecOS, Fixups, F.getSubtargetInfo(), KsError);
  840|       |
  841|       |  // Update the fragment.
  842|    171|  F.setInst(Relaxed);
  843|    171|  F.getContents() = Code;
  844|    171|  F.getFixups() = Fixups;
  845|       |
  846|    171|  return true;
  847|  2.20k|}
_ZN7llvm_ks11MCAssembler17layoutSectionOnceERNS_11MCAsmLayoutERNS_9MCSectionE:
  876|  9.41k|{
  877|       |  // Holds the first fragment which needed relaxing during this layout. It will
  878|       |  // remain NULL if none were relaxed.
  879|       |  // When a fragment is relaxed, all the fragments following it should get
  880|       |  // invalidated because their offset is going to change.
  881|  9.41k|  MCFragment *FirstRelaxedFragment = nullptr;
  882|       |
  883|       |  // Attempt to relax all the fragments in the section.
  884|  62.1k|  for (MCSection::iterator I = Sec.begin(), IE = Sec.end(); I != IE; ++I) {
  ------------------
  |  Branch (884:61): [True: 52.6k, False: 9.41k]
  ------------------
  885|       |    // Check if this is a fragment that needs relaxation.
  886|  52.6k|    bool RelaxedFrag = false;
  887|  52.6k|    switch(I->getKind()) {
  888|  50.4k|    default:
  ------------------
  |  Branch (888:5): [True: 50.4k, False: 2.20k]
  ------------------
  889|  50.4k|      break;
  890|  50.4k|    case MCFragment::FT_Relaxable:
  ------------------
  |  Branch (890:5): [True: 2.20k, False: 50.4k]
  ------------------
  891|  2.20k|      assert(!getRelaxAll() &&
  ------------------
  |  Branch (891:7): [True: 2.20k, False: 0]
  |  Branch (891:7): [True: 2.20k, Folded]
  |  Branch (891:7): [True: 2.20k, False: 0]
  ------------------
  892|  2.20k|             "Did not expect a MCRelaxableFragment in RelaxAll mode");
  893|  2.20k|      RelaxedFrag = relaxInstruction(Layout, *cast<MCRelaxableFragment>(I));
  894|  2.20k|      break;
  895|      0|    case MCFragment::FT_Dwarf:
  ------------------
  |  Branch (895:5): [True: 0, False: 52.6k]
  ------------------
  896|      0|      RelaxedFrag = relaxDwarfLineAddr(Layout,
  897|      0|                                       *cast<MCDwarfLineAddrFragment>(I));
  898|      0|      break;
  899|      0|    case MCFragment::FT_DwarfFrame:
  ------------------
  |  Branch (899:5): [True: 0, False: 52.6k]
  ------------------
  900|      0|      RelaxedFrag =
  901|      0|        relaxDwarfCallFrameFragment(Layout,
  902|      0|                                    *cast<MCDwarfCallFrameFragment>(I));
  903|      0|      break;
  904|      0|    case MCFragment::FT_LEB:
  ------------------
  |  Branch (904:5): [True: 0, False: 52.6k]
  ------------------
  905|      0|      RelaxedFrag = relaxLEB(Layout, *cast<MCLEBFragment>(I));
  906|      0|      break;
  907|  52.6k|    }
  908|  52.6k|    if (RelaxedFrag && !FirstRelaxedFragment)
  ------------------
  |  Branch (908:9): [True: 171, False: 52.5k]
  |  Branch (908:24): [True: 56, False: 115]
  ------------------
  909|     56|      FirstRelaxedFragment = &*I;
  910|  52.6k|  }
  911|  9.41k|  if (FirstRelaxedFragment) {
  ------------------
  |  Branch (911:7): [True: 56, False: 9.35k]
  ------------------
  912|     56|    Layout.invalidateFragmentsFrom(FirstRelaxedFragment);
  913|     56|    return true;
  914|     56|  }
  915|  9.35k|  return false;
  916|  9.41k|}
_ZN7llvm_ks11MCAssembler10layoutOnceERNS_11MCAsmLayoutE:
  919|  9.04k|{
  920|  9.04k|  bool WasRelaxed = false;
  921|  18.3k|  for (iterator it = begin(), ie = end(); it != ie; ++it) {
  ------------------
  |  Branch (921:43): [True: 9.35k, False: 9.04k]
  ------------------
  922|  9.35k|    MCSection &Sec = *it;
  923|  9.41k|    while (layoutSectionOnce(Layout, Sec))
  ------------------
  |  Branch (923:12): [True: 56, False: 9.35k]
  ------------------
  924|     56|      WasRelaxed = true;
  925|  9.35k|  }
  926|       |
  927|  9.04k|  return WasRelaxed;
  928|  9.04k|}
_ZN7llvm_ks11MCAssembler12finishLayoutERNS_11MCAsmLayoutE:
  930|  8.98k|void MCAssembler::finishLayout(MCAsmLayout &Layout) {
  931|       |  // The layout is done. Mark every fragment as valid.
  932|  18.2k|  for (unsigned int i = 0, n = Layout.getSectionOrder().size(); i != n; ++i) {
  ------------------
  |  Branch (932:65): [True: 9.30k, False: 8.98k]
  ------------------
  933|  9.30k|    bool valid;
  934|  9.30k|    Layout.getFragmentOffset(&*Layout.getSectionOrder()[i]->rbegin(), valid);
  935|  9.30k|  }
  936|  8.98k|}
MCAssembler.cpp:_ZL13writeFragmentRKN7llvm_ks11MCAssemblerERKNS_11MCAsmLayoutERKNS_10MCFragmentE:
  475|  36.3k|{
  476|  36.3k|  if (Asm.getError())
  ------------------
  |  Branch (476:7): [True: 3.16k, False: 33.1k]
  ------------------
  477|  3.16k|      return;
  478|       |
  479|  33.1k|  MCObjectWriter *OW = &Asm.getWriter();
  480|       |
  481|  33.1k|  bool valid;
  482|       |  // FIXME: Embed in fragments instead?
  483|  33.1k|  uint64_t FragmentSize = Asm.computeFragmentSize(Layout, F, valid);
  484|  33.1k|  if (!valid) {
  ------------------
  |  Branch (484:7): [True: 347, False: 32.7k]
  ------------------
  485|    347|      Asm.setError(KS_ERR_ASM_FRAGMENT_INVALID);
  486|    347|      return;
  487|    347|  }
  488|       |
  489|  32.7k|  Asm.writeFragmentPadding(F, FragmentSize, OW);
  490|       |
  491|       |  // This variable (and its dummy usage) is to participate in the assert at
  492|       |  // the end of the function.
  493|  32.7k|  uint64_t Start = OW->getStream().tell();
  494|  32.7k|  (void) Start;
  495|       |
  496|  32.7k|  switch (F.getKind()) {
  ------------------
  |  Branch (496:11): [True: 32.7k, False: 0]
  ------------------
  497|  8.58k|  case MCFragment::FT_Align: {
  ------------------
  |  Branch (497:3): [True: 8.58k, False: 24.2k]
  ------------------
  498|  8.58k|    const MCAlignFragment &AF = cast<MCAlignFragment>(F);
  499|  8.58k|    assert(AF.getValueSize() && "Invalid virtual align in concrete fragment!");
  ------------------
  |  Branch (499:5): [True: 8.58k, False: 0]
  |  Branch (499:5): [True: 8.58k, Folded]
  |  Branch (499:5): [True: 8.58k, False: 0]
  ------------------
  500|       |
  501|  8.58k|    uint64_t Count = FragmentSize / AF.getValueSize();
  502|       |
  503|       |    // FIXME: This error shouldn't actually occur (the front end should emit
  504|       |    // multiple .align directives to enforce the semantics it wants), but is
  505|       |    // severe enough that we want to report it. How to handle this?
  506|  8.58k|    if (Count * AF.getValueSize() != FragmentSize)
  ------------------
  |  Branch (506:9): [True: 0, False: 8.58k]
  ------------------
  507|      0|      report_fatal_error("undefined .align directive, value size '" +
  508|      0|                        Twine(AF.getValueSize()) +
  509|      0|                        "' is not a divisor of padding size '" +
  510|      0|                        Twine(FragmentSize) + "'");
  511|       |
  512|       |    // See if we are aligning with nops, and if so do that first to try to fill
  513|       |    // the Count bytes.  Then if that did not fill any bytes or there are any
  514|       |    // bytes left to fill use the Value and ValueSize to fill the rest.
  515|       |    // If we are aligning with nops, ask that target to emit the right data.
  516|  8.58k|    if (AF.hasEmitNops()) {
  ------------------
  |  Branch (516:9): [True: 2.55k, False: 6.03k]
  ------------------
  517|  2.55k|      if (!Asm.getBackend().writeNopData(Count, OW))
  ------------------
  |  Branch (517:11): [True: 0, False: 2.55k]
  ------------------
  518|      0|        report_fatal_error("unable to write nop sequence of " +
  519|      0|                          Twine(Count) + " bytes");
  520|  2.55k|      break;
  521|  2.55k|    }
  522|       |
  523|       |    // Otherwise, write out in multiples of the value size.
  524|  8.47M|    for (uint64_t i = 0; i != Count; ++i) {
  ------------------
  |  Branch (524:26): [True: 8.46M, False: 6.03k]
  ------------------
  525|  8.46M|      switch (AF.getValueSize()) {
  526|      0|      default: llvm_unreachable("Invalid size!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (526:7): [True: 0, False: 8.46M]
  ------------------
  527|  8.46M|      case 1: OW->write8 (uint8_t (AF.getValue())); break;
  ------------------
  |  Branch (527:7): [True: 8.46M, False: 0]
  ------------------
  528|      0|      case 2: OW->write16(uint16_t(AF.getValue())); break;
  ------------------
  |  Branch (528:7): [True: 0, False: 8.46M]
  ------------------
  529|      0|      case 4: OW->write32(uint32_t(AF.getValue())); break;
  ------------------
  |  Branch (529:7): [True: 0, False: 8.46M]
  ------------------
  530|      0|      case 8: OW->write64(uint64_t(AF.getValue())); break;
  ------------------
  |  Branch (530:7): [True: 0, False: 8.46M]
  ------------------
  531|  8.46M|      }
  532|  8.46M|    }
  533|  6.03k|    break;
  534|  6.03k|  }
  535|       |
  536|  8.24k|  case MCFragment::FT_Data: 
  ------------------
  |  Branch (536:3): [True: 8.24k, False: 24.5k]
  ------------------
  537|  8.24k|    OW->writeBytes(cast<MCDataFragment>(F).getContents());
  538|  8.24k|    break;
  539|       |
  540|  1.02k|  case MCFragment::FT_Relaxable:
  ------------------
  |  Branch (540:3): [True: 1.02k, False: 31.7k]
  ------------------
  541|  1.02k|    OW->writeBytes(cast<MCRelaxableFragment>(F).getContents());
  542|  1.02k|    break;
  543|       |
  544|      0|  case MCFragment::FT_CompactEncodedInst:
  ------------------
  |  Branch (544:3): [True: 0, False: 32.7k]
  ------------------
  545|      0|    OW->writeBytes(cast<MCCompactEncodedInstFragment>(F).getContents());
  546|      0|    break;
  547|       |
  548|  2.02k|  case MCFragment::FT_Fill: {
  ------------------
  |  Branch (548:3): [True: 2.02k, False: 30.7k]
  ------------------
  549|  2.02k|    const MCFillFragment &FF = cast<MCFillFragment>(F);
  550|  2.02k|    uint8_t V = FF.getValue();
  551|  2.02k|    const unsigned MaxChunkSize = 16;
  552|  2.02k|    char Data[MaxChunkSize];
  553|  2.02k|    memcpy(Data, &V, 1);
  554|  32.3k|    for (unsigned I = 1; I < MaxChunkSize; ++I)
  ------------------
  |  Branch (554:26): [True: 30.3k, False: 2.02k]
  ------------------
  555|  30.3k|      Data[I] = Data[0];
  556|       |
  557|  2.02k|    uint64_t Size = FF.getSize();
  558|  12.1k|    for (unsigned ChunkSize = MaxChunkSize; ChunkSize; ChunkSize /= 2) {
  ------------------
  |  Branch (558:45): [True: 10.1k, False: 2.02k]
  ------------------
  559|  10.1k|      StringRef Ref(Data, ChunkSize);
  560|  1.09M|      for (uint64_t I = 0, E = Size / ChunkSize; I != E; ++I)
  ------------------
  |  Branch (560:50): [True: 1.08M, False: 10.1k]
  ------------------
  561|  1.08M|        OW->writeBytes(Ref);
  562|  10.1k|      Size = Size % ChunkSize;
  563|  10.1k|    }
  564|  2.02k|    break;
  565|  6.03k|  }
  566|       |
  567|      0|  case MCFragment::FT_LEB: {
  ------------------
  |  Branch (567:3): [True: 0, False: 32.7k]
  ------------------
  568|      0|    const MCLEBFragment &LF = cast<MCLEBFragment>(F);
  569|      0|    OW->writeBytes(LF.getContents());
  570|      0|    break;
  571|  6.03k|  }
  572|       |
  573|      0|  case MCFragment::FT_SafeSEH: {
  ------------------
  |  Branch (573:3): [True: 0, False: 32.7k]
  ------------------
  574|      0|    const MCSafeSEHFragment &SF = cast<MCSafeSEHFragment>(F);
  575|      0|    OW->write32(SF.getSymbol()->getIndex());
  576|      0|    break;
  577|  6.03k|  }
  578|       |
  579|  12.9k|  case MCFragment::FT_Org: {
  ------------------
  |  Branch (579:3): [True: 12.9k, False: 19.8k]
  ------------------
  580|  12.9k|    const MCOrgFragment &OF = cast<MCOrgFragment>(F);
  581|       |
  582|   124M|    for (uint64_t i = 0, e = FragmentSize; i != e; ++i)
  ------------------
  |  Branch (582:44): [True: 124M, False: 12.9k]
  ------------------
  583|   124M|      OW->write8(uint8_t(OF.getValue()));
  584|       |
  585|  12.9k|    break;
  586|  6.03k|  }
  587|       |
  588|      0|  case MCFragment::FT_Dwarf: {
  ------------------
  |  Branch (588:3): [True: 0, False: 32.7k]
  ------------------
  589|      0|    const MCDwarfLineAddrFragment &OF = cast<MCDwarfLineAddrFragment>(F);
  590|      0|    OW->writeBytes(OF.getContents());
  591|      0|    break;
  592|  6.03k|  }
  593|      0|  case MCFragment::FT_DwarfFrame: {
  ------------------
  |  Branch (593:3): [True: 0, False: 32.7k]
  ------------------
  594|      0|    const MCDwarfCallFrameFragment &CF = cast<MCDwarfCallFrameFragment>(F);
  595|      0|    OW->writeBytes(CF.getContents());
  596|      0|    break;
  597|  6.03k|  }
  598|      0|  case MCFragment::FT_Dummy:
  ------------------
  |  Branch (598:3): [True: 0, False: 32.7k]
  ------------------
  599|      0|    llvm_unreachable("Should not have been added");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  600|  32.7k|  }
  601|       |
  602|  32.7k|  assert(OW->getStream().tell() - Start == FragmentSize &&
  ------------------
  |  Branch (602:3): [True: 32.7k, False: 0]
  |  Branch (602:3): [True: 32.7k, Folded]
  |  Branch (602:3): [True: 32.7k, False: 0]
  ------------------
  603|  32.7k|         "The stream should advance by fragment size");
  604|  32.7k|}

_ZN7llvm_ks13MCCodeEmitterC2Ev:
   14|  20.9k|MCCodeEmitter::MCCodeEmitter() {
   15|  20.9k|}
_ZN7llvm_ks13MCCodeEmitterD2Ev:
   17|  20.9k|MCCodeEmitter::~MCCodeEmitter() {
   18|  20.9k|}

_ZN7llvm_ks9MCContextC2EPKNS_9MCAsmInfoEPKNS_14MCRegisterInfoEPKNS_16MCObjectFileInfoEPKNS_9SourceMgrEbm:
   40|  20.9k|    : SrcMgr(mgr), MAI(mai), MRI(mri), MOFI(mofi), Allocator(),
   41|  20.9k|      Symbols(Allocator), UsedNames(Allocator),
   42|  20.9k|      CurrentDwarfLoc(0, 0, 0, DWARF2_FLAG_IS_STMT, 0, 0), DwarfLocSeen(false),
  ------------------
  |  |   68|  20.9k|#define DWARF2_FLAG_IS_STMT (1 << 0)
  ------------------
   43|  20.9k|      GenDwarfForAssembly(false), GenDwarfFileNumber(0), DwarfVersion(4),
   44|  20.9k|      AllowTemporaryLabels(true), DwarfCompileUnitID(0),
   45|  20.9k|      AutoReset(DoAutoReset), HadError(false), BaseAddress(BaseAddr) {
   46|       |
   47|  20.9k|  std::error_code EC = llvm_ks::sys::fs::current_path(CompilationDir);
   48|  20.9k|  if (EC)
  ------------------
  |  Branch (48:7): [True: 0, False: 20.9k]
  ------------------
   49|      0|    CompilationDir.clear();
   50|       |
   51|  20.9k|  SecureLogFile = getenv("AS_SECURE_LOG_FILE");
   52|  20.9k|  SecureLog = nullptr;
   53|  20.9k|  SecureLogUsed = false;
   54|       |
   55|  20.9k|  if (SrcMgr && SrcMgr->getNumBuffers())
  ------------------
  |  Branch (55:7): [True: 20.9k, False: 0]
  |  Branch (55:17): [True: 0, False: 20.9k]
  ------------------
   56|      0|    MainFileName =
   57|      0|        SrcMgr->getMemoryBuffer(SrcMgr->getMainFileID())->getBufferIdentifier();
   58|  20.9k|}
_ZN7llvm_ks9MCContextD2Ev:
   60|  20.9k|MCContext::~MCContext() {
   61|  20.9k|  if (AutoReset)
  ------------------
  |  Branch (61:7): [True: 20.9k, False: 0]
  ------------------
   62|  20.9k|    reset();
   63|       |
   64|       |  // NOTE: The symbols are all allocated out of a bump pointer allocator,
   65|       |  // we don't need to free them here.
   66|  20.9k|}
_ZN7llvm_ks9MCContext5resetEv:
   72|  20.9k|void MCContext::reset() {
   73|       |  // Call the destructors so the fragments are freed
   74|  20.9k|  COFFAllocator.DestroyAll();
   75|  20.9k|  ELFAllocator.DestroyAll();
   76|  20.9k|  MachOAllocator.DestroyAll();
   77|       |
   78|  20.9k|  MCSubtargetAllocator.DestroyAll();
   79|  20.9k|  UsedNames.clear();
   80|  20.9k|  Symbols.clear();
   81|  20.9k|  SectionSymbols.clear();
   82|  20.9k|  Allocator.Reset();
   83|  20.9k|  Instances.clear();
   84|  20.9k|  CompilationDir.clear();
   85|  20.9k|  MainFileName.clear();
   86|  20.9k|  MCDwarfLineTablesCUMap.clear();
   87|  20.9k|  SectionsForRanges.clear();
   88|  20.9k|  MCGenDwarfLabelEntries.clear();
   89|  20.9k|  DwarfDebugFlags = StringRef();
   90|  20.9k|  DwarfCompileUnitID = 0;
   91|  20.9k|  CurrentDwarfLoc = MCDwarfLoc(0, 0, 0, DWARF2_FLAG_IS_STMT, 0, 0);
  ------------------
  |  |   68|  20.9k|#define DWARF2_FLAG_IS_STMT (1 << 0)
  ------------------
   92|       |
   93|  20.9k|  MachOUniquingMap.clear();
   94|  20.9k|  ELFUniquingMap.clear();
   95|  20.9k|  COFFUniquingMap.clear();
   96|       |
   97|  20.9k|  NextID.clear();
   98|  20.9k|  AllowTemporaryLabels = true;
   99|  20.9k|  DwarfLocSeen = false;
  100|  20.9k|  GenDwarfForAssembly = false;
  101|  20.9k|  GenDwarfFileNumber = 0;
  102|       |
  103|  20.9k|  HadError = false;
  104|  20.9k|}
_ZN7llvm_ks9MCContext17getOrCreateSymbolERKNS_5TwineE:
  110|   266k|MCSymbol *MCContext::getOrCreateSymbol(const Twine &Name) {
  111|   266k|  SmallString<128> NameSV;
  112|   266k|  StringRef NameRef = Name.toStringRef(NameSV);
  113|       |
  114|   266k|  assert(!NameRef.empty() && "Normal symbols cannot be unnamed!");
  ------------------
  |  Branch (114:3): [True: 266k, False: 0]
  |  Branch (114:3): [True: 266k, Folded]
  |  Branch (114:3): [True: 266k, False: 0]
  ------------------
  115|       |
  116|   266k|  MCSymbol *&Sym = Symbols[NameRef];
  117|   266k|  if (!Sym)
  ------------------
  |  Branch (117:7): [True: 15.8k, False: 250k]
  ------------------
  118|  15.8k|    Sym = createSymbol(NameRef, false, false);
  119|       |
  120|   266k|  return Sym;
  121|   266k|}
_ZN7llvm_ks9MCContext24getOrCreateSectionSymbolERKNS_12MCSectionELFE:
  123|  21.3k|MCSymbolELF *MCContext::getOrCreateSectionSymbol(const MCSectionELF &Section) {
  124|  21.3k|  MCSymbolELF *&Sym = SectionSymbols[&Section];
  125|  21.3k|  if (Sym)
  ------------------
  |  Branch (125:7): [True: 0, False: 21.3k]
  ------------------
  126|      0|    return Sym;
  127|       |
  128|  21.3k|  StringRef Name = Section.getSectionName();
  129|       |
  130|  21.3k|  MCSymbol *&OldSym = Symbols[Name];
  131|  21.3k|  if (OldSym && OldSym->isUndefined()) {
  ------------------
  |  Branch (131:7): [True: 168, False: 21.2k]
  |  Branch (131:17): [True: 1, False: 167]
  ------------------
  132|      1|    Sym = cast<MCSymbolELF>(OldSym);
  133|      1|    return Sym;
  134|      1|  }
  135|       |
  136|  21.3k|  auto NameIter = UsedNames.insert(std::make_pair(Name, true)).first;
  137|  21.3k|  Sym = new (&*NameIter, *this) MCSymbolELF(&*NameIter, /*isTemporary*/ false);
  138|       |
  139|  21.3k|  if (!OldSym)
  ------------------
  |  Branch (139:7): [True: 21.2k, False: 167]
  ------------------
  140|  21.2k|    OldSym = Sym;
  141|       |
  142|  21.3k|  return Sym;
  143|  21.3k|}
_ZN7llvm_ks9MCContext16createSymbolImplEPKNS_14StringMapEntryIbEEb:
  162|   343k|                                      bool IsTemporary) {
  163|   343k|  if (MOFI) {
  ------------------
  |  Branch (163:7): [True: 343k, False: 0]
  ------------------
  164|   343k|    switch (MOFI->getObjectFileType()) {
  ------------------
  |  Branch (164:13): [True: 343k, False: 0]
  ------------------
  165|      0|    case MCObjectFileInfo::IsCOFF:
  ------------------
  |  Branch (165:5): [True: 0, False: 343k]
  ------------------
  166|      0|      return new (Name, *this) MCSymbolCOFF(Name, IsTemporary);
  167|   343k|    case MCObjectFileInfo::IsELF:
  ------------------
  |  Branch (167:5): [True: 343k, False: 0]
  ------------------
  168|   343k|      return new (Name, *this) MCSymbolELF(Name, IsTemporary);
  169|      0|    case MCObjectFileInfo::IsMachO:
  ------------------
  |  Branch (169:5): [True: 0, False: 343k]
  ------------------
  170|      0|      return new (Name, *this) MCSymbolMachO(Name, IsTemporary);
  171|   343k|    }
  172|   343k|  }
  173|      0|  return new (Name, *this) MCSymbol(MCSymbol::SymbolKindUnset, Name,
  174|      0|                                    IsTemporary);
  175|   343k|}
_ZN7llvm_ks9MCContext12createSymbolENS_9StringRefEbb:
  178|   343k|                                  bool CanBeUnnamed) {
  179|   343k|  if (CanBeUnnamed && !UseNamesOnTempLabels)
  ------------------
  |  Branch (179:7): [True: 328k, False: 15.8k]
  |  Branch (179:23): [True: 0, False: 328k]
  ------------------
  180|      0|    return createSymbolImpl(nullptr, true);
  181|       |
  182|       |  // Determine whether this is an user writter assembler temporary or normal
  183|       |  // label, if used.
  184|   343k|  bool IsTemporary = CanBeUnnamed;
  185|   343k|  if (AllowTemporaryLabels && !IsTemporary)
  ------------------
  |  Branch (185:7): [True: 343k, False: 0]
  |  Branch (185:31): [True: 15.8k, False: 328k]
  ------------------
  186|  15.8k|    IsTemporary = Name.startswith(MAI->getPrivateGlobalPrefix());
  187|       |
  188|   343k|  SmallString<128> NewName = Name;
  189|   343k|  bool AddSuffix = AlwaysAddSuffix;
  190|   343k|  unsigned &NextUniqueID = NextID[Name];
  191|   343k|  for (;;) {
  192|   343k|    if (AddSuffix) {
  ------------------
  |  Branch (192:9): [True: 118k, False: 225k]
  ------------------
  193|   118k|      NewName.resize(Name.size());
  194|   118k|      raw_svector_ostream(NewName) << NextUniqueID++;
  195|   118k|    }
  196|   343k|    auto NameEntry = UsedNames.insert(std::make_pair(NewName, true));
  197|   343k|    if (NameEntry.second) {
  ------------------
  |  Branch (197:9): [True: 343k, False: 0]
  ------------------
  198|       |      // Ok, we found a name. Have the MCSymbol object itself refer to the copy
  199|       |      // of the string that is embedded in the UsedNames entry.
  200|   343k|      return createSymbolImpl(&*NameEntry.first, IsTemporary);
  201|   343k|    }
  202|   343k|    assert(IsTemporary && "Cannot rename non-temporary symbols");
  ------------------
  |  Branch (202:5): [True: 0, False: 0]
  |  Branch (202:5): [True: 0, Folded]
  |  Branch (202:5): [True: 0, False: 0]
  ------------------
  203|      0|    AddSuffix = true;
  204|      0|  }
  205|      0|  llvm_unreachable("Infinite loop");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  206|   343k|}
_ZN7llvm_ks9MCContext16createTempSymbolERKNS_5TwineEbb:
  209|   328k|                                      bool CanBeUnnamed) {
  210|   328k|  SmallString<128> NameSV;
  211|   328k|  raw_svector_ostream(NameSV) << MAI->getPrivateGlobalPrefix() << Name;
  212|   328k|  return createSymbol(NameSV, AlwaysAddSuffix, CanBeUnnamed);
  213|   328k|}
_ZN7llvm_ks9MCContext16createTempSymbolEb:
  221|   118k|MCSymbol *MCContext::createTempSymbol(bool CanBeUnnamed) {
  222|   118k|  return createTempSymbol("tmp", true, CanBeUnnamed);
  223|   118k|}
_ZN7llvm_ks9MCContext12NextInstanceEjRb:
  226|     63|{
  227|     63|  if (LocalLabelVal >= Instances.size()) {
  ------------------
  |  Branch (227:7): [True: 63, False: 0]
  ------------------
  228|     63|      valid = false;
  229|     63|      return 0;
  230|     63|  }
  231|      0|  MCLabel *&Label = Instances[LocalLabelVal];
  232|      0|  if (!Label)
  ------------------
  |  Branch (232:7): [True: 0, False: 0]
  ------------------
  233|      0|    Label = new (*this) MCLabel(0);
  234|      0|  return Label->incInstance();
  235|     63|}
_ZN7llvm_ks9MCContext11GetInstanceEjRb:
  238|    652|{
  239|    652|  if (LocalLabelVal >= Instances.size()) {
  ------------------
  |  Branch (239:7): [True: 652, False: 0]
  ------------------
  240|    652|      valid = false;
  241|    652|      return 0;
  242|    652|  }
  243|      0|  MCLabel *&Label = Instances[LocalLabelVal];
  244|      0|  if (!Label)
  ------------------
  |  Branch (244:7): [True: 0, False: 0]
  ------------------
  245|      0|    Label = new (*this) MCLabel(0);
  246|      0|  return Label->getInstance();
  247|    652|}
_ZN7llvm_ks9MCContext28createDirectionalLocalSymbolEjRb:
  258|     63|{
  259|     63|  valid = true;
  260|     63|  unsigned Instance = NextInstance(LocalLabelVal, valid);
  261|     63|  if (!valid)
  ------------------
  |  Branch (261:7): [True: 63, False: 0]
  ------------------
  262|     63|      return nullptr;
  263|      0|  return getOrCreateDirectionalLocalSymbol(LocalLabelVal, Instance);
  264|     63|}
_ZN7llvm_ks9MCContext25getDirectionalLocalSymbolEjbRb:
  268|    652|{
  269|    652|  valid = true;
  270|    652|  unsigned Instance = GetInstance(LocalLabelVal, valid);
  271|    652|  if (!valid)
  ------------------
  |  Branch (271:7): [True: 652, False: 0]
  ------------------
  272|    652|      return nullptr;
  273|      0|  if (!Before)
  ------------------
  |  Branch (273:7): [True: 0, False: 0]
  ------------------
  274|      0|    ++Instance;
  275|      0|  return getOrCreateDirectionalLocalSymbol(LocalLabelVal, Instance);
  276|    652|}
_ZNK7llvm_ks9MCContext12lookupSymbolERKNS_5TwineE:
  278|   122k|MCSymbol *MCContext::lookupSymbol(const Twine &Name) const {
  279|   122k|  SmallString<128> NameSV;
  280|   122k|  StringRef NameRef = Name.toStringRef(NameSV);
  281|   122k|  return Symbols.lookup(NameRef);
  282|   122k|}
_ZN7llvm_ks9MCContext15getMachOSectionENS_9StringRefES1_jjNS_11SectionKindEPKc:
  291|  2.72k|                                           const char *BeginSymName) {
  292|       |
  293|       |  // We unique sections by their segment/section pair.  The returned section
  294|       |  // may not have the same flags as the requested section, if so this should be
  295|       |  // diagnosed by the client as an error.
  296|       |
  297|       |  // Form the name to look up.
  298|  2.72k|  SmallString<64> Name;
  299|  2.72k|  Name += Segment;
  300|  2.72k|  Name.push_back(',');
  301|  2.72k|  Name += Section;
  302|       |
  303|       |  // Do the lookup, if we have a hit, return it.
  304|  2.72k|  MCSectionMachO *&Entry = MachOUniquingMap[Name];
  305|  2.72k|  if (Entry)
  ------------------
  |  Branch (305:7): [True: 2.35k, False: 373]
  ------------------
  306|  2.35k|    return Entry;
  307|       |
  308|    373|  MCSymbol *Begin = nullptr;
  309|    373|  if (BeginSymName)
  ------------------
  |  Branch (309:7): [True: 0, False: 373]
  ------------------
  310|      0|    Begin = createTempSymbol(BeginSymName, false);
  311|       |
  312|       |  // Otherwise, return a new section.
  313|    373|  return Entry = new (MachOAllocator.Allocate()) MCSectionMachO(
  314|    373|             Segment, Section, TypeAndAttributes, Reserved2, Kind, Begin);
  315|  2.72k|}
_ZN7llvm_ks9MCContext19createELFRelSectionENS_9StringRefEjjjPKNS_11MCSymbolELFEPKNS_12MCSectionELFE:
  336|    202|                                             const MCSectionELF *Associated) {
  337|    202|  StringMap<bool>::iterator I;
  338|    202|  bool Inserted;
  339|    202|  std::tie(I, Inserted) = ELFRelSecNames.insert(std::make_pair(Name, true));
  340|       |
  341|    202|  return new (ELFAllocator.Allocate())
  342|    202|      MCSectionELF(I->getKey(), Type, Flags, SectionKind::getReadOnly(),
  343|    202|                   EntrySize, Group, true, nullptr, Associated);
  344|    202|}
_ZN7llvm_ks9MCContext13getELFSectionENS_9StringRefEjjjS1_jPKc:
  349|   910k|                                       const char *BeginSymName) {
  350|   910k|  MCSymbolELF *GroupSym = nullptr;
  351|   910k|  if (!Group.empty())
  ------------------
  |  Branch (351:7): [True: 0, False: 910k]
  ------------------
  352|      0|    GroupSym = cast<MCSymbolELF>(getOrCreateSymbol(Group));
  353|       |
  354|   910k|  return getELFSection(Section, Type, Flags, EntrySize, GroupSym, UniqueID,
  355|   910k|                       BeginSymName, nullptr);
  356|   910k|}
_ZN7llvm_ks9MCContext13getELFSectionENS_9StringRefEjjjPKNS_11MCSymbolELFEjPKcPKNS_12MCSectionELFE:
  363|   910k|                                       const MCSectionELF *Associated) {
  364|   910k|  StringRef Group = "";
  365|   910k|  if (GroupSym)
  ------------------
  |  Branch (365:7): [True: 0, False: 910k]
  ------------------
  366|      0|    Group = GroupSym->getName();
  367|       |  // Do the lookup, if we have a hit, return it.
  368|   910k|  auto IterBool = ELFUniquingMap.insert(
  369|   910k|      std::make_pair(ELFSectionKey{Section, Group, UniqueID}, nullptr));
  370|   910k|  auto &Entry = *IterBool.first;
  371|   910k|  if (!IterBool.second)
  ------------------
  |  Branch (371:7): [True: 45, False: 909k]
  ------------------
  372|     45|    return Entry.second;
  373|       |
  374|   909k|  StringRef CachedName = Entry.first.SectionName;
  375|       |
  376|   909k|  SectionKind Kind;
  377|   909k|  if (Flags & ELF::SHF_EXECINSTR)
  ------------------
  |  Branch (377:7): [True: 20.9k, False: 889k]
  ------------------
  378|  20.9k|    Kind = SectionKind::getText();
  379|   889k|  else
  380|   889k|    Kind = SectionKind::getReadOnly();
  381|       |
  382|   909k|  MCSymbol *Begin = nullptr;
  383|   909k|  if (BeginSymName)
  ------------------
  |  Branch (383:7): [True: 209k, False: 700k]
  ------------------
  384|   209k|    Begin = createTempSymbol(BeginSymName, false);
  385|       |
  386|   909k|  MCSectionELF *Result = new (ELFAllocator.Allocate())
  387|   909k|      MCSectionELF(CachedName, Type, Flags, Kind, EntrySize, GroupSym, UniqueID,
  388|   909k|                   Begin, Associated);
  389|   909k|  Entry.second = Result;
  390|   909k|  return Result;
  391|   910k|}
_ZN7llvm_ks9MCContext16getSubtargetCopyERKNS_15MCSubtargetInfoE:
  460|  27.6k|MCSubtargetInfo &MCContext::getSubtargetCopy(const MCSubtargetInfo &STI) {
  461|  27.6k|  return *new (MCSubtargetAllocator.Allocate()) MCSubtargetInfo(STI);
  462|  27.6k|}
_ZN7llvm_ks9MCContext12getDwarfFileENS_9StringRefES1_jj:
  473|     49|                                 unsigned FileNumber, unsigned CUID) {
  474|     49|  return 0;
  475|     49|}
_ZN7llvm_ks9MCContext22isValidDwarfFileNumberEjj:
  479|     60|bool MCContext::isValidDwarfFileNumber(unsigned FileNumber, unsigned CUID) {
  480|     60|  const SmallVectorImpl<MCDwarfFile> &MCDwarfFiles = getMCDwarfFiles(CUID);
  481|     60|  if (FileNumber == 0 || FileNumber >= MCDwarfFiles.size())
  ------------------
  |  Branch (481:7): [True: 1, False: 59]
  |  Branch (481:26): [True: 59, False: 0]
  ------------------
  482|     60|    return false;
  483|       |
  484|      0|  return !MCDwarfFiles[FileNumber].Name.empty();
  485|     60|}
_ZN7llvm_ks9MCContext11reportErrorENS_5SMLocERKNS_5TwineE:
  506|  8.67k|void MCContext::reportError(SMLoc Loc, const Twine &Msg) {
  507|  8.67k|  HadError = true;
  508|       |
  509|       |  // If we have a source manager use it. Otherwise just use the generic
  510|       |  // report_fatal_error().
  511|  8.67k|  if (!SrcMgr)
  ------------------
  |  Branch (511:7): [True: 0, False: 8.67k]
  ------------------
  512|      0|    report_fatal_error(Msg, false);
  513|       |
  514|       |  // Use the source manager to print the message.
  515|  8.67k|  SrcMgr->PrintMessage(Loc, SourceMgr::DK_Error, Msg);
  516|  8.67k|}

_ZN7llvm_ks23MCELFObjectTargetWriterC2Ebhtbb:
   22|  20.9k|  : OSABI(OSABI_), EMachine(EMachine_),
   23|  20.9k|    HasRelocationAddend(HasRelocationAddend_), Is64Bit(Is64Bit_),
   24|  20.9k|    IsN64(IsN64_){
   25|  20.9k|}

_ZNK7llvm_ks13MCELFStreamer14isBundleLockedEv:
   43|   160k|bool MCELFStreamer::isBundleLocked() const {
   44|   160k|  return getCurrentSectionOnly()->isBundleLocked();
   45|   160k|}
_ZN7llvm_ks13MCELFStreamerD2Ev:
   47|  20.9k|MCELFStreamer::~MCELFStreamer() {
   48|  20.9k|}
_ZN7llvm_ks13MCELFStreamer12InitSectionsEb:
   91|  20.9k|void MCELFStreamer::InitSections(bool NoExecStack) {
   92|  20.9k|  MCContext &Ctx = getContext();
   93|  20.9k|  SwitchSection(Ctx.getObjectFileInfo()->getTextSection());
   94|       |
   95|  20.9k|  if (NoExecStack)
  ------------------
  |  Branch (95:7): [True: 0, False: 20.9k]
  ------------------
   96|      0|    SwitchSection(Ctx.getAsmInfo()->getNonexecutableStackSection(Ctx));
   97|  20.9k|}
_ZN7llvm_ks13MCELFStreamer9EmitLabelEPNS_8MCSymbolE:
   99|   139k|void MCELFStreamer::EmitLabel(MCSymbol *S) {
  100|   139k|  auto *Symbol = cast<MCSymbolELF>(S);
  101|   139k|  assert(Symbol->isUndefined() && "Cannot define a symbol twice!");
  ------------------
  |  Branch (101:3): [True: 139k, False: 0]
  |  Branch (101:3): [True: 139k, Folded]
  |  Branch (101:3): [True: 139k, False: 0]
  ------------------
  102|       |
  103|   139k|  MCObjectStreamer::EmitLabel(Symbol);
  104|       |
  105|   139k|  const MCSectionELF &Section =
  106|   139k|      static_cast<const MCSectionELF &>(*getCurrentSectionOnly());
  107|   139k|  if (Section.getFlags() & ELF::SHF_TLS)
  ------------------
  |  Branch (107:7): [True: 439, False: 139k]
  ------------------
  108|    439|    Symbol->setType(ELF::STT_TLS);
  109|   139k|}
_ZN7llvm_ks13MCELFStreamer17EmitAssemblerFlagENS_15MCAssemblerFlagE:
  111|  2.31k|void MCELFStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) {
  112|       |  // Let the target do whatever target specific stuff it needs to do.
  113|  2.31k|  getAssembler().getBackend().handleAssemblerFlag(Flag);
  114|       |  // Do any generic stuff we need to do.
  115|  2.31k|  switch (Flag) {
  ------------------
  |  Branch (115:11): [True: 2.31k, False: 0]
  ------------------
  116|      0|  case MCAF_SyntaxUnified: return; // no-op here.
  ------------------
  |  Branch (116:3): [True: 0, False: 2.31k]
  ------------------
  117|  1.87k|  case MCAF_Code16: return; // Change parsing mode; no-op here.
  ------------------
  |  Branch (117:3): [True: 1.87k, False: 439]
  ------------------
  118|    439|  case MCAF_Code32: return; // Change parsing mode; no-op here.
  ------------------
  |  Branch (118:3): [True: 439, False: 1.87k]
  ------------------
  119|      0|  case MCAF_Code64: return; // Change parsing mode; no-op here.
  ------------------
  |  Branch (119:3): [True: 0, False: 2.31k]
  ------------------
  120|      0|  case MCAF_SubsectionsViaSymbols:
  ------------------
  |  Branch (120:3): [True: 0, False: 2.31k]
  ------------------
  121|      0|    getAssembler().setSubsectionsViaSymbols(true);
  122|      0|    return;
  123|  2.31k|  }
  124|       |
  125|      0|  llvm_unreachable("invalid assembler flag!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  126|  2.31k|}
_ZN7llvm_ks13MCELFStreamer13ChangeSectionEPNS_9MCSectionEPKNS_6MCExprE:
  138|  21.8k|                                  const MCExpr *Subsection) {
  139|  21.8k|  MCSection *CurSection = getCurrentSectionOnly();
  140|  21.8k|  if (CurSection && isBundleLocked())
  ------------------
  |  Branch (140:7): [True: 870, False: 20.9k]
  |  Branch (140:21): [True: 0, False: 870]
  ------------------
  141|      0|    report_fatal_error("Unterminated .bundle_lock when changing a section");
  142|       |
  143|  21.8k|  MCAssembler &Asm = getAssembler();
  144|       |  // Ensure the previous section gets aligned if necessary.
  145|  21.8k|  setSectionAlignmentForBundling(Asm, CurSection);
  146|  21.8k|  auto *SectionELF = static_cast<const MCSectionELF *>(Section);
  147|  21.8k|  const MCSymbol *Grp = SectionELF->getGroup();
  148|  21.8k|  if (Grp)
  ------------------
  |  Branch (148:7): [True: 0, False: 21.8k]
  ------------------
  149|      0|    Asm.registerSymbol(*Grp);
  150|       |
  151|  21.8k|  this->MCObjectStreamer::ChangeSection(Section, Subsection);
  152|  21.8k|  MCContext &Ctx = getContext();
  153|  21.8k|  auto *Begin = cast_or_null<MCSymbolELF>(Section->getBeginSymbol());
  154|  21.8k|  if (!Begin) {
  ------------------
  |  Branch (154:7): [True: 21.3k, False: 468]
  ------------------
  155|  21.3k|    Begin = Ctx.getOrCreateSectionSymbol(*SectionELF);
  156|  21.3k|    Section->setBeginSymbol(Begin);
  157|  21.3k|  }
  158|  21.8k|  if (Begin->isUndefined()) {
  ------------------
  |  Branch (158:7): [True: 21.3k, False: 468]
  ------------------
  159|  21.3k|    Asm.registerSymbol(*Begin);
  160|  21.3k|    Begin->setType(ELF::STT_SECTION);
  161|  21.3k|  }
  162|  21.8k|}
_ZN7llvm_ks13MCELFStreamer19EmitSymbolAttributeEPNS_8MCSymbolENS_12MCSymbolAttrE:
  193|    269|bool MCELFStreamer::EmitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) {
  194|    269|  auto *Symbol = cast<MCSymbolELF>(S);
  195|       |  // Indirect symbols are handled differently, to match how 'as' handles
  196|       |  // them. This makes writing matching .o files easier.
  197|    269|  if (Attribute == MCSA_IndirectSymbol) {
  ------------------
  |  Branch (197:7): [True: 0, False: 269]
  ------------------
  198|       |    // Note that we intentionally cannot use the symbol data here; this is
  199|       |    // important for matching the string table that 'as' generates.
  200|      0|    IndirectSymbolData ISD;
  201|      0|    ISD.Symbol = Symbol;
  202|      0|    ISD.Section = getCurrentSectionOnly();
  203|      0|    getAssembler().getIndirectSymbols().push_back(ISD);
  204|      0|    return true;
  205|      0|  }
  206|       |
  207|       |  // Adding a symbol attribute always introduces the symbol, note that an
  208|       |  // important side effect of calling registerSymbol here is to register
  209|       |  // the symbol with the assembler.
  210|    269|  getAssembler().registerSymbol(*Symbol);
  211|       |
  212|       |  // The implementation of symbol attributes is designed to match 'as', but it
  213|       |  // leaves much to desired. It doesn't really make sense to arbitrarily add and
  214|       |  // remove flags, but 'as' allows this (in particular, see .desc).
  215|       |  //
  216|       |  // In the future it might be worth trying to make these operations more well
  217|       |  // defined.
  218|    269|  switch (Attribute) {
  ------------------
  |  Branch (218:11): [True: 269, False: 0]
  ------------------
  219|      0|  case MCSA_LazyReference:
  ------------------
  |  Branch (219:3): [True: 0, False: 269]
  ------------------
  220|      0|  case MCSA_Reference:
  ------------------
  |  Branch (220:3): [True: 0, False: 269]
  ------------------
  221|      0|  case MCSA_SymbolResolver:
  ------------------
  |  Branch (221:3): [True: 0, False: 269]
  ------------------
  222|      0|  case MCSA_PrivateExtern:
  ------------------
  |  Branch (222:3): [True: 0, False: 269]
  ------------------
  223|      0|  case MCSA_WeakDefinition:
  ------------------
  |  Branch (223:3): [True: 0, False: 269]
  ------------------
  224|      0|  case MCSA_WeakDefAutoPrivate:
  ------------------
  |  Branch (224:3): [True: 0, False: 269]
  ------------------
  225|      0|  case MCSA_Invalid:
  ------------------
  |  Branch (225:3): [True: 0, False: 269]
  ------------------
  226|      0|  case MCSA_IndirectSymbol:
  ------------------
  |  Branch (226:3): [True: 0, False: 269]
  ------------------
  227|      0|    return false;
  228|       |
  229|    116|  case MCSA_NoDeadStrip:
  ------------------
  |  Branch (229:3): [True: 116, False: 153]
  ------------------
  230|       |    // Ignore for now.
  231|    116|    break;
  232|       |
  233|      0|  case MCSA_ELF_TypeGnuUniqueObject:
  ------------------
  |  Branch (233:3): [True: 0, False: 269]
  ------------------
  234|      0|    Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_OBJECT));
  235|      0|    Symbol->setBinding(ELF::STB_GNU_UNIQUE);
  236|      0|    Symbol->setExternal(true);
  237|      0|    break;
  238|       |
  239|    153|  case MCSA_Global:
  ------------------
  |  Branch (239:3): [True: 153, False: 116]
  ------------------
  240|    153|    Symbol->setBinding(ELF::STB_GLOBAL);
  241|    153|    Symbol->setExternal(true);
  242|    153|    break;
  243|       |
  244|      0|  case MCSA_WeakReference:
  ------------------
  |  Branch (244:3): [True: 0, False: 269]
  ------------------
  245|      0|  case MCSA_Weak:
  ------------------
  |  Branch (245:3): [True: 0, False: 269]
  ------------------
  246|      0|    Symbol->setBinding(ELF::STB_WEAK);
  247|      0|    Symbol->setExternal(true);
  248|      0|    break;
  249|       |
  250|      0|  case MCSA_Local:
  ------------------
  |  Branch (250:3): [True: 0, False: 269]
  ------------------
  251|      0|    Symbol->setBinding(ELF::STB_LOCAL);
  252|      0|    Symbol->setExternal(false);
  253|      0|    break;
  254|       |
  255|      0|  case MCSA_ELF_TypeFunction:
  ------------------
  |  Branch (255:3): [True: 0, False: 269]
  ------------------
  256|      0|    Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_FUNC));
  257|      0|    break;
  258|       |
  259|      0|  case MCSA_ELF_TypeIndFunction:
  ------------------
  |  Branch (259:3): [True: 0, False: 269]
  ------------------
  260|      0|    Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_GNU_IFUNC));
  261|      0|    break;
  262|       |
  263|      0|  case MCSA_ELF_TypeObject:
  ------------------
  |  Branch (263:3): [True: 0, False: 269]
  ------------------
  264|      0|    Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_OBJECT));
  265|      0|    break;
  266|       |
  267|      0|  case MCSA_ELF_TypeTLS:
  ------------------
  |  Branch (267:3): [True: 0, False: 269]
  ------------------
  268|      0|    Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_TLS));
  269|      0|    break;
  270|       |
  271|      0|  case MCSA_ELF_TypeCommon:
  ------------------
  |  Branch (271:3): [True: 0, False: 269]
  ------------------
  272|       |    // TODO: Emit these as a common symbol.
  273|      0|    Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_OBJECT));
  274|      0|    break;
  275|       |
  276|      0|  case MCSA_ELF_TypeNoType:
  ------------------
  |  Branch (276:3): [True: 0, False: 269]
  ------------------
  277|      0|    Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_NOTYPE));
  278|      0|    break;
  279|       |
  280|      0|  case MCSA_Protected:
  ------------------
  |  Branch (280:3): [True: 0, False: 269]
  ------------------
  281|      0|    Symbol->setVisibility(ELF::STV_PROTECTED);
  282|      0|    break;
  283|       |
  284|      0|  case MCSA_Hidden:
  ------------------
  |  Branch (284:3): [True: 0, False: 269]
  ------------------
  285|      0|    Symbol->setVisibility(ELF::STV_HIDDEN);
  286|      0|    break;
  287|       |
  288|      0|  case MCSA_Internal:
  ------------------
  |  Branch (288:3): [True: 0, False: 269]
  ------------------
  289|      0|    Symbol->setVisibility(ELF::STV_INTERNAL);
  290|      0|    break;
  291|    269|  }
  292|       |
  293|    269|  return true;
  294|    269|}
_ZN7llvm_ks13MCELFStreamer16EmitCommonSymbolEPNS_8MCSymbolEmj:
  297|    771|                                     unsigned ByteAlignment) {
  298|    771|  auto *Symbol = cast<MCSymbolELF>(S);
  299|    771|  getAssembler().registerSymbol(*Symbol);
  300|       |
  301|    771|  if (!Symbol->isBindingSet()) {
  ------------------
  |  Branch (301:7): [True: 57, False: 714]
  ------------------
  302|     57|    Symbol->setBinding(ELF::STB_GLOBAL);
  303|     57|    Symbol->setExternal(true);
  304|     57|  }
  305|       |
  306|    771|  Symbol->setType(ELF::STT_OBJECT);
  307|       |
  308|    771|  if (Symbol->getBinding() == ELF::STB_LOCAL) {
  ------------------
  |  Branch (308:7): [True: 45, False: 726]
  ------------------
  309|     45|    MCSection &Section = *getAssembler().getContext().getELFSection(
  310|     45|        ".bss", ELF::SHT_NOBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC);
  311|     45|    MCSectionSubPair P = getCurrentSection();
  312|     45|    SwitchSection(&Section);
  313|       |
  314|     45|    EmitValueToAlignment(ByteAlignment, 0, 1, 0);
  315|     45|    EmitLabel(Symbol);
  316|     45|    EmitZeros(Size);
  317|       |
  318|       |    // Update the maximum alignment of the section if necessary.
  319|     45|    if (ByteAlignment > Section.getAlignment())
  ------------------
  |  Branch (319:9): [True: 0, False: 45]
  ------------------
  320|      0|      Section.setAlignment(ByteAlignment);
  321|       |
  322|     45|    SwitchSection(P.first, P.second);
  323|    726|  } else {
  324|    726|    if(Symbol->declareCommon(Size, ByteAlignment))
  ------------------
  |  Branch (324:8): [True: 0, False: 726]
  ------------------
  325|      0|      report_fatal_error("Symbol: " + Symbol->getName() +
  326|      0|                         " redeclared as different type");
  327|    726|  }
  328|       |
  329|    771|  cast<MCSymbolELF>(Symbol)
  330|    771|      ->setSize(MCConstantExpr::create(Size, getContext()));
  331|    771|}
_ZN7llvm_ks13MCELFStreamer21EmitLocalCommonSymbolEPNS_8MCSymbolEmj:
  338|     45|                                          unsigned ByteAlignment) {
  339|     45|  auto *Symbol = cast<MCSymbolELF>(S);
  340|       |  // FIXME: Should this be caught and done earlier?
  341|     45|  getAssembler().registerSymbol(*Symbol);
  342|     45|  Symbol->setBinding(ELF::STB_LOCAL);
  343|     45|  Symbol->setExternal(false);
  344|     45|  EmitCommonSymbol(Symbol, Size, ByteAlignment);
  345|     45|}
_ZN7llvm_ks13MCELFStreamer13EmitValueImplEPKNS_6MCExprEjNS_5SMLocE:
  348|   148k|                                  SMLoc Loc) {
  349|   148k|  if (isBundleLocked())
  ------------------
  |  Branch (349:7): [True: 0, False: 148k]
  ------------------
  350|      0|    report_fatal_error("Emitting values inside a locked bundle is forbidden");
  351|   148k|  fixSymbolsInTLSFixups(Value);
  352|   148k|  MCObjectStreamer::EmitValueImpl(Value, Size, Loc);
  353|   148k|}
_ZN7llvm_ks13MCELFStreamer20EmitValueToAlignmentEjljj:
  358|  10.6k|                                         unsigned MaxBytesToEmit) {
  359|  10.6k|  if (isBundleLocked())
  ------------------
  |  Branch (359:7): [True: 0, False: 10.6k]
  ------------------
  360|      0|    report_fatal_error("Emitting values inside a locked bundle is forbidden");
  361|  10.6k|  MCObjectStreamer::EmitValueToAlignment(ByteAlignment, Value,
  362|  10.6k|                                         ValueSize, MaxBytesToEmit);
  363|  10.6k|}
_ZN7llvm_ks13MCELFStreamer17EmitFileDirectiveENS_9StringRefE:
  368|  1.57k|void MCELFStreamer::EmitFileDirective(StringRef Filename) {
  369|  1.57k|  getAssembler().addFileName(Filename);
  370|  1.57k|}
_ZN7llvm_ks13MCELFStreamer21fixSymbolsInTLSFixupsEPKNS_6MCExprE:
  387|   468k|void MCELFStreamer::fixSymbolsInTLSFixups(const MCExpr *expr) {
  388|   468k|  switch (expr->getKind()) {
  ------------------
  |  Branch (388:11): [True: 468k, False: 0]
  ------------------
  389|      0|  case MCExpr::Target:
  ------------------
  |  Branch (389:3): [True: 0, False: 468k]
  ------------------
  390|      0|    cast<MCTargetExpr>(expr)->fixELFSymbolsInTLSFixups(getAssembler());
  391|      0|    break;
  392|  84.3k|  case MCExpr::Constant:
  ------------------
  |  Branch (392:3): [True: 84.3k, False: 384k]
  ------------------
  393|  84.3k|    break;
  394|       |
  395|   122k|  case MCExpr::Binary: {
  ------------------
  |  Branch (395:3): [True: 122k, False: 346k]
  ------------------
  396|   122k|    const MCBinaryExpr *be = cast<MCBinaryExpr>(expr);
  397|   122k|    fixSymbolsInTLSFixups(be->getLHS());
  398|   122k|    fixSymbolsInTLSFixups(be->getRHS());
  399|   122k|    break;
  400|      0|  }
  401|       |
  402|   199k|  case MCExpr::SymbolRef: {
  ------------------
  |  Branch (402:3): [True: 199k, False: 268k]
  ------------------
  403|   199k|    const MCSymbolRefExpr &symRef = *cast<MCSymbolRefExpr>(expr);
  404|   199k|    switch (symRef.getKind()) {
  405|   199k|    default:
  ------------------
  |  Branch (405:5): [True: 199k, False: 122]
  ------------------
  406|   199k|      return;
  407|   199k|    case MCSymbolRefExpr::VK_GOTTPOFF:
  ------------------
  |  Branch (407:5): [True: 0, False: 199k]
  ------------------
  408|      0|    case MCSymbolRefExpr::VK_INDNTPOFF:
  ------------------
  |  Branch (408:5): [True: 0, False: 199k]
  ------------------
  409|      6|    case MCSymbolRefExpr::VK_NTPOFF:
  ------------------
  |  Branch (409:5): [True: 6, False: 199k]
  ------------------
  410|      6|    case MCSymbolRefExpr::VK_GOTNTPOFF:
  ------------------
  |  Branch (410:5): [True: 0, False: 199k]
  ------------------
  411|     93|    case MCSymbolRefExpr::VK_TLSGD:
  ------------------
  |  Branch (411:5): [True: 87, False: 199k]
  ------------------
  412|     99|    case MCSymbolRefExpr::VK_TLSLD:
  ------------------
  |  Branch (412:5): [True: 6, False: 199k]
  ------------------
  413|     99|    case MCSymbolRefExpr::VK_TLSLDM:
  ------------------
  |  Branch (413:5): [True: 0, False: 199k]
  ------------------
  414|    105|    case MCSymbolRefExpr::VK_TPOFF:
  ------------------
  |  Branch (414:5): [True: 6, False: 199k]
  ------------------
  415|    105|    case MCSymbolRefExpr::VK_TPREL:
  ------------------
  |  Branch (415:5): [True: 0, False: 199k]
  ------------------
  416|    119|    case MCSymbolRefExpr::VK_DTPOFF:
  ------------------
  |  Branch (416:5): [True: 14, False: 199k]
  ------------------
  417|    119|    case MCSymbolRefExpr::VK_DTPREL:
  ------------------
  |  Branch (417:5): [True: 0, False: 199k]
  ------------------
  418|    119|    case MCSymbolRefExpr::VK_Mips_TLSGD:
  ------------------
  |  Branch (418:5): [True: 0, False: 199k]
  ------------------
  419|    119|    case MCSymbolRefExpr::VK_Mips_GOTTPREL:
  ------------------
  |  Branch (419:5): [True: 0, False: 199k]
  ------------------
  420|    119|    case MCSymbolRefExpr::VK_Mips_TPREL_HI:
  ------------------
  |  Branch (420:5): [True: 0, False: 199k]
  ------------------
  421|    119|    case MCSymbolRefExpr::VK_Mips_TPREL_LO:
  ------------------
  |  Branch (421:5): [True: 0, False: 199k]
  ------------------
  422|    119|    case MCSymbolRefExpr::VK_PPC_DTPMOD:
  ------------------
  |  Branch (422:5): [True: 0, False: 199k]
  ------------------
  423|    119|    case MCSymbolRefExpr::VK_PPC_TPREL_LO:
  ------------------
  |  Branch (423:5): [True: 0, False: 199k]
  ------------------
  424|    119|    case MCSymbolRefExpr::VK_PPC_TPREL_HI:
  ------------------
  |  Branch (424:5): [True: 0, False: 199k]
  ------------------
  425|    119|    case MCSymbolRefExpr::VK_PPC_TPREL_HA:
  ------------------
  |  Branch (425:5): [True: 0, False: 199k]
  ------------------
  426|    119|    case MCSymbolRefExpr::VK_PPC_TPREL_HIGHER:
  ------------------
  |  Branch (426:5): [True: 0, False: 199k]
  ------------------
  427|    119|    case MCSymbolRefExpr::VK_PPC_TPREL_HIGHERA:
  ------------------
  |  Branch (427:5): [True: 0, False: 199k]
  ------------------
  428|    119|    case MCSymbolRefExpr::VK_PPC_TPREL_HIGHEST:
  ------------------
  |  Branch (428:5): [True: 0, False: 199k]
  ------------------
  429|    119|    case MCSymbolRefExpr::VK_PPC_TPREL_HIGHESTA:
  ------------------
  |  Branch (429:5): [True: 0, False: 199k]
  ------------------
  430|    119|    case MCSymbolRefExpr::VK_PPC_DTPREL_LO:
  ------------------
  |  Branch (430:5): [True: 0, False: 199k]
  ------------------
  431|    119|    case MCSymbolRefExpr::VK_PPC_DTPREL_HI:
  ------------------
  |  Branch (431:5): [True: 0, False: 199k]
  ------------------
  432|    119|    case MCSymbolRefExpr::VK_PPC_DTPREL_HA:
  ------------------
  |  Branch (432:5): [True: 0, False: 199k]
  ------------------
  433|    119|    case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHER:
  ------------------
  |  Branch (433:5): [True: 0, False: 199k]
  ------------------
  434|    119|    case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHERA:
  ------------------
  |  Branch (434:5): [True: 0, False: 199k]
  ------------------
  435|    119|    case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHEST:
  ------------------
  |  Branch (435:5): [True: 0, False: 199k]
  ------------------
  436|    119|    case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHESTA:
  ------------------
  |  Branch (436:5): [True: 0, False: 199k]
  ------------------
  437|    119|    case MCSymbolRefExpr::VK_PPC_GOT_TPREL:
  ------------------
  |  Branch (437:5): [True: 0, False: 199k]
  ------------------
  438|    119|    case MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO:
  ------------------
  |  Branch (438:5): [True: 0, False: 199k]
  ------------------
  439|    119|    case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HI:
  ------------------
  |  Branch (439:5): [True: 0, False: 199k]
  ------------------
  440|    119|    case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HA:
  ------------------
  |  Branch (440:5): [True: 0, False: 199k]
  ------------------
  441|    119|    case MCSymbolRefExpr::VK_PPC_GOT_DTPREL:
  ------------------
  |  Branch (441:5): [True: 0, False: 199k]
  ------------------
  442|    119|    case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_LO:
  ------------------
  |  Branch (442:5): [True: 0, False: 199k]
  ------------------
  443|    119|    case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HI:
  ------------------
  |  Branch (443:5): [True: 0, False: 199k]
  ------------------
  444|    119|    case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HA:
  ------------------
  |  Branch (444:5): [True: 0, False: 199k]
  ------------------
  445|    122|    case MCSymbolRefExpr::VK_PPC_TLS:
  ------------------
  |  Branch (445:5): [True: 3, False: 199k]
  ------------------
  446|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSGD:
  ------------------
  |  Branch (446:5): [True: 0, False: 199k]
  ------------------
  447|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_LO:
  ------------------
  |  Branch (447:5): [True: 0, False: 199k]
  ------------------
  448|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI:
  ------------------
  |  Branch (448:5): [True: 0, False: 199k]
  ------------------
  449|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA:
  ------------------
  |  Branch (449:5): [True: 0, False: 199k]
  ------------------
  450|    122|    case MCSymbolRefExpr::VK_PPC_TLSGD:
  ------------------
  |  Branch (450:5): [True: 0, False: 199k]
  ------------------
  451|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSLD:
  ------------------
  |  Branch (451:5): [True: 0, False: 199k]
  ------------------
  452|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_LO:
  ------------------
  |  Branch (452:5): [True: 0, False: 199k]
  ------------------
  453|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HI:
  ------------------
  |  Branch (453:5): [True: 0, False: 199k]
  ------------------
  454|    122|    case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HA:
  ------------------
  |  Branch (454:5): [True: 0, False: 199k]
  ------------------
  455|    122|    case MCSymbolRefExpr::VK_PPC_TLSLD:
  ------------------
  |  Branch (455:5): [True: 0, False: 199k]
  ------------------
  456|    122|      break;
  457|   199k|    }
  458|    122|    getAssembler().registerSymbol(symRef.getSymbol());
  459|    122|    cast<MCSymbolELF>(symRef.getSymbol()).setType(ELF::STT_TLS);
  460|    122|    break;
  461|   199k|  }
  462|       |
  463|  61.8k|  case MCExpr::Unary:
  ------------------
  |  Branch (463:3): [True: 61.8k, False: 406k]
  ------------------
  464|  61.8k|    fixSymbolsInTLSFixups(cast<MCUnaryExpr>(expr)->getSubExpr());
  465|  61.8k|    break;
  466|   468k|  }
  467|   468k|}
_ZN7llvm_ks13MCELFStreamer18EmitInstToFragmentERNS_6MCInstERKNS_15MCSubtargetInfoE:
  470|  2.66k|                                       const MCSubtargetInfo &STI) {
  471|  2.66k|  this->MCObjectStreamer::EmitInstToFragment(Inst, STI);
  472|  2.66k|  MCRelaxableFragment &F = *cast<MCRelaxableFragment>(getCurrentFragment());
  473|       |
  474|  4.48k|  for (unsigned i = 0, e = F.getFixups().size(); i != e; ++i)
  ------------------
  |  Branch (474:50): [True: 1.82k, False: 2.66k]
  ------------------
  475|  1.82k|    fixSymbolsInTLSFixups(F.getFixups()[i].getValue());
  476|  2.66k|}
_ZN7llvm_ks13MCELFStreamer14EmitInstToDataERNS_6MCInstERKNS_15MCSubtargetInfoERj:
  481|  26.6k|{
  482|  26.6k|  MCAssembler &Assembler = getAssembler();
  483|  26.6k|  SmallVector<MCFixup, 4> Fixups;
  484|  26.6k|  SmallString<256> Code;
  485|  26.6k|  raw_svector_ostream VecOS(Code);
  486|  26.6k|  Assembler.getEmitter().encodeInstruction(Inst, VecOS, Fixups, STI, KsError);
  487|  26.6k|  if (KsError)
  ------------------
  |  Branch (487:7): [True: 15, False: 26.6k]
  ------------------
  488|     15|      return;
  489|       |
  490|  37.8k|  for (unsigned i = 0, e = Fixups.size(); i != e; ++i)
  ------------------
  |  Branch (490:43): [True: 11.1k, False: 26.6k]
  ------------------
  491|  11.1k|    fixSymbolsInTLSFixups(Fixups[i].getValue());
  492|       |
  493|       |  // There are several possibilities here:
  494|       |  //
  495|       |  // If bundling is disabled, append the encoded instruction to the current data
  496|       |  // fragment (or create a new such fragment if the current fragment is not a
  497|       |  // data fragment).
  498|       |  //
  499|       |  // If bundling is enabled:
  500|       |  // - If we're not in a bundle-locked group, emit the instruction into a
  501|       |  //   fragment of its own. If there are no fixups registered for the
  502|       |  //   instruction, emit a MCCompactEncodedInstFragment. Otherwise, emit a
  503|       |  //   MCDataFragment.
  504|       |  // - If we're in a bundle-locked group, append the instruction to the current
  505|       |  //   data fragment because we want all the instructions in a group to get into
  506|       |  //   the same fragment. Be careful not to do that for the first instruction in
  507|       |  //   the group, though.
  508|  26.6k|  MCDataFragment *DF;
  509|       |
  510|  26.6k|  if (Assembler.isBundlingEnabled()) {
  ------------------
  |  Branch (510:7): [True: 0, False: 26.6k]
  ------------------
  511|      0|    MCSection &Sec = *getCurrentSectionOnly();
  512|      0|    if (Assembler.getRelaxAll() && isBundleLocked())
  ------------------
  |  Branch (512:9): [True: 0, False: 0]
  |  Branch (512:36): [True: 0, False: 0]
  ------------------
  513|       |      // If the -mc-relax-all flag is used and we are bundle-locked, we re-use
  514|       |      // the current bundle group.
  515|      0|      DF = BundleGroups.back();
  516|      0|    else if (Assembler.getRelaxAll() && !isBundleLocked())
  ------------------
  |  Branch (516:14): [True: 0, False: 0]
  |  Branch (516:41): [True: 0, False: 0]
  ------------------
  517|       |      // When not in a bundle-locked group and the -mc-relax-all flag is used,
  518|       |      // we create a new temporary fragment which will be later merged into
  519|       |      // the current fragment.
  520|      0|      DF = new MCDataFragment();
  521|      0|    else if (isBundleLocked() && !Sec.isBundleGroupBeforeFirstInst())
  ------------------
  |  Branch (521:14): [True: 0, False: 0]
  |  Branch (521:34): [True: 0, False: 0]
  ------------------
  522|       |      // If we are bundle-locked, we re-use the current fragment.
  523|       |      // The bundle-locking directive ensures this is a new data fragment.
  524|      0|      DF = cast<MCDataFragment>(getCurrentFragment());
  525|      0|    else if (!isBundleLocked() && Fixups.size() == 0) {
  ------------------
  |  Branch (525:14): [True: 0, False: 0]
  |  Branch (525:35): [True: 0, False: 0]
  ------------------
  526|       |      // Optimize memory usage by emitting the instruction to a
  527|       |      // MCCompactEncodedInstFragment when not in a bundle-locked group and
  528|       |      // there are no fixups registered.
  529|      0|      MCCompactEncodedInstFragment *CEIF = new MCCompactEncodedInstFragment();
  530|      0|      insert(CEIF);
  531|      0|      CEIF->getContents().append(Code.begin(), Code.end());
  532|      0|      return;
  533|      0|    } else {
  534|      0|      DF = new MCDataFragment();
  535|      0|      insert(DF);
  536|      0|    }
  537|      0|    if (Sec.getBundleLockState() == MCSection::BundleLockedAlignToEnd) {
  ------------------
  |  Branch (537:9): [True: 0, False: 0]
  ------------------
  538|       |      // If this fragment is for a group marked "align_to_end", set a flag
  539|       |      // in the fragment. This can happen after the fragment has already been
  540|       |      // created if there are nested bundle_align groups and an inner one
  541|       |      // is the one marked align_to_end.
  542|      0|      DF->setAlignToBundleEnd(true);
  543|      0|    }
  544|       |
  545|       |    // We're now emitting an instruction in a bundle group, so this flag has
  546|       |    // to be turned off.
  547|      0|    Sec.setBundleGroupBeforeFirstInst(false);
  548|  26.6k|  } else {
  549|  26.6k|    DF = getOrCreateDataFragment();
  550|  26.6k|  }
  551|       |
  552|       |  // Add the fixups and data.
  553|  37.8k|  for (unsigned i = 0, e = Fixups.size(); i != e; ++i) {
  ------------------
  |  Branch (553:43): [True: 11.1k, False: 26.6k]
  ------------------
  554|  11.1k|    Fixups[i].setOffset(Fixups[i].getOffset() + DF->getContents().size());
  555|  11.1k|    DF->getFixups().push_back(Fixups[i]);
  556|  11.1k|  }
  557|  26.6k|  DF->setHasInstructions(true);
  558|  26.6k|  DF->getContents().append(Code.begin(), Code.end());
  559|       |
  560|  26.6k|  if (Assembler.isBundlingEnabled() && Assembler.getRelaxAll()) {
  ------------------
  |  Branch (560:7): [True: 0, False: 26.6k]
  |  Branch (560:40): [True: 0, False: 0]
  ------------------
  561|      0|    if (!isBundleLocked()) {
  ------------------
  |  Branch (561:9): [True: 0, False: 0]
  ------------------
  562|      0|      mergeFragment(getOrCreateDataFragment(), DF);
  563|      0|      delete DF;
  564|      0|    }
  565|      0|  }
  566|  26.6k|}
_ZN7llvm_ks13MCELFStreamer10FinishImplEv:
  634|  8.98k|{
  635|       |  // Ensure the last section gets aligned if necessary.
  636|  8.98k|  MCSection *CurSection = getCurrentSectionOnly();
  637|  8.98k|  setSectionAlignmentForBundling(getAssembler(), CurSection);
  638|       |
  639|  8.98k|  EmitFrames(nullptr);
  640|  8.98k|  return this->MCObjectStreamer::FinishImpl();
  641|  8.98k|}
_ZN7llvm_ks17createELFStreamerERNS_9MCContextERNS_12MCAsmBackendERNS_17raw_pwrite_streamEPNS_13MCCodeEmitterEb:
  645|  20.9k|                                    bool RelaxAll) {
  646|  20.9k|  MCELFStreamer *S = new MCELFStreamer(Context, MAB, OS, CE);
  647|  20.9k|  if (RelaxAll)
  ------------------
  |  Branch (647:7): [True: 0, False: 20.9k]
  ------------------
  648|      0|    S->getAssembler().setRelaxAll(true);
  649|  20.9k|  return S;
  650|  20.9k|}
MCELFStreamer.cpp:_ZL30setSectionAlignmentForBundlingRKN7llvm_ks11MCAssemblerEPNS_9MCSectionE:
  131|  30.8k|                                           MCSection *Section) {
  132|  30.8k|  if (Section && Assembler.isBundlingEnabled() && Section->hasInstructions() &&
  ------------------
  |  Branch (132:7): [True: 9.85k, False: 20.9k]
  |  Branch (132:18): [True: 0, False: 9.85k]
  |  Branch (132:51): [True: 0, False: 0]
  ------------------
  133|      0|      Section->getAlignment() < Assembler.getBundleAlignSize())
  ------------------
  |  Branch (133:7): [True: 0, False: 0]
  ------------------
  134|      0|    Section->setAlignment(Assembler.getBundleAlignSize());
  135|  30.8k|}

_ZN7llvm_ks12MCBinaryExpr6createENS0_6OpcodeEPKNS_6MCExprES4_RNS_9MCContextE:
  133|   205k|                                         const MCExpr *RHS, MCContext &Ctx) {
  134|   205k|  return new (Ctx) MCBinaryExpr(Opc, LHS, RHS);
  135|   205k|}
_ZN7llvm_ks11MCUnaryExpr6createENS0_6OpcodeEPKNS_6MCExprERNS_9MCContextE:
  138|   263k|                                       MCContext &Ctx) {
  139|   263k|  return new (Ctx) MCUnaryExpr(Opc, Expr);
  140|   263k|}
_ZN7llvm_ks14MCConstantExpr6createElRNS_9MCContextE:
  142|   595k|const MCConstantExpr *MCConstantExpr::create(int64_t Value, MCContext &Ctx) {
  143|   595k|  return new (Ctx) MCConstantExpr(Value);
  144|   595k|}
_ZN7llvm_ks15MCSymbolRefExprC2EPKNS_8MCSymbolENS0_11VariantKindEPKNS_9MCAsmInfoE:
  150|   379k|    : MCExpr(MCExpr::SymbolRef), Kind(Kind),
  151|   379k|      UseParensForSymbolVariant(MAI->useParensForSymbolVariant()),
  152|   379k|      HasSubsectionsViaSymbols(MAI->hasSubsectionsViaSymbols()),
  153|   379k|      Symbol(Symbol) {
  154|       |  assert(Symbol);
  ------------------
  |  Branch (154:3): [True: 379k, False: 0]
  ------------------
  155|   379k|}
_ZN7llvm_ks15MCSymbolRefExpr6createEPKNS_8MCSymbolENS0_11VariantKindERNS_9MCContextE:
  159|   379k|                                               MCContext &Ctx) {
  160|   379k|  return new (Ctx) MCSymbolRefExpr(Sym, Kind, Ctx.getAsmInfo());
  161|   379k|}
_ZN7llvm_ks15MCSymbolRefExpr6createENS_9StringRefENS0_11VariantKindERNS_9MCContextE:
  164|     58|                                               MCContext &Ctx) {
  165|     58|  return create(Ctx.getOrCreateSymbol(Name), Kind, Ctx);
  166|     58|}
_ZN7llvm_ks15MCSymbolRefExpr21getVariantKindForNameENS_9StringRefE:
  303|  3.08k|MCSymbolRefExpr::getVariantKindForName(StringRef Name) {
  304|  3.08k|  return StringSwitch<VariantKind>(Name.lower())
  305|  3.08k|    .Case("got", VK_GOT)
  306|  3.08k|    .Case("gotoff", VK_GOTOFF)
  307|  3.08k|    .Case("gotpcrel", VK_GOTPCREL)
  308|  3.08k|    .Case("gottpoff", VK_GOTTPOFF)
  309|  3.08k|    .Case("indntpoff", VK_INDNTPOFF)
  310|  3.08k|    .Case("ntpoff", VK_NTPOFF)
  311|  3.08k|    .Case("gotntpoff", VK_GOTNTPOFF)
  312|  3.08k|    .Case("plt", VK_PLT)
  313|  3.08k|    .Case("tlsgd", VK_TLSGD)
  314|  3.08k|    .Case("tlsld", VK_TLSLD)
  315|  3.08k|    .Case("tlsldm", VK_TLSLDM)
  316|  3.08k|    .Case("tpoff", VK_TPOFF)
  317|  3.08k|    .Case("dtpoff", VK_DTPOFF)
  318|  3.08k|    .Case("tlvp", VK_TLVP)
  319|  3.08k|    .Case("tlvppage", VK_TLVPPAGE)
  320|  3.08k|    .Case("tlvppageoff", VK_TLVPPAGEOFF)
  321|  3.08k|    .Case("page", VK_PAGE)
  322|  3.08k|    .Case("pageoff", VK_PAGEOFF)
  323|  3.08k|    .Case("gotpage", VK_GOTPAGE)
  324|  3.08k|    .Case("gotpageoff", VK_GOTPAGEOFF)
  325|  3.08k|    .Case("imgrel", VK_COFF_IMGREL32)
  326|  3.08k|    .Case("secrel32", VK_SECREL)
  327|  3.08k|    .Case("size", VK_SIZE)
  328|  3.08k|    .Case("l", VK_PPC_LO)
  329|  3.08k|    .Case("h", VK_PPC_HI)
  330|  3.08k|    .Case("ha", VK_PPC_HA)
  331|  3.08k|    .Case("higher", VK_PPC_HIGHER)
  332|  3.08k|    .Case("highera", VK_PPC_HIGHERA)
  333|  3.08k|    .Case("highest", VK_PPC_HIGHEST)
  334|  3.08k|    .Case("highesta", VK_PPC_HIGHESTA)
  335|  3.08k|    .Case("got@l", VK_PPC_GOT_LO)
  336|  3.08k|    .Case("got@h", VK_PPC_GOT_HI)
  337|  3.08k|    .Case("got@ha", VK_PPC_GOT_HA)
  338|  3.08k|    .Case("local", VK_PPC_LOCAL)
  339|  3.08k|    .Case("tocbase", VK_PPC_TOCBASE)
  340|  3.08k|    .Case("toc", VK_PPC_TOC)
  341|  3.08k|    .Case("toc@l", VK_PPC_TOC_LO)
  342|  3.08k|    .Case("toc@h", VK_PPC_TOC_HI)
  343|  3.08k|    .Case("toc@ha", VK_PPC_TOC_HA)
  344|  3.08k|    .Case("tls", VK_PPC_TLS)
  345|  3.08k|    .Case("dtpmod", VK_PPC_DTPMOD)
  346|  3.08k|    .Case("tprel", VK_PPC_TPREL)
  347|  3.08k|    .Case("tprel@l", VK_PPC_TPREL_LO)
  348|  3.08k|    .Case("tprel@h", VK_PPC_TPREL_HI)
  349|  3.08k|    .Case("tprel@ha", VK_PPC_TPREL_HA)
  350|  3.08k|    .Case("tprel@higher", VK_PPC_TPREL_HIGHER)
  351|  3.08k|    .Case("tprel@highera", VK_PPC_TPREL_HIGHERA)
  352|  3.08k|    .Case("tprel@highest", VK_PPC_TPREL_HIGHEST)
  353|  3.08k|    .Case("tprel@highesta", VK_PPC_TPREL_HIGHESTA)
  354|  3.08k|    .Case("dtprel", VK_PPC_DTPREL)
  355|  3.08k|    .Case("dtprel@l", VK_PPC_DTPREL_LO)
  356|  3.08k|    .Case("dtprel@h", VK_PPC_DTPREL_HI)
  357|  3.08k|    .Case("dtprel@ha", VK_PPC_DTPREL_HA)
  358|  3.08k|    .Case("dtprel@higher", VK_PPC_DTPREL_HIGHER)
  359|  3.08k|    .Case("dtprel@highera", VK_PPC_DTPREL_HIGHERA)
  360|  3.08k|    .Case("dtprel@highest", VK_PPC_DTPREL_HIGHEST)
  361|  3.08k|    .Case("dtprel@highesta", VK_PPC_DTPREL_HIGHESTA)
  362|  3.08k|    .Case("got@tprel", VK_PPC_GOT_TPREL)
  363|  3.08k|    .Case("got@tprel@l", VK_PPC_GOT_TPREL_LO)
  364|  3.08k|    .Case("got@tprel@h", VK_PPC_GOT_TPREL_HI)
  365|  3.08k|    .Case("got@tprel@ha", VK_PPC_GOT_TPREL_HA)
  366|  3.08k|    .Case("got@dtprel", VK_PPC_GOT_DTPREL)
  367|  3.08k|    .Case("got@dtprel@l", VK_PPC_GOT_DTPREL_LO)
  368|  3.08k|    .Case("got@dtprel@h", VK_PPC_GOT_DTPREL_HI)
  369|  3.08k|    .Case("got@dtprel@ha", VK_PPC_GOT_DTPREL_HA)
  370|  3.08k|    .Case("got@tlsgd", VK_PPC_GOT_TLSGD)
  371|  3.08k|    .Case("got@tlsgd@l", VK_PPC_GOT_TLSGD_LO)
  372|  3.08k|    .Case("got@tlsgd@h", VK_PPC_GOT_TLSGD_HI)
  373|  3.08k|    .Case("got@tlsgd@ha", VK_PPC_GOT_TLSGD_HA)
  374|  3.08k|    .Case("got@tlsld", VK_PPC_GOT_TLSLD)
  375|  3.08k|    .Case("got@tlsld@l", VK_PPC_GOT_TLSLD_LO)
  376|  3.08k|    .Case("got@tlsld@h", VK_PPC_GOT_TLSLD_HI)
  377|  3.08k|    .Case("got@tlsld@ha", VK_PPC_GOT_TLSLD_HA)
  378|  3.08k|    .Case("gdgot", VK_Hexagon_GD_GOT)
  379|  3.08k|    .Case("gdplt", VK_Hexagon_GD_PLT)
  380|  3.08k|    .Case("iegot", VK_Hexagon_IE_GOT)
  381|  3.08k|    .Case("ie", VK_Hexagon_IE)
  382|  3.08k|    .Case("ldgot", VK_Hexagon_LD_GOT)
  383|  3.08k|    .Case("ldplt", VK_Hexagon_LD_PLT)
  384|  3.08k|    .Case("pcrel", VK_Hexagon_PCREL)
  385|  3.08k|    .Case("none", VK_ARM_NONE)
  386|  3.08k|    .Case("got_prel", VK_ARM_GOT_PREL)
  387|  3.08k|    .Case("target1", VK_ARM_TARGET1)
  388|  3.08k|    .Case("target2", VK_ARM_TARGET2)
  389|  3.08k|    .Case("prel31", VK_ARM_PREL31)
  390|  3.08k|    .Case("sbrel", VK_ARM_SBREL)
  391|  3.08k|    .Case("tlsldo", VK_ARM_TLSLDO)
  392|  3.08k|    .Case("tlscall", VK_ARM_TLSCALL)
  393|  3.08k|    .Case("tlsdesc", VK_ARM_TLSDESC)
  394|  3.08k|    .Default(VK_Invalid);
  395|  3.08k|}
_ZNK7llvm_ks6MCExpr18evaluateAsAbsoluteERl:
  406|   699k|bool MCExpr::evaluateAsAbsolute(int64_t &Res) const {
  407|   699k|  return evaluateAsAbsolute(Res, nullptr, nullptr, nullptr);
  408|   699k|}
_ZNK7llvm_ks6MCExpr18evaluateAsAbsoluteERlRKNS_11MCAssemblerE:
  421|   148k|bool MCExpr::evaluateAsAbsolute(int64_t &Res, const MCAssembler &Asm) const {
  422|   148k|  return evaluateAsAbsolute(Res, &Asm, nullptr, nullptr);
  423|   148k|}
_ZNK7llvm_ks6MCExpr18evaluateAsAbsoluteERlPKNS_11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_9MCSectionEmNS_12DenseMapInfoISB_EENS_6detail12DenseMapPairISB_mEEEE:
  433|   848k|                                const SectionAddrMap *Addrs) const {
  434|       |  // FIXME: The use if InSet = Addrs is a hack. Setting InSet causes us
  435|       |  // absolutize differences across sections and that is what the MachO writer
  436|       |  // uses Addrs for.
  437|   848k|  return evaluateAsAbsolute(Res, Asm, Layout, Addrs, Addrs);
  438|   848k|}
_ZNK7llvm_ks6MCExpr18evaluateAsAbsoluteERlPKNS_11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_9MCSectionEmNS_12DenseMapInfoISB_EENS_6detail12DenseMapPairISB_mEEEEb:
  443|   848k|{
  444|   848k|  MCValue Value;
  445|       |
  446|       |  // Fast path constants.
  447|   848k|  if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(this)) {
  ------------------
  |  Branch (447:29): [True: 265k, False: 582k]
  ------------------
  448|   265k|    Res = CE->getValue();
  449|   265k|    return true;
  450|   265k|  }
  451|       |
  452|   582k|  bool valid;
  453|   582k|  bool IsRelocatable =
  454|   582k|      evaluateAsRelocatableImpl(Value, Asm, Layout, nullptr, Addrs, InSet, valid);
  455|       |
  456|       |  // Record the current value.
  457|   582k|  Res = Value.getConstant();
  458|       |
  459|   582k|  return IsRelocatable && Value.isAbsolute();
  ------------------
  |  Branch (459:10): [True: 505k, False: 76.2k]
  |  Branch (459:27): [True: 175k, False: 330k]
  ------------------
  460|   848k|}
_ZNK7llvm_ks6MCExpr21evaluateAsRelocatableERNS_7MCValueEPKNS_11MCAsmLayoutEPKNS_7MCFixupE:
  606|  28.9k|{
  607|  28.9k|  MCAssembler *Assembler = Layout ? &Layout->getAssembler() : nullptr;
  ------------------
  |  Branch (607:28): [True: 26.8k, False: 2.06k]
  ------------------
  608|  28.9k|  bool valid;
  609|  28.9k|  return evaluateAsRelocatableImpl(Res, Assembler, Layout, Fixup, nullptr,
  610|  28.9k|                                   false, valid);
  611|  28.9k|}
_ZNK7llvm_ks6MCExpr15evaluateAsValueERNS_7MCValueERKNS_11MCAsmLayoutE:
  614|  38.2k|{
  615|  38.2k|  MCAssembler *Assembler = &Layout.getAssembler();
  616|  38.2k|  bool valid;
  617|  38.2k|  return evaluateAsRelocatableImpl(Res, Assembler, &Layout, nullptr, nullptr,
  618|  38.2k|                                   true, valid);
  619|  38.2k|}
_ZNK7llvm_ks6MCExpr25evaluateAsRelocatableImplERNS_7MCValueEPKNS_11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_7MCFixupEPKNS_8DenseMapIPKNS_9MCSectionEmNS_12DenseMapInfoISF_EENS_6detail12DenseMapPairISF_mEEEEbRb:
  639|  1.64M|{
  640|  1.64M|  switch (getKind()) {
  ------------------
  |  Branch (640:11): [True: 1.64M, False: 0]
  ------------------
  641|      0|  case Target:
  ------------------
  |  Branch (641:3): [True: 0, False: 1.64M]
  ------------------
  642|      0|    return cast<MCTargetExpr>(this)->evaluateAsRelocatableImpl(Res, Layout,
  643|      0|                                                               Fixup);
  644|       |
  645|   381k|  case Constant:
  ------------------
  |  Branch (645:3): [True: 381k, False: 1.26M]
  ------------------
  646|   381k|    Res = MCValue::get(cast<MCConstantExpr>(this)->getValue());
  647|   381k|    return true;
  648|       |
  649|   589k|  case SymbolRef: {
  ------------------
  |  Branch (649:3): [True: 589k, False: 1.05M]
  ------------------
  650|   589k|    const MCSymbolRefExpr *SRE = cast<MCSymbolRefExpr>(this);
  651|   589k|    const MCSymbol &Sym = SRE->getSymbol();
  652|       |
  653|       |    // Evaluate recursively if this is a variable.
  654|   589k|    if (Sym.isVariable() && SRE->getKind() == MCSymbolRefExpr::VK_None &&
  ------------------
  |  Branch (654:9): [True: 12.3k, False: 577k]
  |  Branch (654:29): [True: 12.3k, False: 23]
  ------------------
  655|  12.3k|        canExpand(Sym, InSet)) {
  ------------------
  |  Branch (655:9): [True: 2.08k, False: 10.2k]
  ------------------
  656|  2.08k|      bool IsMachO = SRE->hasSubsectionsViaSymbols();
  657|  2.08k|      bool valid;
  658|  2.08k|      if (Sym.getVariableValue()->evaluateAsRelocatableImpl(
  ------------------
  |  Branch (658:11): [True: 1.20k, False: 876]
  ------------------
  659|  2.08k|              Res, Asm, Layout, Fixup, Addrs, InSet || IsMachO, valid)) {
  ------------------
  |  Branch (659:47): [True: 512, False: 1.57k]
  |  Branch (659:56): [True: 0, False: 1.57k]
  ------------------
  660|  1.20k|        if (!IsMachO)
  ------------------
  |  Branch (660:13): [True: 1.20k, False: 0]
  ------------------
  661|  1.20k|          return true;
  662|       |
  663|      0|        const MCSymbolRefExpr *A = Res.getSymA();
  664|      0|        const MCSymbolRefExpr *B = Res.getSymB();
  665|       |        // FIXME: This is small hack. Given
  666|       |        // a = b + 4
  667|       |        // .long a
  668|       |        // the OS X assembler will completely drop the 4. We should probably
  669|       |        // include it in the relocation or produce an error if that is not
  670|       |        // possible.
  671|      0|        if (!A && !B)
  ------------------
  |  Branch (671:13): [True: 0, False: 0]
  |  Branch (671:19): [True: 0, False: 0]
  ------------------
  672|      0|          return true;
  673|      0|      }
  674|  2.08k|    }
  675|       |
  676|   588k|    Res = MCValue::get(SRE, nullptr, 0);
  677|   588k|    return true;
  678|   589k|  }
  679|       |
  680|   321k|  case Unary: {
  ------------------
  |  Branch (680:3): [True: 321k, False: 1.32M]
  ------------------
  681|   321k|    const MCUnaryExpr *AUE = cast<MCUnaryExpr>(this);
  682|   321k|    MCValue Value;
  683|       |
  684|   321k|    bool valid;
  685|   321k|    if (!AUE->getSubExpr()->evaluateAsRelocatableImpl(Value, Asm, Layout, Fixup,
  ------------------
  |  Branch (685:9): [True: 6.74k, False: 315k]
  ------------------
  686|   321k|                                                      Addrs, InSet, valid))
  687|  6.74k|      return false;
  688|       |
  689|   315k|    switch (AUE->getOpcode()) {
  ------------------
  |  Branch (689:13): [True: 315k, False: 0]
  ------------------
  690|  2.70k|    case MCUnaryExpr::LNot:
  ------------------
  |  Branch (690:5): [True: 2.70k, False: 312k]
  ------------------
  691|  2.70k|      if (!Value.isAbsolute())
  ------------------
  |  Branch (691:11): [True: 832, False: 1.87k]
  ------------------
  692|    832|        return false;
  693|  1.87k|      Res = MCValue::get(!Value.getConstant());
  694|  1.87k|      break;
  695|   206k|    case MCUnaryExpr::Minus:
  ------------------
  |  Branch (695:5): [True: 206k, False: 108k]
  ------------------
  696|       |      /// -(a - b + const) ==> (b - a - const)
  697|   206k|      if (Value.getSymA() && !Value.getSymB())
  ------------------
  |  Branch (697:11): [True: 40.3k, False: 166k]
  |  Branch (697:30): [True: 40.1k, False: 224]
  ------------------
  698|  40.1k|        return false;
  699|   166k|      Res = MCValue::get(Value.getSymB(), Value.getSymA(),
  700|   166k|                         -Value.getConstant());
  701|   166k|      break;
  702|  76.0k|    case MCUnaryExpr::Not:
  ------------------
  |  Branch (702:5): [True: 76.0k, False: 239k]
  ------------------
  703|  76.0k|      if (!Value.isAbsolute())
  ------------------
  |  Branch (703:11): [True: 504, False: 75.5k]
  ------------------
  704|    504|        return false;
  705|  75.5k|      Res = MCValue::get(~Value.getConstant());
  706|  75.5k|      break;
  707|  29.4k|    case MCUnaryExpr::Plus:
  ------------------
  |  Branch (707:5): [True: 29.4k, False: 285k]
  ------------------
  708|  29.4k|      Res = Value;
  709|  29.4k|      break;
  710|   315k|    }
  711|       |
  712|   273k|    return true;
  713|   315k|  }
  714|       |
  715|   352k|  case Binary: {
  ------------------
  |  Branch (715:3): [True: 352k, False: 1.29M]
  ------------------
  716|   352k|    const MCBinaryExpr *ABE = cast<MCBinaryExpr>(this);
  717|   352k|    MCValue LHSValue, RHSValue;
  718|   352k|    bool valid;
  719|       |
  720|   352k|    if (!ABE->getLHS()->evaluateAsRelocatableImpl(LHSValue, Asm, Layout, Fixup,
  ------------------
  |  Branch (720:9): [True: 33.0k, False: 319k]
  ------------------
  721|   352k|                                                  Addrs, InSet, valid) ||
  722|   319k|        !ABE->getRHS()->evaluateAsRelocatableImpl(RHSValue, Asm, Layout, Fixup,
  ------------------
  |  Branch (722:9): [True: 7.95k, False: 311k]
  ------------------
  723|   319k|                                                  Addrs, InSet, valid))
  724|  41.0k|      return false;
  725|       |
  726|       |    // We only support a few operations on non-constant expressions, handle
  727|       |    // those first.
  728|   311k|    if (!LHSValue.isAbsolute() || !RHSValue.isAbsolute()) {
  ------------------
  |  Branch (728:9): [True: 212k, False: 98.5k]
  |  Branch (728:35): [True: 34.6k, False: 63.8k]
  ------------------
  729|   247k|      switch (ABE->getOpcode()) {
  730|  23.0k|      default:
  ------------------
  |  Branch (730:7): [True: 23.0k, False: 224k]
  ------------------
  731|  23.0k|        return false;
  732|   208k|      case MCBinaryExpr::Sub:
  ------------------
  |  Branch (732:7): [True: 208k, False: 38.7k]
  ------------------
  733|       |        // Negate RHS and add.
  734|   208k|        return EvaluateSymbolicAdd(Asm, Layout, Addrs, InSet, LHSValue,
  735|   208k|                                   RHSValue.getSymB(), RHSValue.getSymA(),
  736|   208k|                                   -RHSValue.getConstant(), Res, valid);
  737|       |
  738|  15.6k|      case MCBinaryExpr::Add:
  ------------------
  |  Branch (738:7): [True: 15.6k, False: 231k]
  ------------------
  739|  15.6k|        return EvaluateSymbolicAdd(Asm, Layout, Addrs, InSet, LHSValue,
  740|  15.6k|                                   RHSValue.getSymA(), RHSValue.getSymB(),
  741|  15.6k|                                   RHSValue.getConstant(), Res, valid);
  742|   247k|      }
  743|   247k|    }
  744|       |
  745|       |    // FIXME: We need target hooks for the evaluation. It may be limited in
  746|       |    // width, and gas defines the result of comparisons differently from
  747|       |    // Apple as.
  748|  63.8k|    int64_t LHS = LHSValue.getConstant(), RHS = RHSValue.getConstant();
  749|  63.8k|    int64_t Result = 0;
  750|  63.8k|    switch (ABE->getOpcode()) {
  ------------------
  |  Branch (750:13): [True: 63.8k, False: 0]
  ------------------
  751|      0|    case MCBinaryExpr::AShr: Result = LHS >> RHS; break;
  ------------------
  |  Branch (751:5): [True: 0, False: 63.8k]
  ------------------
  752|  4.49k|    case MCBinaryExpr::Add:  Result = LHS + RHS; break;
  ------------------
  |  Branch (752:5): [True: 4.49k, False: 59.3k]
  ------------------
  753|    699|    case MCBinaryExpr::And:  Result = LHS & RHS; break;
  ------------------
  |  Branch (753:5): [True: 699, False: 63.1k]
  ------------------
  754|  5.65k|    case MCBinaryExpr::Div:
  ------------------
  |  Branch (754:5): [True: 5.65k, False: 58.2k]
  ------------------
  755|       |      // Handle division by zero. gas just emits a warning and keeps going,
  756|       |      // we try to be stricter.
  757|       |      // FIXME: Currently the caller of this function has no way to understand
  758|       |      // we're bailing out because of 'division by zero'. Therefore, it will
  759|       |      // emit a 'expected relocatable expression' error. It would be nice to
  760|       |      // change this code to emit a better diagnostic.
  761|  5.65k|      if (RHS == 0)
  ------------------
  |  Branch (761:11): [True: 341, False: 5.31k]
  ------------------
  762|    341|        return false;
  763|  5.31k|      Result = LHS / RHS;
  764|  5.31k|      break;
  765|    460|    case MCBinaryExpr::EQ:   Result = LHS == RHS; break;
  ------------------
  |  Branch (765:5): [True: 460, False: 63.4k]
  ------------------
  766|  4.36k|    case MCBinaryExpr::GT:   Result = LHS > RHS; break;
  ------------------
  |  Branch (766:5): [True: 4.36k, False: 59.5k]
  ------------------
  767|    833|    case MCBinaryExpr::GTE:  Result = LHS >= RHS; break;
  ------------------
  |  Branch (767:5): [True: 833, False: 63.0k]
  ------------------
  768|    476|    case MCBinaryExpr::LAnd: Result = LHS && RHS; break;
  ------------------
  |  Branch (768:5): [True: 476, False: 63.4k]
  |  Branch (768:39): [True: 264, False: 212]
  |  Branch (768:46): [True: 253, False: 11]
  ------------------
  769|    463|    case MCBinaryExpr::LOr:  Result = LHS || RHS; break;
  ------------------
  |  Branch (769:5): [True: 463, False: 63.4k]
  |  Branch (769:39): [True: 370, False: 93]
  |  Branch (769:46): [True: 12, False: 81]
  ------------------
  770|    261|    case MCBinaryExpr::LShr: Result = uint64_t(LHS) >> uint64_t(RHS); break;
  ------------------
  |  Branch (770:5): [True: 261, False: 63.6k]
  ------------------
  771|  1.38k|    case MCBinaryExpr::LT:   Result = LHS < RHS; break;
  ------------------
  |  Branch (771:5): [True: 1.38k, False: 62.5k]
  ------------------
  772|    555|    case MCBinaryExpr::LTE:  Result = LHS <= RHS; break;
  ------------------
  |  Branch (772:5): [True: 555, False: 63.3k]
  ------------------
  773|  1.51k|    case MCBinaryExpr::Mod:
  ------------------
  |  Branch (773:5): [True: 1.51k, False: 62.3k]
  ------------------
  774|       |      // Handle division by zero. gas just emits a warning and keeps going,
  775|       |      // we try to be stricter.
  776|       |      // FIXME: Currently the caller of this function has no way to understand
  777|       |      // we're bailing out because of 'division by zero'. Therefore, it will
  778|       |      // emit a 'expected relocatable expression' error. It would be nice to
  779|       |      // change this code to emit a better diagnostic.
  780|  1.51k|      if (RHS == 0)
  ------------------
  |  Branch (780:11): [True: 590, False: 923]
  ------------------
  781|    590|        return false;
  782|    923|      Result = LHS % RHS;
  783|    923|      break;
  784|  16.0k|    case MCBinaryExpr::Mul:  Result = LHS * RHS; break;
  ------------------
  |  Branch (784:5): [True: 16.0k, False: 47.7k]
  ------------------
  785|    445|    case MCBinaryExpr::NE:   Result = LHS != RHS; break;
  ------------------
  |  Branch (785:5): [True: 445, False: 63.4k]
  ------------------
  786|  1.49k|    case MCBinaryExpr::Or:   Result = LHS | RHS; break;
  ------------------
  |  Branch (786:5): [True: 1.49k, False: 62.3k]
  ------------------
  787|    689|    case MCBinaryExpr::Shl:  Result = uint64_t(LHS) << uint64_t(RHS); break;
  ------------------
  |  Branch (787:5): [True: 689, False: 63.1k]
  ------------------
  788|  23.7k|    case MCBinaryExpr::Sub:  Result = LHS - RHS; break;
  ------------------
  |  Branch (788:5): [True: 23.7k, False: 40.1k]
  ------------------
  789|    296|    case MCBinaryExpr::Xor:  Result = LHS ^ RHS; break;
  ------------------
  |  Branch (789:5): [True: 296, False: 63.5k]
  ------------------
  790|  63.8k|    }
  791|       |
  792|  62.9k|    Res = MCValue::get(Result);
  793|  62.9k|    return true;
  794|  63.8k|  }
  795|  1.64M|  }
  796|       |
  797|      0|  llvm_unreachable("Invalid assembly expression kind!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  798|  1.64M|}
_ZNK7llvm_ks6MCExpr22findAssociatedFragmentEv:
  800|   113k|MCFragment *MCExpr::findAssociatedFragment() const {
  801|   113k|  switch (getKind()) {
  ------------------
  |  Branch (801:11): [True: 113k, False: 0]
  ------------------
  802|      0|  case Target:
  ------------------
  |  Branch (802:3): [True: 0, False: 113k]
  ------------------
  803|       |    // We never look through target specific expressions.
  804|      0|    return cast<MCTargetExpr>(this)->findAssociatedFragment();
  805|       |
  806|  4.91k|  case Constant:
  ------------------
  |  Branch (806:3): [True: 4.91k, False: 108k]
  ------------------
  807|  4.91k|    return MCSymbol::AbsolutePseudoFragment;
  808|       |
  809|  98.8k|  case SymbolRef: {
  ------------------
  |  Branch (809:3): [True: 98.8k, False: 14.1k]
  ------------------
  810|  98.8k|    const MCSymbolRefExpr *SRE = cast<MCSymbolRefExpr>(this);
  811|  98.8k|    const MCSymbol &Sym = SRE->getSymbol();
  812|  98.8k|    return Sym.getFragment();
  813|      0|  }
  814|       |
  815|  4.55k|  case Unary:
  ------------------
  |  Branch (815:3): [True: 4.55k, False: 108k]
  ------------------
  816|  4.55k|    return cast<MCUnaryExpr>(this)->getSubExpr()->findAssociatedFragment();
  817|       |
  818|  4.67k|  case Binary: {
  ------------------
  |  Branch (818:3): [True: 4.67k, False: 108k]
  ------------------
  819|  4.67k|    const MCBinaryExpr *BE = cast<MCBinaryExpr>(this);
  820|  4.67k|    MCFragment *LHS_F = BE->getLHS()->findAssociatedFragment();
  821|  4.67k|    MCFragment *RHS_F = BE->getRHS()->findAssociatedFragment();
  822|       |
  823|       |    // If either is absolute, return the other.
  824|  4.67k|    if (LHS_F == MCSymbol::AbsolutePseudoFragment)
  ------------------
  |  Branch (824:9): [True: 1.55k, False: 3.12k]
  ------------------
  825|  1.55k|      return RHS_F;
  826|  3.12k|    if (RHS_F == MCSymbol::AbsolutePseudoFragment)
  ------------------
  |  Branch (826:9): [True: 1.19k, False: 1.93k]
  ------------------
  827|  1.19k|      return LHS_F;
  828|       |
  829|       |    // Not always correct, but probably the best we can do without more context.
  830|  1.93k|    if (BE->getOpcode() == MCBinaryExpr::Sub)
  ------------------
  |  Branch (830:9): [True: 717, False: 1.21k]
  ------------------
  831|    717|      return MCSymbol::AbsolutePseudoFragment;
  832|       |
  833|       |    // Otherwise, return the first non-null fragment.
  834|  1.21k|    return LHS_F ? LHS_F : RHS_F;
  ------------------
  |  Branch (834:12): [True: 231, False: 988]
  ------------------
  835|  1.93k|  }
  836|   113k|  }
  837|       |
  838|      0|  llvm_unreachable("Invalid assembly expression kind!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  839|   113k|}
MCExpr.cpp:_ZL9canExpandRKN7llvm_ks8MCSymbolEb:
  621|  12.3k|static bool canExpand(const MCSymbol &Sym, bool InSet) {
  622|  12.3k|  const MCExpr *Expr = Sym.getVariableValue();
  623|  12.3k|  const auto *Inner = dyn_cast<MCSymbolRefExpr>(Expr);
  624|  12.3k|  if (Inner) {
  ------------------
  |  Branch (624:7): [True: 9.39k, False: 2.92k]
  ------------------
  625|  9.39k|    if (Inner->getKind() == MCSymbolRefExpr::VK_WEAKREF)
  ------------------
  |  Branch (625:9): [True: 0, False: 9.39k]
  ------------------
  626|      0|      return false;
  627|  9.39k|  }
  628|       |
  629|  12.3k|  if (InSet)
  ------------------
  |  Branch (629:7): [True: 512, False: 11.8k]
  ------------------
  630|    512|    return true;
  631|  11.8k|  return !Sym.isInSection();
  632|  12.3k|}
MCExpr.cpp:_ZL19EvaluateSymbolicAddPKN7llvm_ks11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_9MCSectionEmNS_12DenseMapInfoIS9_EENS_6detail12DenseMapPairIS9_mEEEEbRKNS_7MCValueEPKNS_15MCSymbolRefExprESN_lRSI_Rb:
  547|   224k|{
  548|       |  // FIXME: This routine (and other evaluation parts) are *incredibly* sloppy
  549|       |  // about dealing with modifiers. This will ultimately bite us, one day.
  550|   224k|  const MCSymbolRefExpr *LHS_A = LHS.getSymA();
  551|   224k|  const MCSymbolRefExpr *LHS_B = LHS.getSymB();
  552|   224k|  int64_t LHS_Cst = LHS.getConstant();
  553|       |
  554|       |  // Fold the result constant immediately.
  555|   224k|  int64_t Result_Cst = LHS_Cst + RHS_Cst;
  556|       |
  557|   224k|  assert((!Layout || Asm) &&
  ------------------
  |  Branch (557:3): [True: 198k, False: 25.6k]
  |  Branch (557:3): [True: 25.6k, False: 0]
  |  Branch (557:3): [True: 224k, Folded]
  |  Branch (557:3): [True: 224k, False: 0]
  ------------------
  558|   224k|         "Must have an assembler object if layout is given!");
  559|       |
  560|       |  // If we have a layout, we can fold resolved differences.
  561|   224k|  if (Asm) {
  ------------------
  |  Branch (561:7): [True: 117k, False: 106k]
  ------------------
  562|       |    // First, fold out any differences which are fully resolved. By
  563|       |    // reassociating terms in
  564|       |    //   Result = (LHS_A - LHS_B + LHS_Cst) + (RHS_A - RHS_B + RHS_Cst).
  565|       |    // we have the four possible differences:
  566|       |    //   (LHS_A - LHS_B),
  567|       |    //   (LHS_A - RHS_B),
  568|       |    //   (RHS_A - LHS_B),
  569|       |    //   (RHS_A - RHS_B).
  570|       |    // Since we are attempting to be as aggressive as possible about folding, we
  571|       |    // attempt to evaluate each possible alternative.
  572|   117k|    AttemptToFoldSymbolOffsetDifference(Asm, Layout, Addrs, InSet, LHS_A, LHS_B,
  573|   117k|                                        Result_Cst, valid);
  574|   117k|    if (!valid)
  ------------------
  |  Branch (574:9): [True: 0, False: 117k]
  ------------------
  575|      0|        return false;
  576|   117k|    AttemptToFoldSymbolOffsetDifference(Asm, Layout, Addrs, InSet, LHS_A, RHS_B,
  577|   117k|                                        Result_Cst, valid);
  578|   117k|    if (!valid)
  ------------------
  |  Branch (578:9): [True: 35, False: 117k]
  ------------------
  579|     35|        return false;
  580|   117k|    AttemptToFoldSymbolOffsetDifference(Asm, Layout, Addrs, InSet, RHS_A, LHS_B,
  581|   117k|                                        Result_Cst, valid);
  582|   117k|    if (!valid)
  ------------------
  |  Branch (582:9): [True: 44, False: 117k]
  ------------------
  583|     44|        return false;
  584|   117k|    AttemptToFoldSymbolOffsetDifference(Asm, Layout, Addrs, InSet, RHS_A, RHS_B,
  585|   117k|                                        Result_Cst, valid);
  586|   117k|    if (!valid)
  ------------------
  |  Branch (586:9): [True: 1, False: 117k]
  ------------------
  587|      1|        return false;
  588|   117k|  }
  589|       |
  590|       |  // We can't represent the addition or subtraction of two symbols.
  591|   224k|  if ((LHS_A && RHS_A) || (LHS_B && RHS_B))
  ------------------
  |  Branch (591:8): [True: 183k, False: 40.2k]
  |  Branch (591:17): [True: 2.37k, False: 181k]
  |  Branch (591:28): [True: 17.2k, False: 204k]
  |  Branch (591:37): [True: 12.9k, False: 4.37k]
  ------------------
  592|  15.2k|    return false;
  593|       |
  594|       |  // At this point, we have at most one additive symbol and one subtractive
  595|       |  // symbol -- find them.
  596|   208k|  const MCSymbolRefExpr *A = LHS_A ? LHS_A : RHS_A;
  ------------------
  |  Branch (596:30): [True: 168k, False: 40.0k]
  ------------------
  597|   208k|  const MCSymbolRefExpr *B = LHS_B ? LHS_B : RHS_B;
  ------------------
  |  Branch (597:30): [True: 4.37k, False: 204k]
  ------------------
  598|       |
  599|   208k|  Res = MCValue::get(A, B, Result_Cst);
  600|   208k|  return true;
  601|   224k|}
MCExpr.cpp:_ZL35AttemptToFoldSymbolOffsetDifferencePKN7llvm_ks11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_9MCSectionEmNS_12DenseMapInfoIS9_EENS_6detail12DenseMapPairIS9_mEEEEbRPKNS_15MCSymbolRefExprESL_RlRb:
  466|   471k|    const MCSymbolRefExpr *&B, int64_t &Addend, bool &valid) {
  467|   471k|  valid = true;
  468|   471k|  if (!A || !B)
  ------------------
  |  Branch (468:7): [True: 248k, False: 222k]
  |  Branch (468:13): [True: 157k, False: 65.7k]
  ------------------
  469|   406k|    return;
  470|       |
  471|  65.7k|  const MCSymbol &SA = A->getSymbol();
  472|  65.7k|  const MCSymbol &SB = B->getSymbol();
  473|       |
  474|  65.7k|  if (SA.isUndefined() || SB.isUndefined())
  ------------------
  |  Branch (474:7): [True: 23.1k, False: 42.5k]
  |  Branch (474:27): [True: 20.2k, False: 22.3k]
  ------------------
  475|  43.4k|    return;
  476|       |
  477|  22.3k|  if (!Asm->getWriter().isSymbolRefDifferenceFullyResolved(*Asm, A, B, InSet, valid))
  ------------------
  |  Branch (477:7): [True: 153, False: 22.1k]
  ------------------
  478|    153|    return;
  479|  22.1k|  if (!valid)
  ------------------
  |  Branch (479:7): [True: 0, False: 22.1k]
  ------------------
  480|      0|      return;
  481|       |
  482|  22.1k|  if (SA.getFragment() == SB.getFragment() && !SA.isVariable() &&
  ------------------
  |  Branch (482:7): [True: 19.7k, False: 2.35k]
  |  Branch (482:47): [True: 18.0k, False: 1.77k]
  ------------------
  483|  18.0k|      !SB.isVariable()) {
  ------------------
  |  Branch (483:7): [True: 17.8k, False: 147]
  ------------------
  484|  17.8k|    Addend += (SA.getOffset() - SB.getOffset());
  485|       |
  486|       |    // Pointers to Thumb symbols need to have their low-bit set to allow
  487|       |    // for interworking.
  488|  17.8k|    if (Asm->isThumbFunc(&SA))
  ------------------
  |  Branch (488:9): [True: 0, False: 17.8k]
  ------------------
  489|      0|      Addend |= 1;
  490|       |
  491|       |    // Clear the symbol expr pointers to indicate we have folded these
  492|       |    // operands.
  493|  17.8k|    A = B = nullptr;
  494|  17.8k|    return;
  495|  17.8k|  }
  496|       |
  497|  4.27k|  if (!Layout)
  ------------------
  |  Branch (497:7): [True: 3.12k, False: 1.15k]
  ------------------
  498|  3.12k|    return;
  499|       |
  500|  1.15k|  const MCSection &SecA = *SA.getFragment()->getParent();
  501|  1.15k|  const MCSection &SecB = *SB.getFragment()->getParent();
  502|       |
  503|  1.15k|  if ((&SecA != &SecB) && !Addrs)
  ------------------
  |  Branch (503:7): [True: 0, False: 1.15k]
  |  Branch (503:27): [True: 0, False: 0]
  ------------------
  504|      0|    return;
  505|       |
  506|       |  // Eagerly evaluate.
  507|  1.15k|  bool valid1, valid2;
  508|  1.15k|  Addend += Layout->getSymbolOffset(A->getSymbol(), valid1) -
  509|  1.15k|            Layout->getSymbolOffset(B->getSymbol(), valid2);
  510|  1.15k|  if (Addrs && (&SecA != &SecB))
  ------------------
  |  Branch (510:7): [True: 0, False: 1.15k]
  |  Branch (510:16): [True: 0, False: 0]
  ------------------
  511|      0|    Addend += (Addrs->lookup(&SecA) - Addrs->lookup(&SecB));
  512|       |
  513|       |  // Pointers to Thumb symbols need to have their low-bit set to allow
  514|       |  // for interworking.
  515|  1.15k|  if (Asm->isThumbFunc(&SA))
  ------------------
  |  Branch (515:7): [True: 0, False: 1.15k]
  ------------------
  516|      0|    Addend |= 1;
  517|       |
  518|       |  // Clear the symbol expr pointers to indicate we have folded these
  519|       |  // operands.
  520|  1.15k|  A = B = nullptr;
  521|  1.15k|}

_ZN7llvm_ks11MCAsmLayoutC2ERNS_11MCAssemblerE:
   32|  8.98k|  : Assembler(Asm), LastValidFragment()
   33|  8.98k| {
   34|       |  // Compute the section layout order. Virtual sections must go last.
   35|  8.98k|  for (MCSection &Sec : Asm)
  ------------------
  |  Branch (35:23): [True: 9.30k, False: 8.98k]
  ------------------
   36|  9.30k|    if (!Sec.isVirtualSection())
  ------------------
  |  Branch (36:9): [True: 9.27k, False: 23]
  ------------------
   37|  9.27k|      SectionOrder.push_back(&Sec);
   38|  8.98k|  for (MCSection &Sec : Asm)
  ------------------
  |  Branch (38:23): [True: 9.30k, False: 8.98k]
  ------------------
   39|  9.30k|    if (Sec.isVirtualSection())
  ------------------
  |  Branch (39:9): [True: 23, False: 9.27k]
  ------------------
   40|     23|      SectionOrder.push_back(&Sec);
   41|  8.98k|}
_ZNK7llvm_ks11MCAsmLayout15isFragmentValidEPKNS_10MCFragmentE:
   43|   284k|bool MCAsmLayout::isFragmentValid(const MCFragment *F) const {
   44|   284k|  const MCSection *Sec = F->getParent();
   45|   284k|  const MCFragment *LastValid = LastValidFragment.lookup(Sec);
   46|   284k|  if (!LastValid)
  ------------------
  |  Branch (46:7): [True: 18.6k, False: 265k]
  ------------------
   47|  18.6k|    return false;
   48|   284k|  assert(LastValid->getParent() == Sec);
  ------------------
  |  Branch (48:3): [True: 265k, False: 0]
  ------------------
   49|   265k|  return F->getLayoutOrder() <= LastValid->getLayoutOrder();
   50|   265k|}
_ZN7llvm_ks11MCAsmLayout23invalidateFragmentsFromEPNS_10MCFragmentE:
   52|     56|void MCAsmLayout::invalidateFragmentsFrom(MCFragment *F) {
   53|       |  // If this fragment wasn't already valid, we don't need to do anything.
   54|     56|  if (!isFragmentValid(F))
  ------------------
  |  Branch (54:7): [True: 0, False: 56]
  ------------------
   55|      0|    return;
   56|       |
   57|       |  // Otherwise, reset the last valid fragment to the previous fragment
   58|       |  // (if this is the first fragment, it will be NULL).
   59|     56|  LastValidFragment[F->getParent()] = F->getPrevNode();
   60|     56|}
_ZNK7llvm_ks11MCAsmLayout11ensureValidEPKNS_10MCFragmentE:
   63|   132k|{
   64|   132k|  MCSection *Sec = F->getParent();
   65|   132k|  MCSection::iterator I;
   66|   132k|  if (MCFragment *Cur = LastValidFragment[Sec])
  ------------------
  |  Branch (66:19): [True: 123k, False: 9.33k]
  ------------------
   67|   123k|    I = ++MCSection::iterator(Cur);
   68|  9.33k|  else
   69|  9.33k|    I = Sec->begin();
   70|       |
   71|       |  // Advance the layout position until the fragment is valid.
   72|   183k|  while (!isFragmentValid(F)) {
  ------------------
  |  Branch (72:10): [True: 56.7k, False: 126k]
  ------------------
   73|       |    //assert(I != Sec->end() && "Layout bookkeeping error");
   74|  56.7k|    if (I == Sec->end())
  ------------------
  |  Branch (74:9): [True: 1.82k, False: 54.8k]
  ------------------
   75|  1.82k|        return false;
   76|  54.8k|    if (const_cast<MCAsmLayout *>(this)->layoutFragment(&*I))
  ------------------
  |  Branch (76:9): [True: 3.71k, False: 51.1k]
  ------------------
   77|  3.71k|        return false;
   78|  51.1k|    ++I;
   79|  51.1k|  }
   80|       |
   81|   126k|  return true;
   82|   132k|}
_ZNK7llvm_ks11MCAsmLayout17getFragmentOffsetEPKNS_10MCFragmentERb:
   85|   132k|{
   86|   132k|  valid = true;
   87|   132k|  if (!ensureValid(F)) {
  ------------------
  |  Branch (87:7): [True: 5.54k, False: 126k]
  ------------------
   88|  5.54k|      valid = false;
   89|  5.54k|      return 0;
   90|  5.54k|  }
   91|       |  //assert(F->Offset != ~UINT64_C(0) && "Address not set!");
   92|   126k|  if (F->Offset == ~UINT64_C(0)) {
  ------------------
  |  Branch (92:7): [True: 97, False: 126k]
  ------------------
   93|     97|      valid = false;
   94|     97|      return 0;
   95|     97|  }
   96|       |
   97|   126k|  return F->Offset;
   98|   126k|}
_ZNK7llvm_ks11MCAsmLayout15getSymbolOffsetERKNS_8MCSymbolERmRb:
  156|  4.64k|{
  157|  4.64k|  return getSymbolOffsetImpl(*this, S, false, Val, valid);
  158|  4.64k|}
_ZNK7llvm_ks11MCAsmLayout15getSymbolOffsetERKNS_8MCSymbolERb:
  161|  38.2k|{
  162|  38.2k|  uint64_t Val;
  163|  38.2k|  getSymbolOffsetImpl(*this, S, true, Val, valid);
  164|  38.2k|  return Val;
  165|  38.2k|}
_ZNK7llvm_ks11MCAsmLayout18getSectionFileSizeEPKNS_9MCSectionE:
  212|     22|uint64_t MCAsmLayout::getSectionFileSize(const MCSection *Sec) const {
  213|       |  // Virtual sections have no file size.
  214|     22|  if (Sec->isVirtualSection())
  ------------------
  |  Branch (214:7): [True: 22, False: 0]
  ------------------
  215|     22|    return 0;
  216|       |
  217|       |  // Otherwise, the file size is the same as the address space size.
  218|      0|  return getSectionAddressSize(Sec);
  219|     22|}
_ZN7llvm_ks17ilist_node_traitsINS_10MCFragmentEE10deleteNodeEPS1_:
  264|  56.0k|void ilist_node_traits<MCFragment>::deleteNode(MCFragment *V) {
  265|  56.0k|  V->destroy();
  266|  56.0k|}
_ZN7llvm_ks10MCFragmentC2Ev:
  268|  21.3k|MCFragment::MCFragment() : Kind(FragmentType(~0)), HasInstructions(false),
  269|  21.3k|                           AlignToBundleEnd(false), BundlePadding(0) {
  270|  21.3k|}
_ZN7llvm_ks10MCFragmentD2Ev:
  272|   987k|MCFragment::~MCFragment() { }
_ZN7llvm_ks10MCFragmentC2ENS0_12FragmentTypeEbhPNS_9MCSectionE:
  276|   966k|    : Kind(Kind), HasInstructions(HasInstructions), AlignToBundleEnd(false),
  277|   966k|      BundlePadding(BundlePadding), Parent(Parent), Atom(nullptr),
  278|   966k|      Offset(~UINT64_C(0)) {
  279|   966k|  if (Parent && !isDummy())
  ------------------
  |  Branch (279:7): [True: 910k, False: 56.0k]
  |  Branch (279:17): [True: 0, False: 910k]
  ------------------
  280|      0|    Parent->getFragmentList().push_back(this);
  281|   966k|}
_ZN7llvm_ks10MCFragment7destroyEv:
  283|  56.0k|void MCFragment::destroy() {
  284|       |  // First check if we are the sentinal.
  285|  56.0k|  if (Kind == FragmentType(~0)) {
  ------------------
  |  Branch (285:7): [True: 0, False: 56.0k]
  ------------------
  286|      0|    delete this;
  287|      0|    return;
  288|      0|  }
  289|       |
  290|  56.0k|  switch (Kind) {
  ------------------
  |  Branch (290:11): [True: 56.0k, False: 0]
  ------------------
  291|  10.6k|    case FT_Align:
  ------------------
  |  Branch (291:5): [True: 10.6k, False: 45.3k]
  ------------------
  292|  10.6k|      delete cast<MCAlignFragment>(this);
  293|  10.6k|      return;
  294|  18.4k|    case FT_Data:
  ------------------
  |  Branch (294:5): [True: 18.4k, False: 37.5k]
  ------------------
  295|  18.4k|      delete cast<MCDataFragment>(this);
  296|  18.4k|      return;
  297|      0|    case FT_CompactEncodedInst:
  ------------------
  |  Branch (297:5): [True: 0, False: 56.0k]
  ------------------
  298|      0|      delete cast<MCCompactEncodedInstFragment>(this);
  299|      0|      return;
  300|  2.47k|    case FT_Fill:
  ------------------
  |  Branch (300:5): [True: 2.47k, False: 53.5k]
  ------------------
  301|  2.47k|      delete cast<MCFillFragment>(this);
  302|  2.47k|      return;
  303|  2.66k|    case FT_Relaxable:
  ------------------
  |  Branch (303:5): [True: 2.66k, False: 53.3k]
  ------------------
  304|  2.66k|      delete cast<MCRelaxableFragment>(this);
  305|  2.66k|      return;
  306|  21.7k|    case FT_Org:
  ------------------
  |  Branch (306:5): [True: 21.7k, False: 34.3k]
  ------------------
  307|  21.7k|      delete cast<MCOrgFragment>(this);
  308|  21.7k|      return;
  309|      0|    case FT_Dwarf:
  ------------------
  |  Branch (309:5): [True: 0, False: 56.0k]
  ------------------
  310|      0|      delete cast<MCDwarfLineAddrFragment>(this);
  311|      0|      return;
  312|      0|    case FT_DwarfFrame:
  ------------------
  |  Branch (312:5): [True: 0, False: 56.0k]
  ------------------
  313|      0|      delete cast<MCDwarfCallFrameFragment>(this);
  314|      0|      return;
  315|      0|    case FT_LEB:
  ------------------
  |  Branch (315:5): [True: 0, False: 56.0k]
  ------------------
  316|      0|      delete cast<MCLEBFragment>(this);
  317|      0|      return;
  318|      0|    case FT_SafeSEH:
  ------------------
  |  Branch (318:5): [True: 0, False: 56.0k]
  ------------------
  319|      0|      delete cast<MCSafeSEHFragment>(this);
  320|      0|      return;
  321|      0|    case FT_Dummy:
  ------------------
  |  Branch (321:5): [True: 0, False: 56.0k]
  ------------------
  322|      0|      delete cast<MCDummyFragment>(this);
  323|      0|      return;
  324|  56.0k|  }
  325|  56.0k|}
MCFragment.cpp:_ZL19getSymbolOffsetImplRKN7llvm_ks11MCAsmLayoutERKNS_8MCSymbolEbRmRb:
  119|  42.9k|{
  120|  42.9k|  valid = true;
  121|  42.9k|  if (!S.isVariable())
  ------------------
  |  Branch (121:7): [True: 39.7k, False: 3.21k]
  ------------------
  122|  39.7k|    return getLabelOffset(Layout, S, ReportError, Val);
  123|       |
  124|       |  // If SD is a variable, evaluate it.
  125|  3.21k|  MCValue Target;
  126|  3.21k|  if (!S.getVariableValue()->evaluateAsValue(Target, Layout)) {
  ------------------
  |  Branch (126:7): [True: 233, False: 2.98k]
  ------------------
  127|       |    //report_fatal_error("unable to evaluate offset for variable '" +
  128|       |    //                   S.getName() + "'");
  129|    233|    valid = false;
  130|    233|    return false;
  131|    233|  }
  132|       |
  133|  2.98k|  uint64_t Offset = Target.getConstant();
  134|       |
  135|  2.98k|  const MCSymbolRefExpr *A = Target.getSymA();
  136|  2.98k|  if (A) {
  ------------------
  |  Branch (136:7): [True: 2.70k, False: 278]
  ------------------
  137|  2.70k|    uint64_t ValA;
  138|  2.70k|    if (!getLabelOffset(Layout, A->getSymbol(), ReportError, ValA))
  ------------------
  |  Branch (138:9): [True: 512, False: 2.19k]
  ------------------
  139|    512|      return false;
  140|  2.19k|    Offset += ValA;
  141|  2.19k|  }
  142|       |
  143|  2.47k|  const MCSymbolRefExpr *B = Target.getSymB();
  144|  2.47k|  if (B) {
  ------------------
  |  Branch (144:7): [True: 278, False: 2.19k]
  ------------------
  145|    278|    uint64_t ValB;
  146|    278|    if (!getLabelOffset(Layout, B->getSymbol(), ReportError, ValB))
  ------------------
  |  Branch (146:9): [True: 59, False: 219]
  ------------------
  147|     59|      return false;
  148|    219|    Offset -= ValB;
  149|    219|  }
  150|       |
  151|  2.41k|  Val = Offset;
  152|  2.41k|  return true;
  153|  2.47k|}
MCFragment.cpp:_ZL14getLabelOffsetRKN7llvm_ks11MCAsmLayoutERKNS_8MCSymbolEbRm:
  103|  42.6k|{
  104|  42.6k|  if (!S.getFragment()) {
  ------------------
  |  Branch (104:7): [True: 706, False: 41.9k]
  ------------------
  105|    706|    if (ReportError)
  ------------------
  |  Branch (105:9): [True: 0, False: 706]
  ------------------
  106|      0|      report_fatal_error("unable to evaluate offset to undefined symbol '" +
  107|      0|                         S.getName() + "'");
  108|    706|    return false;
  109|    706|  }
  110|       |
  111|  41.9k|  bool valid;
  112|  41.9k|  Val = Layout.getFragmentOffset(S.getFragment(), valid) + S.getOffset();
  113|       |
  114|  41.9k|  return valid;
  115|  42.6k|}

_ZNK7llvm_ks11MCInstrDesc17getDeprecatedInfoERNS_6MCInstERKNS_15MCSubtargetInfoERNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEE:
   23|  29.8k|                                    std::string &Info) const {
   24|  29.8k|  if (ComplexDeprecationInfo)
  ------------------
  |  Branch (24:7): [True: 431, False: 29.3k]
  ------------------
   25|    431|    return ComplexDeprecationInfo(MI, STI, Info);
   26|  29.3k|  if (DeprecatedFeature != -1 && STI.getFeatureBits()[DeprecatedFeature]) {
  ------------------
  |  Branch (26:7): [True: 49, False: 29.3k]
  |  Branch (26:7): [True: 1, False: 29.3k]
  |  Branch (26:34): [True: 1, False: 48]
  ------------------
   27|       |    // FIXME: it would be nice to include the subtarget feature here.
   28|      1|    Info = "deprecated";
   29|      1|    return true;
   30|      1|  }
   31|  29.3k|  return false;
   32|  29.3k|}

_ZN7llvm_ks16MCObjectFileInfo23initELFMCObjectFileInfoENS_6TripleE:
  267|  20.9k|void MCObjectFileInfo::initELFMCObjectFileInfo(Triple T) {
  268|  20.9k|  switch (T.getArch()) {
  269|      0|  case Triple::mips:
  ------------------
  |  Branch (269:3): [True: 0, False: 20.9k]
  ------------------
  270|      0|  case Triple::mipsel:
  ------------------
  |  Branch (270:3): [True: 0, False: 20.9k]
  ------------------
  271|      0|    FDECFIEncoding = dwarf::DW_EH_PE_sdata4;
  272|      0|    break;
  273|      0|  case Triple::mips64:
  ------------------
  |  Branch (273:3): [True: 0, False: 20.9k]
  ------------------
  274|      0|  case Triple::mips64el:
  ------------------
  |  Branch (274:3): [True: 0, False: 20.9k]
  ------------------
  275|      0|    FDECFIEncoding = dwarf::DW_EH_PE_sdata8;
  276|      0|    break;
  277|      0|  case Triple::x86_64:
  ------------------
  |  Branch (277:3): [True: 0, False: 20.9k]
  ------------------
  278|      0|    break;
  279|  20.9k|  default:
  ------------------
  |  Branch (279:3): [True: 20.9k, False: 0]
  ------------------
  280|  20.9k|    FDECFIEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
  281|  20.9k|    break;
  282|  20.9k|  }
  283|       |
  284|  20.9k|  switch (T.getArch()) {
  285|  20.9k|  case Triple::arm:
  ------------------
  |  Branch (285:3): [True: 20.9k, False: 0]
  ------------------
  286|  20.9k|  case Triple::armeb:
  ------------------
  |  Branch (286:3): [True: 0, False: 20.9k]
  ------------------
  287|  20.9k|  case Triple::thumb:
  ------------------
  |  Branch (287:3): [True: 0, False: 20.9k]
  ------------------
  288|  20.9k|  case Triple::thumbeb:
  ------------------
  |  Branch (288:3): [True: 0, False: 20.9k]
  ------------------
  289|  20.9k|    if (Ctx->getAsmInfo()->getExceptionHandlingType() == ExceptionHandling::ARM)
  ------------------
  |  Branch (289:9): [True: 20.9k, False: 0]
  ------------------
  290|  20.9k|      break;
  291|       |    // Fallthrough if not using EHABI
  292|      0|  case Triple::ppc:
  ------------------
  |  Branch (292:3): [True: 0, False: 20.9k]
  ------------------
  293|      0|  case Triple::x86:
  ------------------
  |  Branch (293:3): [True: 0, False: 20.9k]
  ------------------
  294|      0|    break;
  295|      0|  case Triple::x86_64:
  ------------------
  |  Branch (295:3): [True: 0, False: 20.9k]
  ------------------
  296|      0|    break;
  297|      0|  case Triple::aarch64:
  ------------------
  |  Branch (297:3): [True: 0, False: 20.9k]
  ------------------
  298|      0|  case Triple::aarch64_be:
  ------------------
  |  Branch (298:3): [True: 0, False: 20.9k]
  ------------------
  299|       |    // The small model guarantees static code/data size < 4GB, but not where it
  300|       |    // will be in memory. Most of these could end up >2GB away so even a signed
  301|       |    // pc-relative 32-bit address is insufficient, theoretically.
  302|      0|    break;
  303|      0|  case Triple::mips:
  ------------------
  |  Branch (303:3): [True: 0, False: 20.9k]
  ------------------
  304|      0|  case Triple::mipsel:
  ------------------
  |  Branch (304:3): [True: 0, False: 20.9k]
  ------------------
  305|      0|  case Triple::mips64:
  ------------------
  |  Branch (305:3): [True: 0, False: 20.9k]
  ------------------
  306|      0|  case Triple::mips64el:
  ------------------
  |  Branch (306:3): [True: 0, False: 20.9k]
  ------------------
  307|       |    // MIPS uses indirect pointer to refer personality functions and types, so
  308|       |    // that the eh_frame section can be read-only. DW.ref.personality will be
  309|       |    // generated for relocation.
  310|      0|    PersonalityEncoding = dwarf::DW_EH_PE_indirect;
  311|       |    // FIXME: The N64 ABI probably ought to use DW_EH_PE_sdata8 but we can't
  312|       |    //        identify N64 from just a triple.
  313|      0|    TTypeEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel |
  314|      0|                    dwarf::DW_EH_PE_sdata4;
  315|       |    // We don't support PC-relative LSDA references in GAS so we use the default
  316|       |    // DW_EH_PE_absptr for those.
  317|      0|    break;
  318|      0|  case Triple::ppc64:
  ------------------
  |  Branch (318:3): [True: 0, False: 20.9k]
  ------------------
  319|      0|  case Triple::ppc64le:
  ------------------
  |  Branch (319:3): [True: 0, False: 20.9k]
  ------------------
  320|      0|    PersonalityEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel |
  321|      0|      dwarf::DW_EH_PE_udata8;
  322|      0|    LSDAEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_udata8;
  323|      0|    TTypeEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel |
  324|      0|      dwarf::DW_EH_PE_udata8;
  325|      0|    break;
  326|      0|  case Triple::sparcel:
  ------------------
  |  Branch (326:3): [True: 0, False: 20.9k]
  ------------------
  327|      0|  case Triple::sparc:
  ------------------
  |  Branch (327:3): [True: 0, False: 20.9k]
  ------------------
  328|      0|    break;
  329|      0|  case Triple::sparcv9:
  ------------------
  |  Branch (329:3): [True: 0, False: 20.9k]
  ------------------
  330|      0|    LSDAEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4;
  331|      0|    break;
  332|      0|  case Triple::systemz:
  ------------------
  |  Branch (332:3): [True: 0, False: 20.9k]
  ------------------
  333|       |    // All currently-defined code models guarantee that 4-byte PC-relative
  334|       |    // values will be in range.
  335|      0|    break;
  336|      0|  default:
  ------------------
  |  Branch (336:3): [True: 0, False: 20.9k]
  ------------------
  337|      0|    break;
  338|  20.9k|  }
  339|       |
  340|  20.9k|  unsigned EHSectionType = T.getArch() == Triple::x86_64
  ------------------
  |  Branch (340:28): [True: 0, False: 20.9k]
  ------------------
  341|  20.9k|                               ? ELF::SHT_X86_64_UNWIND
  342|  20.9k|                               : ELF::SHT_PROGBITS;
  343|       |
  344|       |  // Solaris requires different flags for .eh_frame to seemingly every other
  345|       |  // platform.
  346|  20.9k|  unsigned EHSectionFlags = ELF::SHF_ALLOC;
  347|  20.9k|  if (T.isOSSolaris() && T.getArch() != Triple::x86_64)
  ------------------
  |  Branch (347:7): [True: 0, False: 20.9k]
  |  Branch (347:26): [True: 0, False: 0]
  ------------------
  348|      0|    EHSectionFlags |= ELF::SHF_WRITE;
  349|       |
  350|       |  // ELF
  351|  20.9k|  BSSSection = Ctx->getELFSection(".bss", ELF::SHT_NOBITS,
  352|  20.9k|                                  ELF::SHF_WRITE | ELF::SHF_ALLOC);
  353|       |
  354|  20.9k|  TextSection = Ctx->getELFSection(".text", ELF::SHT_PROGBITS,
  355|  20.9k|                                   ELF::SHF_EXECINSTR | ELF::SHF_ALLOC);
  356|       |
  357|  20.9k|  DataSection = Ctx->getELFSection(".data", ELF::SHT_PROGBITS,
  358|  20.9k|                                   ELF::SHF_WRITE | ELF::SHF_ALLOC);
  359|       |
  360|  20.9k|  ReadOnlySection =
  361|  20.9k|      Ctx->getELFSection(".rodata", ELF::SHT_PROGBITS, ELF::SHF_ALLOC);
  362|       |
  363|  20.9k|  TLSDataSection =
  364|  20.9k|      Ctx->getELFSection(".tdata", ELF::SHT_PROGBITS,
  365|  20.9k|                         ELF::SHF_ALLOC | ELF::SHF_TLS | ELF::SHF_WRITE);
  366|       |
  367|  20.9k|  TLSBSSSection = Ctx->getELFSection(
  368|  20.9k|      ".tbss", ELF::SHT_NOBITS, ELF::SHF_ALLOC | ELF::SHF_TLS | ELF::SHF_WRITE);
  369|       |
  370|  20.9k|  DataRelROSection = Ctx->getELFSection(".data.rel.ro", ELF::SHT_PROGBITS,
  371|  20.9k|                                        ELF::SHF_ALLOC | ELF::SHF_WRITE);
  372|       |
  373|  20.9k|  MergeableConst4Section =
  374|  20.9k|      Ctx->getELFSection(".rodata.cst4", ELF::SHT_PROGBITS,
  375|  20.9k|                         ELF::SHF_ALLOC | ELF::SHF_MERGE, 4, "");
  376|       |
  377|  20.9k|  MergeableConst8Section =
  378|  20.9k|      Ctx->getELFSection(".rodata.cst8", ELF::SHT_PROGBITS,
  379|  20.9k|                         ELF::SHF_ALLOC | ELF::SHF_MERGE, 8, "");
  380|       |
  381|  20.9k|  MergeableConst16Section =
  382|  20.9k|      Ctx->getELFSection(".rodata.cst16", ELF::SHT_PROGBITS,
  383|  20.9k|                         ELF::SHF_ALLOC | ELF::SHF_MERGE, 16, "");
  384|       |
  385|  20.9k|  StaticCtorSection = Ctx->getELFSection(".ctors", ELF::SHT_PROGBITS,
  386|  20.9k|                                         ELF::SHF_ALLOC | ELF::SHF_WRITE);
  387|       |
  388|  20.9k|  StaticDtorSection = Ctx->getELFSection(".dtors", ELF::SHT_PROGBITS,
  389|  20.9k|                                         ELF::SHF_ALLOC | ELF::SHF_WRITE);
  390|       |
  391|       |  // Exception Handling Sections.
  392|       |
  393|       |  // FIXME: We're emitting LSDA info into a readonly section on ELF, even though
  394|       |  // it contains relocatable pointers.  In PIC mode, this is probably a big
  395|       |  // runtime hit for C++ apps.  Either the contents of the LSDA need to be
  396|       |  // adjusted or this should be a data section.
  397|  20.9k|  LSDASection = Ctx->getELFSection(".gcc_except_table", ELF::SHT_PROGBITS,
  398|  20.9k|                                   ELF::SHF_ALLOC);
  399|       |
  400|  20.9k|  COFFDebugSymbolsSection = nullptr;
  401|  20.9k|  COFFDebugTypesSection = nullptr;
  402|       |
  403|       |  // Debug Info Sections.
  404|  20.9k|  DwarfAbbrevSection = Ctx->getELFSection(".debug_abbrev", ELF::SHT_PROGBITS, 0,
  405|  20.9k|                                          "section_abbrev");
  406|  20.9k|  DwarfInfoSection =
  407|  20.9k|      Ctx->getELFSection(".debug_info", ELF::SHT_PROGBITS, 0, "section_info");
  408|  20.9k|  DwarfLineSection = Ctx->getELFSection(".debug_line", ELF::SHT_PROGBITS, 0);
  409|  20.9k|  DwarfFrameSection = Ctx->getELFSection(".debug_frame", ELF::SHT_PROGBITS, 0);
  410|  20.9k|  DwarfPubNamesSection =
  411|  20.9k|      Ctx->getELFSection(".debug_pubnames", ELF::SHT_PROGBITS, 0);
  412|  20.9k|  DwarfPubTypesSection =
  413|  20.9k|      Ctx->getELFSection(".debug_pubtypes", ELF::SHT_PROGBITS, 0);
  414|  20.9k|  DwarfGnuPubNamesSection =
  415|  20.9k|      Ctx->getELFSection(".debug_gnu_pubnames", ELF::SHT_PROGBITS, 0);
  416|  20.9k|  DwarfGnuPubTypesSection =
  417|  20.9k|      Ctx->getELFSection(".debug_gnu_pubtypes", ELF::SHT_PROGBITS, 0);
  418|  20.9k|  DwarfStrSection =
  419|  20.9k|      Ctx->getELFSection(".debug_str", ELF::SHT_PROGBITS,
  420|  20.9k|                         ELF::SHF_MERGE | ELF::SHF_STRINGS, 1, "");
  421|  20.9k|  DwarfLocSection = Ctx->getELFSection(".debug_loc", ELF::SHT_PROGBITS, 0);
  422|  20.9k|  DwarfARangesSection =
  423|  20.9k|      Ctx->getELFSection(".debug_aranges", ELF::SHT_PROGBITS, 0);
  424|  20.9k|  DwarfRangesSection =
  425|  20.9k|      Ctx->getELFSection(".debug_ranges", ELF::SHT_PROGBITS, 0, "debug_range");
  426|  20.9k|  DwarfMacinfoSection = Ctx->getELFSection(".debug_macinfo", ELF::SHT_PROGBITS,
  427|  20.9k|                                           0, "debug_macinfo");
  428|       |
  429|       |  // DWARF5 Experimental Debug Info
  430|       |
  431|       |  // Accelerator Tables
  432|  20.9k|  DwarfAccelNamesSection =
  433|  20.9k|      Ctx->getELFSection(".apple_names", ELF::SHT_PROGBITS, 0, "names_begin");
  434|  20.9k|  DwarfAccelObjCSection =
  435|  20.9k|      Ctx->getELFSection(".apple_objc", ELF::SHT_PROGBITS, 0, "objc_begin");
  436|  20.9k|  DwarfAccelNamespaceSection = Ctx->getELFSection(
  437|  20.9k|      ".apple_namespaces", ELF::SHT_PROGBITS, 0, "namespac_begin");
  438|  20.9k|  DwarfAccelTypesSection =
  439|  20.9k|      Ctx->getELFSection(".apple_types", ELF::SHT_PROGBITS, 0, "types_begin");
  440|       |
  441|       |  // Fission Sections
  442|  20.9k|  DwarfInfoDWOSection =
  443|  20.9k|      Ctx->getELFSection(".debug_info.dwo", ELF::SHT_PROGBITS, 0);
  444|  20.9k|  DwarfTypesDWOSection =
  445|  20.9k|      Ctx->getELFSection(".debug_types.dwo", ELF::SHT_PROGBITS, 0);
  446|  20.9k|  DwarfAbbrevDWOSection =
  447|  20.9k|      Ctx->getELFSection(".debug_abbrev.dwo", ELF::SHT_PROGBITS, 0);
  448|  20.9k|  DwarfStrDWOSection =
  449|  20.9k|      Ctx->getELFSection(".debug_str.dwo", ELF::SHT_PROGBITS,
  450|  20.9k|                         ELF::SHF_MERGE | ELF::SHF_STRINGS, 1, "");
  451|  20.9k|  DwarfLineDWOSection =
  452|  20.9k|      Ctx->getELFSection(".debug_line.dwo", ELF::SHT_PROGBITS, 0);
  453|  20.9k|  DwarfLocDWOSection =
  454|  20.9k|      Ctx->getELFSection(".debug_loc.dwo", ELF::SHT_PROGBITS, 0, "skel_loc");
  455|  20.9k|  DwarfStrOffDWOSection =
  456|  20.9k|      Ctx->getELFSection(".debug_str_offsets.dwo", ELF::SHT_PROGBITS, 0);
  457|  20.9k|  DwarfAddrSection =
  458|  20.9k|      Ctx->getELFSection(".debug_addr", ELF::SHT_PROGBITS, 0, "addr_sec");
  459|       |
  460|       |  // DWP Sections
  461|  20.9k|  DwarfCUIndexSection =
  462|  20.9k|      Ctx->getELFSection(".debug_cu_index", ELF::SHT_PROGBITS, 0);
  463|  20.9k|  DwarfTUIndexSection =
  464|  20.9k|      Ctx->getELFSection(".debug_tu_index", ELF::SHT_PROGBITS, 0);
  465|       |
  466|  20.9k|  StackMapSection =
  467|  20.9k|      Ctx->getELFSection(".llvm_stackmaps", ELF::SHT_PROGBITS, ELF::SHF_ALLOC);
  468|       |
  469|  20.9k|  FaultMapSection =
  470|  20.9k|      Ctx->getELFSection(".llvm_faultmaps", ELF::SHT_PROGBITS, ELF::SHF_ALLOC);
  471|       |
  472|  20.9k|  EHFrameSection =
  473|  20.9k|      Ctx->getELFSection(".eh_frame", EHSectionType, EHSectionFlags);
  474|  20.9k|}
_ZN7llvm_ks16MCObjectFileInfo20InitMCObjectFileInfoERKNS_6TripleERNS_9MCContextE:
  715|  20.9k|                                            MCContext &ctx) {
  716|  20.9k|  Ctx = &ctx;
  717|       |
  718|       |  // Common.
  719|  20.9k|  CommDirectiveSupportsAlignment = true;
  720|  20.9k|  SupportsWeakOmittedEHFrame = true;
  721|  20.9k|  SupportsCompactUnwindWithoutEHFrame = false;
  722|  20.9k|  OmitDwarfIfHaveCompactUnwind = false;
  723|       |
  724|  20.9k|  PersonalityEncoding = LSDAEncoding = FDECFIEncoding = TTypeEncoding =
  725|  20.9k|      dwarf::DW_EH_PE_absptr;
  726|       |
  727|  20.9k|  CompactUnwindDwarfEHFrameOnly = 0;
  728|       |
  729|  20.9k|  EHFrameSection = nullptr;             // Created on demand.
  730|  20.9k|  CompactUnwindSection = nullptr;       // Used only by selected targets.
  731|  20.9k|  DwarfAccelNamesSection = nullptr;     // Used only by selected targets.
  732|  20.9k|  DwarfAccelObjCSection = nullptr;      // Used only by selected targets.
  733|  20.9k|  DwarfAccelNamespaceSection = nullptr; // Used only by selected targets.
  734|  20.9k|  DwarfAccelTypesSection = nullptr;     // Used only by selected targets.
  735|       |
  736|  20.9k|  TT = TheTriple;
  737|       |
  738|  20.9k|  switch (TT.getObjectFormat()) {
  ------------------
  |  Branch (738:11): [True: 20.9k, False: 0]
  ------------------
  739|      0|  case Triple::MachO:
  ------------------
  |  Branch (739:3): [True: 0, False: 20.9k]
  ------------------
  740|      0|    Env = IsMachO;
  741|      0|    initMachOMCObjectFileInfo(TT);
  742|      0|    break;
  743|      0|  case Triple::COFF:
  ------------------
  |  Branch (743:3): [True: 0, False: 20.9k]
  ------------------
  744|      0|    if (!TT.isOSWindows())
  ------------------
  |  Branch (744:9): [True: 0, False: 0]
  ------------------
  745|      0|      report_fatal_error(
  746|      0|          "Cannot initialize MC for non-Windows COFF object files.");
  747|       |
  748|      0|    Env = IsCOFF;
  749|      0|    initCOFFMCObjectFileInfo(TT);
  750|      0|    break;
  751|  20.9k|  case Triple::ELF:
  ------------------
  |  Branch (751:3): [True: 20.9k, False: 0]
  ------------------
  752|  20.9k|    Env = IsELF;
  753|  20.9k|    initELFMCObjectFileInfo(TT);
  754|  20.9k|    break;
  755|      0|  case Triple::UnknownObjectFormat:
  ------------------
  |  Branch (755:3): [True: 0, False: 20.9k]
  ------------------
  756|      0|    report_fatal_error("Cannot initialize MC for unknown object file format.");
  757|      0|    break;
  758|  20.9k|  }
  759|  20.9k|}

_ZN7llvm_ks16MCObjectStreamerC2ERNS_9MCContextERNS_12MCAsmBackendERNS_17raw_pwrite_streamEPNS_13MCCodeEmitterE:
   32|  20.9k|    : MCStreamer(Context),
   33|  20.9k|      Assembler(new MCAssembler(Context, TAB, *Emitter_,
   34|  20.9k|                                *TAB.createObjectWriter(OS))),
   35|  20.9k|      EmitEHFrame(true), EmitDebugFrame(false) {}
_ZN7llvm_ks16MCObjectStreamerD2Ev:
   37|  20.9k|MCObjectStreamer::~MCObjectStreamer() {
   38|  20.9k|  delete &Assembler->getWriter();
   39|  20.9k|  delete Assembler;
   40|  20.9k|}
_ZN7llvm_ks16MCObjectStreamer18flushPendingLabelsEPNS_10MCFragmentEm:
   42|  76.9M|void MCObjectStreamer::flushPendingLabels(MCFragment *F, uint64_t FOffset) {
   43|  76.9M|  if (PendingLabels.empty())
  ------------------
  |  Branch (43:7): [True: 76.9M, False: 15.6k]
  ------------------
   44|  76.9M|    return;
   45|  15.6k|  if (!F) {
  ------------------
  |  Branch (45:7): [True: 5.53k, False: 10.1k]
  ------------------
   46|  5.53k|    F = new MCDataFragment();
   47|  5.53k|    MCSection *CurSection = getCurrentSectionOnly();
   48|  5.53k|    CurSection->getFragmentList().insert(CurInsertionPoint, F);
   49|  5.53k|    F->setParent(CurSection);
   50|  5.53k|  }
   51|  21.9k|  for (MCSymbol *Sym : PendingLabels) {
  ------------------
  |  Branch (51:22): [True: 21.9k, False: 15.6k]
  ------------------
   52|  21.9k|    Sym->setFragment(F);
   53|  21.9k|    Sym->setOffset(FOffset);
   54|  21.9k|  }
   55|  15.6k|  PendingLabels.clear();
   56|  15.6k|}
_ZN7llvm_ks16MCObjectStreamer10EmitFramesEPNS_12MCAsmBackendE:
   83|  8.98k|void MCObjectStreamer::EmitFrames(MCAsmBackend *MAB) {
   84|       |#if 0
   85|       |  if (!getNumFrameInfos())
   86|       |    return;
   87|       |
   88|       |  if (EmitEHFrame)
   89|       |    MCDwarfFrameEmitter::Emit(*this, MAB, true);
   90|       |
   91|       |  if (EmitDebugFrame)
   92|       |    MCDwarfFrameEmitter::Emit(*this, MAB, false);
   93|       |#endif
   94|  8.98k|}
_ZNK7llvm_ks16MCObjectStreamer18getCurrentFragmentEv:
   96|  77.7M|MCFragment *MCObjectStreamer::getCurrentFragment() const {
   97|  77.7M|  assert(getCurrentSectionOnly() && "No current section!");
  ------------------
  |  Branch (97:3): [True: 77.7M, False: 0]
  |  Branch (97:3): [True: 77.7M, Folded]
  |  Branch (97:3): [True: 77.7M, False: 0]
  ------------------
   98|       |
   99|  77.7M|  if (CurInsertionPoint != getCurrentSectionOnly()->getFragmentList().begin())
  ------------------
  |  Branch (99:7): [True: 77.1M, False: 577k]
  ------------------
  100|  77.1M|    return &*std::prev(CurInsertionPoint);
  101|       |
  102|   577k|  return nullptr;
  103|  77.7M|}
_ZN7llvm_ks16MCObjectStreamer23getOrCreateDataFragmentEv:
  105|  76.8M|MCDataFragment *MCObjectStreamer::getOrCreateDataFragment() {
  106|  76.8M|  MCDataFragment *F = dyn_cast_or_null<MCDataFragment>(getCurrentFragment());
  107|       |  // When bundling is enabled, we don't want to add data to a fragment that
  108|       |  // already has instructions (see MCELFStreamer::EmitInstToData for details)
  109|  76.8M|  if (!F || (Assembler->isBundlingEnabled() && !Assembler->getRelaxAll() &&
  ------------------
  |  Branch (109:7): [True: 12.9k, False: 76.8M]
  |  Branch (109:14): [True: 0, False: 76.8M]
  |  Branch (109:48): [True: 0, False: 0]
  ------------------
  110|  12.9k|             F->hasInstructions())) {
  ------------------
  |  Branch (110:14): [True: 0, False: 0]
  ------------------
  111|  12.9k|    F = new MCDataFragment();
  112|  12.9k|    insert(F);
  113|  12.9k|  }
  114|  76.8M|  return F;
  115|  76.8M|}
_ZN7llvm_ks16MCObjectStreamer15visitUsedSymbolERKNS_8MCSymbolE:
  117|   295k|void MCObjectStreamer::visitUsedSymbol(const MCSymbol &Sym) {
  118|   295k|  Assembler->registerSymbol(Sym);
  119|   295k|}
_ZN7llvm_ks16MCObjectStreamer13EmitValueImplEPKNS_6MCExprEjNS_5SMLocE:
  129|   148k|{
  130|   148k|  MCStreamer::EmitValueImpl(Value, Size, Loc);
  131|   148k|  MCDataFragment *DF = getOrCreateDataFragment();
  132|   148k|  flushPendingLabels(DF, DF->getContents().size());
  133|       |
  134|       |  // This makes the symbol's name (label) end up literally in the output stream
  135|       |  //if (Value->getKind() == MCExpr::SymbolRef) {
  136|       |  //    // Keystone: record data in the same section
  137|       |  //    const MCSymbolRefExpr &SRE = cast<MCSymbolRefExpr>(*Value);
  138|       |  //    const StringRef Sym = SRE.getSymbol().getName();
  139|       |  //    DF->getContents().append(Sym.begin(), Sym.end());
  140|       |  //
  141|       |  //    return;
  142|       |  //}
  143|       |
  144|       |  //MCCVLineEntry::Make(this);
  145|       |  //MCDwarfLineEntry::Make(this, getCurrentSection().first);
  146|       |
  147|       |  // Avoid fixups when possible.
  148|   148k|  int64_t AbsValue;
  149|   148k|  bool Error;
  150|   148k|  if (Value->evaluateAsAbsolute(AbsValue, getAssembler())) {
  ------------------
  |  Branch (150:7): [True: 45.0k, False: 103k]
  ------------------
  151|       |    // TODO: hande Error?
  152|  45.0k|    EmitIntValue(AbsValue, Size, Error);
  153|  45.0k|    return;
  154|  45.0k|  }
  155|   103k|  DF->getFixups().push_back(
  156|   103k|      MCFixup::create(DF->getContents().size(), Value,
  157|   103k|                      MCFixup::getKindForSize(Size, false), Loc));
  158|   103k|  DF->getContents().resize(DF->getContents().size() + Size, 0);
  159|   103k|}
_ZN7llvm_ks16MCObjectStreamer9EmitLabelEPNS_8MCSymbolE:
  172|   139k|void MCObjectStreamer::EmitLabel(MCSymbol *Symbol) {
  173|   139k|  MCStreamer::EmitLabel(Symbol);
  174|       |
  175|   139k|  getAssembler().registerSymbol(*Symbol);
  176|       |
  177|       |  // If there is a current fragment, mark the symbol as pointing into it.
  178|       |  // Otherwise queue the label and set its fragment pointer when we emit the
  179|       |  // next fragment.
  180|   139k|  auto *F = dyn_cast_or_null<MCDataFragment>(getCurrentFragment());
  181|   139k|  if (F && !(getAssembler().isBundlingEnabled() &&
  ------------------
  |  Branch (181:7): [True: 98.4k, False: 41.1k]
  |  Branch (181:14): [True: 0, False: 98.4k]
  ------------------
  182|  98.4k|             getAssembler().getRelaxAll())) {
  ------------------
  |  Branch (182:14): [True: 0, False: 0]
  ------------------
  183|  98.4k|    Symbol->setFragment(F);
  184|  98.4k|    Symbol->setOffset(F->getContents().size());
  185|  98.4k|  } else {
  186|  41.1k|    PendingLabels.push_back(Symbol);
  187|  41.1k|  }
  188|   139k|}
_ZN7llvm_ks16MCObjectStreamer13ChangeSectionEPNS_9MCSectionEPKNS_6MCExprE:
  214|  21.8k|                                     const MCExpr *Subsection) {
  215|  21.8k|  changeSectionImpl(Section, Subsection);
  216|  21.8k|}
_ZN7llvm_ks16MCObjectStreamer17changeSectionImplEPNS_9MCSectionEPKNS_6MCExprE:
  219|  21.8k|                                         const MCExpr *Subsection) {
  220|  21.8k|  assert(Section && "Cannot switch to a null section!");
  ------------------
  |  Branch (220:3): [True: 21.8k, False: 0]
  |  Branch (220:3): [True: 21.8k, Folded]
  |  Branch (220:3): [True: 21.8k, False: 0]
  ------------------
  221|  21.8k|  flushPendingLabels(nullptr);
  222|       |
  223|  21.8k|  bool Created = getAssembler().registerSection(*Section);
  224|       |
  225|  21.8k|  int64_t IntSubsection = 0;
  226|  21.8k|  if (Subsection &&
  ------------------
  |  Branch (226:7): [True: 0, False: 21.8k]
  ------------------
  227|      0|      !Subsection->evaluateAsAbsolute(IntSubsection, getAssembler()))
  ------------------
  |  Branch (227:7): [True: 0, False: 0]
  ------------------
  228|      0|    report_fatal_error("Cannot evaluate subsection number");
  229|  21.8k|  if (IntSubsection < 0 || IntSubsection > 8192)
  ------------------
  |  Branch (229:7): [True: 0, False: 21.8k]
  |  Branch (229:28): [True: 0, False: 21.8k]
  ------------------
  230|      0|    report_fatal_error("Subsection number out of range");
  231|  21.8k|  CurInsertionPoint =
  232|  21.8k|      Section->getSubsectionInsertionPoint(unsigned(IntSubsection));
  233|  21.8k|  return Created;
  234|  21.8k|}
_ZN7llvm_ks16MCObjectStreamer14EmitAssignmentEPNS_8MCSymbolEPKNS_6MCExprE:
  236|  99.0k|bool MCObjectStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
  237|  99.0k|  getAssembler().registerSymbol(*Symbol);
  238|  99.0k|  return MCStreamer::EmitAssignment(Symbol, Value);
  239|  99.0k|}
_ZN7llvm_ks16MCObjectStreamer15EmitInstructionERNS_6MCInstERKNS_15MCSubtargetInfoERj:
  248|  29.3k|{
  249|  29.3k|  MCStreamer::EmitInstruction(Inst, STI, KsError);
  250|       |
  251|  29.3k|  MCSection *Sec = getCurrentSectionOnly();
  252|  29.3k|  Sec->setHasInstructions(true);
  253|       |
  254|       |  // Now that a machine instruction has been assembled into this section, make
  255|       |  // a line entry for any .loc directive that has been seen.
  256|       |  //MCCVLineEntry::Make(this);
  257|       |  //MCDwarfLineEntry::Make(this, getCurrentSection().first);
  258|       |
  259|       |  // If this instruction doesn't need relaxation, just emit it as data.
  260|  29.3k|  MCAssembler &Assembler = getAssembler();
  261|  29.3k|  if (!Assembler.getBackend().mayNeedRelaxation(Inst)) {
  ------------------
  |  Branch (261:7): [True: 26.6k, False: 2.66k]
  ------------------
  262|  26.6k|    EmitInstToData(Inst, STI, KsError);
  263|  26.6k|    return;
  264|  26.6k|  }
  265|       |
  266|       |  // Otherwise, relax and emit it as data if either:
  267|       |  // - The RelaxAll flag was passed
  268|       |  // - Bundling is enabled and this instruction is inside a bundle-locked
  269|       |  //   group. We want to emit all such instructions into the same data
  270|       |  //   fragment.
  271|  2.66k|  if (Assembler.getRelaxAll() ||
  ------------------
  |  Branch (271:7): [True: 0, False: 2.66k]
  ------------------
  272|  2.66k|      (Assembler.isBundlingEnabled() && Sec->isBundleLocked())) {
  ------------------
  |  Branch (272:8): [True: 0, False: 2.66k]
  |  Branch (272:41): [True: 0, False: 0]
  ------------------
  273|      0|    MCInst Relaxed(Inst.getAddress());
  274|      0|    getAssembler().getBackend().relaxInstruction(Inst, Relaxed);
  275|      0|    while (getAssembler().getBackend().mayNeedRelaxation(Relaxed))
  ------------------
  |  Branch (275:12): [True: 0, False: 0]
  ------------------
  276|      0|      getAssembler().getBackend().relaxInstruction(Relaxed, Relaxed);
  277|      0|    EmitInstToData(Relaxed, STI, KsError);
  278|      0|    return;
  279|      0|  }
  280|       |
  281|       |  // Otherwise emit to a separate fragment.
  282|  2.66k|  EmitInstToFragment(Inst, STI);
  283|  2.66k|}
_ZN7llvm_ks16MCObjectStreamer18EmitInstToFragmentERNS_6MCInstERKNS_15MCSubtargetInfoE:
  287|  2.66k|{
  288|  2.66k|  if (getAssembler().getRelaxAll() && getAssembler().isBundlingEnabled())
  ------------------
  |  Branch (288:7): [True: 0, False: 2.66k]
  |  Branch (288:39): [True: 0, False: 0]
  ------------------
  289|      0|    llvm_unreachable("All instructions should have already been relaxed");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  290|       |
  291|       |  // Always create a new, separate fragment here, because its size can change
  292|       |  // during relaxation.
  293|  2.66k|  MCRelaxableFragment *IF = new MCRelaxableFragment(Inst, STI);
  294|  2.66k|  insert(IF);
  295|       |
  296|  2.66k|  SmallString<128> Code;
  297|  2.66k|  raw_svector_ostream VecOS(Code);
  298|  2.66k|  unsigned int KsError;
  299|  2.66k|  getAssembler().getEmitter().encodeInstruction(Inst, VecOS, IF->getFixups(),
  300|  2.66k|                                                STI, KsError);
  301|  2.66k|  IF->getContents().append(Code.begin(), Code.end());
  302|  2.66k|}
_ZN7llvm_ks16MCObjectStreamer9EmitBytesENS_9StringRefE:
  428|  76.7M|void MCObjectStreamer::EmitBytes(StringRef Data) {
  429|       |  //MCCVLineEntry::Make(this);
  430|       |  //MCDwarfLineEntry::Make(this, getCurrentSection().first);
  431|  76.7M|  MCDataFragment *DF = getOrCreateDataFragment();
  432|  76.7M|  flushPendingLabels(DF, DF->getContents().size());
  433|  76.7M|  DF->getContents().append(Data.begin(), Data.end());
  434|  76.7M|}
_ZN7llvm_ks16MCObjectStreamer20EmitValueToAlignmentEjljj:
  439|  10.6k|                                            unsigned MaxBytesToEmit) {
  440|  10.6k|  if (MaxBytesToEmit == 0)
  ------------------
  |  Branch (440:7): [True: 10.2k, False: 451]
  ------------------
  441|  10.2k|    MaxBytesToEmit = ByteAlignment;
  442|  10.6k|  insert(new MCAlignFragment(ByteAlignment, Value, ValueSize, MaxBytesToEmit));
  443|       |
  444|       |  // Update the maximum alignment on the current section if necessary.
  445|  10.6k|  MCSection *CurSec = getCurrentSection().first;
  446|  10.6k|  if (ByteAlignment > CurSec->getAlignment())
  ------------------
  |  Branch (446:7): [True: 510, False: 10.1k]
  ------------------
  447|    510|    CurSec->setAlignment(ByteAlignment);
  448|  10.6k|}
_ZN7llvm_ks16MCObjectStreamer17EmitCodeAlignmentEjj:
  451|  4.08k|                                         unsigned MaxBytesToEmit) {
  452|  4.08k|  EmitValueToAlignment(ByteAlignment, 0, 1, MaxBytesToEmit);
  453|  4.08k|  cast<MCAlignFragment>(getCurrentFragment())->setEmitNops(true);
  454|  4.08k|}
_ZN7llvm_ks16MCObjectStreamer17emitValueToOffsetEPKNS_6MCExprEh:
  457|  21.7k|                                         unsigned char Value) {
  458|  21.7k|  insert(new MCOrgFragment(*Offset, Value));
  459|  21.7k|}
_ZN7llvm_ks16MCObjectStreamer18EmitRelocDirectiveERKNS_6MCExprENS_9StringRefEPS2_NS_5SMLocE:
  482|    562|                                          const MCExpr *Expr, SMLoc Loc) {
  483|    562|  int64_t OffsetValue;
  484|    562|  if (!Offset.evaluateAsAbsolute(OffsetValue))
  ------------------
  |  Branch (484:7): [True: 0, False: 562]
  ------------------
  485|      0|    llvm_unreachable("Offset is not absolute");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  486|       |
  487|    562|  if (OffsetValue < 0)
  ------------------
  |  Branch (487:7): [True: 0, False: 562]
  ------------------
  488|      0|    llvm_unreachable("Offset is negative");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  489|       |
  490|    562|  MCDataFragment *DF = getOrCreateDataFragment();
  491|    562|  flushPendingLabels(DF, DF->getContents().size());
  492|       |
  493|    562|  Optional<MCFixupKind> MaybeKind = Assembler->getBackend().getFixupKind(Name);
  494|    562|  if (!MaybeKind.hasValue())
  ------------------
  |  Branch (494:7): [True: 562, False: 0]
  ------------------
  495|    562|    return true;
  496|       |
  497|      0|  MCFixupKind Kind = *MaybeKind;
  498|       |
  499|      0|  if (Expr == nullptr)
  ------------------
  |  Branch (499:7): [True: 0, False: 0]
  ------------------
  500|      0|    Expr =
  501|      0|        MCSymbolRefExpr::create(getContext().createTempSymbol(), getContext());
  502|      0|  DF->getFixups().push_back(MCFixup::create(OffsetValue, Expr, Kind, Loc));
  503|      0|  return false;
  504|    562|}
_ZN7llvm_ks16MCObjectStreamer8EmitFillEmh:
  506|  2.47k|void MCObjectStreamer::EmitFill(uint64_t NumBytes, uint8_t FillValue) {
  507|  2.47k|  const MCSection *Sec = getCurrentSection().first;
  508|  2.47k|  (void)Sec;
  509|  2.47k|  assert(Sec && "need a section");
  ------------------
  |  Branch (509:3): [True: 2.47k, False: 0]
  |  Branch (509:3): [True: 2.47k, Folded]
  |  Branch (509:3): [True: 2.47k, False: 0]
  ------------------
  510|  2.47k|  insert(new MCFillFragment(FillValue, NumBytes));
  511|  2.47k|}
_ZN7llvm_ks16MCObjectStreamer10FinishImplEv:
  514|  8.98k|{
  515|  8.98k|  unsigned int KsError = 0;
  516|       |  // If we are generating dwarf for assembly source files dump out the sections.
  517|       |  //if (getContext().getGenDwarfForAssembly())
  518|       |  //  MCGenDwarfInfo::Emit(this);
  519|       |
  520|       |  // Dump out the dwarf file & directory tables and line tables.
  521|       |  //MCDwarfLineTable::Emit(this, getAssembler().getDWARFLinetableParams());
  522|       |
  523|  8.98k|  flushPendingLabels(nullptr);
  524|  8.98k|  getAssembler().setSymResolver(getSymResolver());
  525|  8.98k|  getAssembler().Finish(KsError);
  526|       |
  527|  8.98k|  return KsError;
  528|  8.98k|}
_ZN7llvm_ks16MCObjectStreamer22getCurrentFragmentSizeEv:
  530|   691k|uint64_t MCObjectStreamer::getCurrentFragmentSize() {
  531|   691k|  auto *F = dyn_cast_or_null<MCDataFragment>(getCurrentFragment());
  532|   691k|  if (nullptr != F)
  ------------------
  |  Branch (532:7): [True: 121k, False: 569k]
  ------------------
  533|   121k|      return F->getContents().size();
  534|   569k|  return 0;
  535|   691k|}

_ZN7llvm_ks14MCObjectWriterD2Ev:
   17|  20.9k|MCObjectWriter::~MCObjectWriter() {
   18|  20.9k|}
_ZNK7llvm_ks14MCObjectWriter34isSymbolRefDifferenceFullyResolvedERKNS_11MCAssemblerEPKNS_15MCSymbolRefExprES6_bRb:
   23|  22.3k|{
   24|  22.3k|  valid = true;
   25|       |  // Modified symbol references cannot be resolved.
   26|  22.3k|  if (A->getKind() != MCSymbolRefExpr::VK_None ||
  ------------------
  |  Branch (26:7): [True: 0, False: 22.3k]
  ------------------
   27|  22.3k|      B->getKind() != MCSymbolRefExpr::VK_None)
  ------------------
  |  Branch (27:7): [True: 6, False: 22.2k]
  ------------------
   28|      6|    return false;
   29|       |
   30|  22.2k|  const MCSymbol &SA = A->getSymbol();
   31|  22.2k|  const MCSymbol &SB = B->getSymbol();
   32|  22.2k|  if (SA.isUndefined() || SB.isUndefined())
  ------------------
  |  Branch (32:7): [True: 0, False: 22.2k]
  |  Branch (32:27): [True: 0, False: 22.2k]
  ------------------
   33|      0|    return false;
   34|       |
   35|  22.2k|  if (!SA.getFragment() || !SB.getFragment())
  ------------------
  |  Branch (35:7): [True: 0, False: 22.2k]
  |  Branch (35:28): [True: 0, False: 22.2k]
  ------------------
   36|      0|    return false;
   37|       |
   38|  22.2k|  if (!SA.isInSection()) {
  ------------------
  |  Branch (38:7): [True: 80, False: 22.2k]
  ------------------
   39|     80|      valid = false;
   40|     80|      return false;
   41|     80|  }
   42|  22.2k|  return isSymbolRefDifferenceFullyResolvedImpl(Asm, SA, SB, InSet);
   43|  22.2k|}
_ZNK7llvm_ks14MCObjectWriter38isSymbolRefDifferenceFullyResolvedImplERKNS_11MCAssemblerERKNS_8MCSymbolES6_b:
   47|  22.2k|    bool InSet) const {
   48|  22.2k|  return isSymbolRefDifferenceFullyResolvedImpl(Asm, A, *B.getFragment(), InSet,
   49|  22.2k|                                                false);
   50|  22.2k|}
_ZNK7llvm_ks14MCObjectWriter38isSymbolRefDifferenceFullyResolvedImplERKNS_11MCAssemblerERKNS_8MCSymbolERKNS_10MCFragmentEbb:
   54|  25.7k|    bool InSet, bool IsPCRel) const {
   55|  25.7k|  const MCSection &SecA = SymA.getSection();
   56|  25.7k|  const MCSection &SecB = *FB.getParent();
   57|       |  // On ELF and COFF  A - B is absolute if A and B are in the same section.
   58|  25.7k|  return &SecA == &SecB;
   59|  25.7k|}

_ZN7llvm_ks8AsmLexerC2ERKNS_9MCAsmInfoE:
   24|  20.9k|AsmLexer::AsmLexer(const MCAsmInfo &MAI) : MAI(MAI) {
   25|  20.9k|  CurPtr = nullptr;
   26|  20.9k|  isAtStartOfLine = true;
   27|  20.9k|  AllowAtInIdentifier = !StringRef(MAI.getCommentString()).startswith("@");
   28|  20.9k|  defaultRadix = MAI.getRadix();
   29|  20.9k|}
_ZN7llvm_ks8AsmLexerD2Ev:
   31|  20.9k|AsmLexer::~AsmLexer() {
   32|  20.9k|}
_ZN7llvm_ks8AsmLexer9setBufferENS_9StringRefEPKc:
   34|   123k|void AsmLexer::setBuffer(StringRef Buf, const char *ptr) {
   35|   123k|  CurBuf = Buf;
   36|       |
   37|   123k|  if (ptr)
  ------------------
  |  Branch (37:7): [True: 51.0k, False: 72.0k]
  ------------------
   38|  51.0k|    CurPtr = ptr;
   39|  72.0k|  else
   40|  72.0k|    CurPtr = CurBuf.begin();
   41|       |
   42|   123k|  TokStart = nullptr;
   43|   123k|}
_ZN7llvm_ks8AsmLexer11ReturnErrorEPKcRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE:
   48|  1.46M|{
   49|       |  //SetError(SMLoc::getFromPointer(Loc), Msg);
   50|       |
   51|  1.46M|  return AsmToken(AsmToken::Error, StringRef(Loc, 0));
   52|  1.46M|}
_ZN7llvm_ks8AsmLexer11getNextCharEv:
   54|  17.8M|int AsmLexer::getNextChar() {
   55|  17.8M|  char CurChar = *CurPtr++;
   56|  17.8M|  switch (CurChar) {
   57|  17.8M|  default:
  ------------------
  |  Branch (57:3): [True: 17.8M, False: 36.8k]
  ------------------
   58|  17.8M|    return (unsigned char)CurChar;
   59|  36.8k|  case 0:
  ------------------
  |  Branch (59:3): [True: 36.8k, False: 17.8M]
  ------------------
   60|       |    // A nul character in the stream is either the end of the current buffer or
   61|       |    // a random nul in the file.  Disambiguate that here.
   62|  36.8k|    if (CurPtr - 1 != CurBuf.end())
  ------------------
  |  Branch (62:9): [True: 0, False: 36.8k]
  ------------------
   63|      0|      return 0;  // Just whitespace.
   64|       |
   65|       |    // Otherwise, return end of file.
   66|  36.8k|    --CurPtr;  // Another call to lex will return EOF again.
   67|       |    return EOF;
   68|  17.8M|  }
   69|  17.8M|}
_ZN7llvm_ks8AsmLexer15LexFloatLiteralEv:
   76|  66.4k|AsmToken AsmLexer::LexFloatLiteral() {
   77|       |  // Skip the fractional digit sequence.
   78|  66.4k|  while (isdigit(*CurPtr))
  ------------------
  |  Branch (78:10): [True: 0, False: 66.4k]
  ------------------
   79|      0|    ++CurPtr;
   80|       |
   81|       |  // Check for exponent; we intentionally accept a slighlty wider set of
   82|       |  // literals here and rely on the upstream client to reject invalid ones (e.g.,
   83|       |  // "1e+").
   84|  66.4k|  if (*CurPtr == 'e' || *CurPtr == 'E') {
  ------------------
  |  Branch (84:7): [True: 1.81k, False: 64.6k]
  |  Branch (84:25): [True: 4.50k, False: 60.1k]
  ------------------
   85|  6.31k|    ++CurPtr;
   86|  6.31k|    if (*CurPtr == '-' || *CurPtr == '+')
  ------------------
  |  Branch (86:9): [True: 1.57k, False: 4.73k]
  |  Branch (86:27): [True: 283, False: 4.45k]
  ------------------
   87|  1.85k|      ++CurPtr;
   88|  23.6k|    while (isdigit(*CurPtr))
  ------------------
  |  Branch (88:12): [True: 17.2k, False: 6.31k]
  ------------------
   89|  17.2k|      ++CurPtr;
   90|  6.31k|  }
   91|       |
   92|  66.4k|  return AsmToken(AsmToken::Real,
   93|  66.4k|                  StringRef(TokStart, CurPtr - TokStart));
   94|  66.4k|}
_ZN7llvm_ks8AsmLexer18LexHexFloatLiteralEb:
  103|  24.6k|{
  104|  24.6k|  assert((*CurPtr == 'p' || *CurPtr == 'P' || *CurPtr == '.') &&
  ------------------
  |  Branch (104:3): [True: 3.23k, False: 21.4k]
  |  Branch (104:3): [True: 11.0k, False: 10.3k]
  |  Branch (104:3): [True: 10.3k, False: 0]
  |  Branch (104:3): [True: 24.6k, Folded]
  |  Branch (104:3): [True: 24.6k, False: 0]
  ------------------
  105|  24.6k|         "unexpected parse state in floating hex");
  106|  24.6k|  bool NoFracDigits = true;
  107|       |
  108|       |  // Skip the fractional part if there is one
  109|  24.6k|  if (*CurPtr == '.') {
  ------------------
  |  Branch (109:7): [True: 10.3k, False: 14.2k]
  ------------------
  110|  10.3k|    ++CurPtr;
  111|       |
  112|  10.3k|    const char *FracStart = CurPtr;
  113|  29.5k|    while (isxdigit(*CurPtr))
  ------------------
  |  Branch (113:12): [True: 19.1k, False: 10.3k]
  ------------------
  114|  19.1k|      ++CurPtr;
  115|       |
  116|  10.3k|    NoFracDigits = CurPtr == FracStart;
  117|  10.3k|  }
  118|       |
  119|  24.6k|  if (NoIntDigits && NoFracDigits)
  ------------------
  |  Branch (119:7): [True: 12.1k, False: 12.5k]
  |  Branch (119:22): [True: 2.53k, False: 9.57k]
  ------------------
  120|  2.53k|    return ReturnError(TokStart, "invalid hexadecimal floating-point constant: "
  121|  2.53k|                                 "expected at least one significand digit");
  122|       |
  123|       |  // Make sure we do have some kind of proper exponent part
  124|  22.1k|  if (*CurPtr != 'p' && *CurPtr != 'P')
  ------------------
  |  Branch (124:7): [True: 18.7k, False: 3.38k]
  |  Branch (124:25): [True: 355, False: 18.3k]
  ------------------
  125|    355|    return ReturnError(TokStart, "invalid hexadecimal floating-point constant: "
  126|    355|                                 "expected exponent part 'p'");
  127|  21.7k|  ++CurPtr;
  128|       |
  129|  21.7k|  if (*CurPtr == '+' || *CurPtr == '-')
  ------------------
  |  Branch (129:7): [True: 2.62k, False: 19.1k]
  |  Branch (129:25): [True: 1.62k, False: 17.5k]
  ------------------
  130|  4.24k|    ++CurPtr;
  131|       |
  132|       |  // N.b. exponent digits are *not* hex
  133|  21.7k|  const char *ExpStart = CurPtr;
  134|  60.5k|  while (isdigit(*CurPtr))
  ------------------
  |  Branch (134:10): [True: 38.7k, False: 21.7k]
  ------------------
  135|  38.7k|    ++CurPtr;
  136|       |
  137|  21.7k|  if (CurPtr == ExpStart)
  ------------------
  |  Branch (137:7): [True: 1.71k, False: 20.0k]
  ------------------
  138|  1.71k|    return ReturnError(TokStart, "invalid hexadecimal floating-point constant: "
  139|  1.71k|                                 "expected at least one exponent digit");
  140|       |
  141|  20.0k|  return AsmToken(AsmToken::Real, StringRef(TokStart, CurPtr - TokStart));
  142|  21.7k|}
_ZN7llvm_ks8AsmLexer13LexIdentifierEv:
  149|  2.42M|AsmToken AsmLexer::LexIdentifier() {
  150|       |  // Check for floating point literals.
  151|  2.42M|  if (CurPtr[-1] == '.' && isdigit(*CurPtr)) {
  ------------------
  |  Branch (151:7): [True: 1.23M, False: 1.19M]
  |  Branch (151:28): [True: 93.6k, False: 1.14M]
  ------------------
  152|       |    // Disambiguate a .1243foo identifier from a floating literal.
  153|   593k|    while (isdigit(*CurPtr))
  ------------------
  |  Branch (153:12): [True: 499k, False: 93.6k]
  ------------------
  154|   499k|      ++CurPtr;
  155|  93.6k|    if (*CurPtr == 'e' || *CurPtr == 'E' ||
  ------------------
  |  Branch (155:9): [True: 1.81k, False: 91.8k]
  |  Branch (155:27): [True: 4.50k, False: 87.3k]
  ------------------
  156|  87.3k|        !IsIdentifierChar(*CurPtr, AllowAtInIdentifier))
  ------------------
  |  Branch (156:9): [True: 60.1k, False: 27.2k]
  ------------------
  157|  66.4k|      return LexFloatLiteral();
  158|  93.6k|  }
  159|       |
  160|  9.53M|  while (IsIdentifierChar(*CurPtr, AllowAtInIdentifier))
  ------------------
  |  Branch (160:10): [True: 7.17M, False: 2.35M]
  ------------------
  161|  7.17M|    ++CurPtr;
  162|       |
  163|       |  // Handle . as a special case.
  164|  2.35M|  if (CurPtr == TokStart+1 && TokStart[0] == '.')
  ------------------
  |  Branch (164:7): [True: 845k, False: 1.51M]
  |  Branch (164:31): [True: 180k, False: 664k]
  ------------------
  165|   180k|    return AsmToken(AsmToken::Dot, StringRef(TokStart, 1));
  166|       |
  167|  2.17M|  return AsmToken(AsmToken::Identifier, StringRef(TokStart, CurPtr - TokStart));
  168|  2.35M|}
_ZN7llvm_ks8AsmLexer8LexSlashEv:
  173|  26.0k|{
  174|  26.0k|  switch (*CurPtr) {
  175|    384|  case '*': break; // C style comment.
  ------------------
  |  Branch (175:3): [True: 384, False: 25.6k]
  ------------------
  176|  9.51k|  case '/': return ++CurPtr, LexLineComment();
  ------------------
  |  Branch (176:3): [True: 9.51k, False: 16.5k]
  ------------------
  177|  16.1k|  default:  return AsmToken(AsmToken::Slash, StringRef(CurPtr-1, 1));
  ------------------
  |  Branch (177:3): [True: 16.1k, False: 9.89k]
  ------------------
  178|  26.0k|  }
  179|       |
  180|       |  // C Style comment.
  181|    384|  ++CurPtr;  // skip the star.
  182|    851|  while (1) {
  ------------------
  |  Branch (182:10): [True: 851, Folded]
  ------------------
  183|    851|    int CurChar = getNextChar();
  184|    851|    switch (CurChar) {
  ------------------
  |  Branch (184:13): [True: 604, False: 247]
  ------------------
  185|     23|    case EOF:
  ------------------
  |  Branch (185:5): [True: 23, False: 828]
  ------------------
  186|     23|      return ReturnError(TokStart, "unterminated comment");
  187|    581|    case '*':
  ------------------
  |  Branch (187:5): [True: 581, False: 270]
  ------------------
  188|       |      // End of the comment?
  189|    581|      if (CurPtr[0] != '/') break;
  ------------------
  |  Branch (189:11): [True: 220, False: 361]
  ------------------
  190|       |
  191|    361|      ++CurPtr;   // End the */.
  192|    361|      return LexToken();
  193|    851|    }
  194|    851|  }
  195|    384|}
_ZN7llvm_ks8AsmLexer14LexLineCommentEv:
  199|  81.1k|AsmToken AsmLexer::LexLineComment() {
  200|       |  // FIXME: This is broken if we happen to a comment at the end of a file, which
  201|       |  // was .included, and which doesn't end with a newline.
  202|  81.1k|  int CurChar = getNextChar();
  203|  1.32M|  while (CurChar != '\n' && CurChar != '\r' && CurChar != EOF)
  ------------------
  |  Branch (203:10): [True: 1.26M, False: 64.5k]
  |  Branch (203:29): [True: 1.24M, False: 16.1k]
  |  Branch (203:48): [True: 1.24M, False: 455]
  ------------------
  204|  1.24M|    CurChar = getNextChar();
  205|       |
  206|  81.1k|  if (CurChar == EOF)
  ------------------
  |  Branch (206:7): [True: 455, False: 80.6k]
  ------------------
  207|    455|    return AsmToken(AsmToken::Eof, StringRef(TokStart, 0));
  208|  80.6k|  return AsmToken(AsmToken::EndOfStatement, StringRef(TokStart, 0));
  209|  81.1k|}
_ZN7llvm_ks8AsmLexer8LexDigitEv:
  259|   838k|{
  260|       |  // Decimal integer: [1-9][0-9]*
  261|   838k|  if (CurPtr[-1] != '0' || CurPtr[0] == '.') {
  ------------------
  |  Branch (261:7): [True: 592k, False: 245k]
  |  Branch (261:28): [True: 5.01k, False: 240k]
  ------------------
  262|   597k|    unsigned Radix = doLookAhead(CurPtr, 10);
  263|       |
  264|   597k|    if (defaultRadix == 16)
  ------------------
  |  Branch (264:9): [True: 597k, False: 0]
  ------------------
  265|   597k|      Radix = 16;
  266|       |
  267|   597k|    bool isHex = Radix == 16;
  268|       |    // Check for floating point literals.
  269|   597k|    if (!isHex && (*CurPtr == '.' || *CurPtr == 'e')) {
  ------------------
  |  Branch (269:9): [True: 0, False: 597k]
  |  Branch (269:20): [True: 0, False: 0]
  |  Branch (269:38): [True: 0, False: 0]
  ------------------
  270|      0|      ++CurPtr;
  271|      0|      return LexFloatLiteral();
  272|      0|    }
  273|       |
  274|   597k|    StringRef Result(TokStart, CurPtr - TokStart);
  275|       |
  276|   597k|    APInt Value(128, 0, true);
  277|   597k|    if (Result.getAsInteger(Radix, Value))
  ------------------
  |  Branch (277:9): [True: 0, False: 597k]
  ------------------
  278|      0|      return ReturnError(TokStart, !isHex ? "invalid decimal number" :
  ------------------
  |  Branch (278:36): [True: 0, False: 0]
  ------------------
  279|      0|                           "invalid hexdecimal number");
  280|       |
  281|       |    // Consume the [bB][hH].
  282|   597k|    if (defaultRadix != 16) {
  ------------------
  |  Branch (282:9): [True: 0, False: 597k]
  ------------------
  283|      0|      if (Radix == 2 || Radix == 16)
  ------------------
  |  Branch (283:11): [True: 0, False: 0]
  |  Branch (283:25): [True: 0, False: 0]
  ------------------
  284|      0|        ++CurPtr;
  285|      0|    }
  286|       |
  287|       |    // The darwin/x86 (and x86-64) assembler accepts and ignores type
  288|       |    // suffices on integer literals.
  289|   597k|    SkipIgnoredIntegerSuffix(CurPtr);
  290|       |
  291|   597k|    return intToken(Result, Value);
  292|   597k|  }
  293|       |
  294|   240k|  if (*CurPtr == 'b') {
  ------------------
  |  Branch (294:7): [True: 23.8k, False: 216k]
  ------------------
  295|  23.8k|    ++CurPtr;
  296|       |    // See if we actually have "0b" as part of something like "jmp 0b\n"
  297|  23.8k|    if (!isdigit(CurPtr[0])) {
  ------------------
  |  Branch (297:9): [True: 13.0k, False: 10.8k]
  ------------------
  298|  13.0k|      --CurPtr;
  299|  13.0k|      StringRef Result(TokStart, CurPtr - TokStart);
  300|  13.0k|      return AsmToken(AsmToken::Integer, Result, 0);
  301|  13.0k|    }
  302|  10.8k|    const char *NumStart = CurPtr;
  303|  31.1k|    while (CurPtr[0] == '0' || CurPtr[0] == '1')
  ------------------
  |  Branch (303:12): [True: 11.8k, False: 19.2k]
  |  Branch (303:32): [True: 8.47k, False: 10.8k]
  ------------------
  304|  20.3k|      ++CurPtr;
  305|       |
  306|       |    // Requires at least one binary digit.
  307|  10.8k|    if (CurPtr == NumStart)
  ------------------
  |  Branch (307:9): [True: 786, False: 10.0k]
  ------------------
  308|    786|      return ReturnError(TokStart, "invalid binary number");
  309|       |
  310|  10.0k|    StringRef Result(TokStart, CurPtr - TokStart);
  311|       |
  312|  10.0k|    APInt Value(128, 0, true);
  313|  10.0k|    if (Result.substr(2).getAsInteger(2, Value))
  ------------------
  |  Branch (313:9): [True: 0, False: 10.0k]
  ------------------
  314|      0|      return ReturnError(TokStart, "invalid binary number");
  315|       |
  316|       |    // The darwin/x86 (and x86-64) assembler accepts and ignores ULL and LL
  317|       |    // suffixes on integer literals.
  318|  10.0k|    SkipIgnoredIntegerSuffix(CurPtr);
  319|       |
  320|  10.0k|    return intToken(Result, Value);
  321|  10.0k|  }
  322|       |
  323|   216k|  if (*CurPtr == 'x' || *CurPtr == 'X') {
  ------------------
  |  Branch (323:7): [True: 16.0k, False: 200k]
  |  Branch (323:25): [True: 17.6k, False: 182k]
  ------------------
  324|  33.6k|    ++CurPtr;
  325|  33.6k|    const char *NumStart = CurPtr;
  326|   174k|    while (isxdigit(CurPtr[0]))
  ------------------
  |  Branch (326:12): [True: 140k, False: 33.6k]
  ------------------
  327|   140k|      ++CurPtr;
  328|       |
  329|       |    // "0x.0p0" is valid, and "0x0p0" (but not "0xp0" for example, which will be
  330|       |    // diagnosed by LexHexFloatLiteral).
  331|  33.6k|    if (CurPtr[0] == '.' || CurPtr[0] == 'p' || CurPtr[0] == 'P')
  ------------------
  |  Branch (331:9): [True: 10.3k, False: 23.2k]
  |  Branch (331:29): [True: 3.23k, False: 20.0k]
  |  Branch (331:49): [True: 11.0k, False: 8.98k]
  ------------------
  332|  24.6k|      return LexHexFloatLiteral(NumStart == CurPtr);
  333|       |
  334|       |    // Otherwise requires at least one hex digit.
  335|  8.98k|    if (CurPtr == NumStart)
  ------------------
  |  Branch (335:9): [True: 500, False: 8.48k]
  ------------------
  336|    500|      return ReturnError(CurPtr-2, "invalid hexadecimal number");
  337|       |
  338|  8.48k|    APInt Result(128, 0);
  339|  8.48k|    if (StringRef(TokStart, CurPtr - TokStart).getAsInteger(0, Result))
  ------------------
  |  Branch (339:9): [True: 0, False: 8.48k]
  ------------------
  340|      0|      return ReturnError(TokStart, "invalid hexadecimal number");
  341|       |
  342|       |    // Consume the optional [hH].
  343|  8.48k|    if (*CurPtr == 'h' || *CurPtr == 'H')
  ------------------
  |  Branch (343:9): [True: 211, False: 8.26k]
  |  Branch (343:27): [True: 1.36k, False: 6.90k]
  ------------------
  344|  1.57k|      ++CurPtr;
  345|       |
  346|       |    // The darwin/x86 (and x86-64) assembler accepts and ignores ULL and LL
  347|       |    // suffixes on integer literals.
  348|  8.48k|    SkipIgnoredIntegerSuffix(CurPtr);
  349|       |
  350|  8.48k|    return intToken(StringRef(TokStart, CurPtr - TokStart), Result);
  351|  8.48k|  }
  352|       |
  353|       |  // Either octal or hexadecimal.
  354|   182k|  APInt Value(128, 0, true);
  355|   182k|  unsigned Radix = doLookAhead(CurPtr, 8);
  356|   182k|  bool isHex = Radix == 16;
  357|   182k|  StringRef Result(TokStart, CurPtr - TokStart);
  358|   182k|  if (Result.getAsInteger(Radix, Value))
  ------------------
  |  Branch (358:7): [True: 2.04k, False: 180k]
  ------------------
  359|  2.04k|    return ReturnError(TokStart, !isHex ? "invalid octal number" :
  ------------------
  |  Branch (359:34): [True: 2.04k, False: 0]
  ------------------
  360|  2.04k|                       "invalid hexdecimal number");
  361|       |
  362|       |  // Consume the [hH].
  363|   180k|  if (Radix == 16)
  ------------------
  |  Branch (363:7): [True: 130, False: 180k]
  ------------------
  364|    130|    ++CurPtr;
  365|       |
  366|       |  // The darwin/x86 (and x86-64) assembler accepts and ignores ULL and LL
  367|       |  // suffixes on integer literals.
  368|   180k|  SkipIgnoredIntegerSuffix(CurPtr);
  369|       |
  370|   180k|  return intToken(Result, Value);
  371|   182k|}
_ZN7llvm_ks8AsmLexer14LexSingleQuoteEv:
  375|  10.1k|{
  376|  10.1k|  int CurChar = getNextChar();
  377|       |
  378|  10.1k|  if (CurChar == '\\')
  ------------------
  |  Branch (378:7): [True: 1.57k, False: 8.55k]
  ------------------
  379|  1.57k|    CurChar = getNextChar();
  380|       |
  381|  10.1k|  if (CurChar == EOF)
  ------------------
  |  Branch (381:7): [True: 44, False: 10.0k]
  ------------------
  382|     44|    return ReturnError(TokStart, "unterminated single quote");
  383|       |
  384|  10.0k|  CurChar = getNextChar();
  385|       |
  386|  10.0k|  if (CurChar != '\'')
  ------------------
  |  Branch (386:7): [True: 7.12k, False: 2.96k]
  ------------------
  387|  7.12k|    return ReturnError(TokStart, "single quote way too long");
  388|       |
  389|       |  // The idea here being that 'c' is basically just an integral
  390|       |  // constant.
  391|  2.96k|  StringRef Res = StringRef(TokStart,CurPtr - TokStart);
  392|  2.96k|  long long Value;
  393|       |
  394|  2.96k|  if (Res.startswith("\'\\")) {
  ------------------
  |  Branch (394:7): [True: 1.42k, False: 1.53k]
  ------------------
  395|  1.42k|    char theChar = Res[2];
  396|  1.42k|    switch (theChar) {
  397|    298|      default: Value = theChar; break;
  ------------------
  |  Branch (397:7): [True: 298, False: 1.12k]
  ------------------
  398|    406|      case '\'': Value = '\''; break;
  ------------------
  |  Branch (398:7): [True: 406, False: 1.02k]
  ------------------
  399|    200|      case 't': Value = '\t'; break;
  ------------------
  |  Branch (399:7): [True: 200, False: 1.22k]
  ------------------
  400|    238|      case 'n': Value = '\n'; break;
  ------------------
  |  Branch (400:7): [True: 238, False: 1.18k]
  ------------------
  401|    285|      case 'b': Value = '\b'; break;
  ------------------
  |  Branch (401:7): [True: 285, False: 1.14k]
  ------------------
  402|  1.42k|    }
  403|  1.42k|  } else
  404|  1.53k|    Value = TokStart[1];
  405|       |
  406|  2.96k|  return AsmToken(AsmToken::Integer, Res, Value);
  407|  2.96k|}
_ZN7llvm_ks8AsmLexer8LexQuoteEv:
  412|  25.2k|{
  413|  25.2k|  int CurChar = getNextChar();
  414|       |  // TODO: does gas allow multiline string constants?
  415|   282k|  while (CurChar != '"') {
  ------------------
  |  Branch (415:10): [True: 257k, False: 25.0k]
  ------------------
  416|   257k|    if (CurChar == '\\') {
  ------------------
  |  Branch (416:9): [True: 9.55k, False: 248k]
  ------------------
  417|       |      // Allow \", etc.
  418|  9.55k|      CurChar = getNextChar();
  419|  9.55k|    }
  420|       |
  421|   257k|    if (CurChar == EOF)
  ------------------
  |  Branch (421:9): [True: 184, False: 257k]
  ------------------
  422|    184|      return ReturnError(TokStart, "unterminated string constant");
  423|       |
  424|   257k|    CurChar = getNextChar();
  425|   257k|  }
  426|       |
  427|  25.0k|  return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart));
  428|  25.2k|}
_ZN7llvm_ks8AsmLexer22LexUntilEndOfStatementEv:
  430|  1.55k|StringRef AsmLexer::LexUntilEndOfStatement() {
  431|  1.55k|  TokStart = CurPtr;
  432|       |
  433|   130k|  while (!isAtStartOfComment(CurPtr) &&     // Start of line comment.
  ------------------
  |  Branch (433:10): [True: 130k, False: 175]
  ------------------
  434|   130k|         !isAtStatementSeparator(CurPtr) && // End of statement marker.
  ------------------
  |  Branch (434:10): [True: 129k, False: 251]
  ------------------
  435|   129k|         *CurPtr != '\n' && *CurPtr != '\r' &&
  ------------------
  |  Branch (435:10): [True: 129k, False: 562]
  |  Branch (435:29): [True: 128k, False: 448]
  ------------------
  436|   128k|         (*CurPtr != 0 || CurPtr != CurBuf.end())) {
  ------------------
  |  Branch (436:11): [True: 128k, False: 116]
  |  Branch (436:27): [True: 0, False: 116]
  ------------------
  437|   128k|    ++CurPtr;
  438|   128k|  }
  439|  1.55k|  return StringRef(TokStart, CurPtr-TokStart);
  440|  1.55k|}
_ZN7llvm_ks8AsmLexer17LexUntilEndOfLineEv:
  442|  80.0k|StringRef AsmLexer::LexUntilEndOfLine() {
  443|  80.0k|  TokStart = CurPtr;
  444|       |
  445|  1.26M|  while (*CurPtr != '\n' && *CurPtr != '\r' &&
  ------------------
  |  Branch (445:10): [True: 1.24M, False: 24.2k]
  |  Branch (445:29): [True: 1.18M, False: 55.5k]
  ------------------
  446|  1.18M|         (*CurPtr != 0 || CurPtr != CurBuf.end())) {
  ------------------
  |  Branch (446:11): [True: 1.18M, False: 184]
  |  Branch (446:27): [True: 0, False: 184]
  ------------------
  447|  1.18M|    ++CurPtr;
  448|  1.18M|  }
  449|  80.0k|  return StringRef(TokStart, CurPtr-TokStart);
  450|  80.0k|}
_ZN7llvm_ks8AsmLexer10peekTokensENS_15MutableArrayRefINS_8AsmTokenEEEb:
  454|  15.4k|{
  455|  15.4k|  const char *SavedTokStart = TokStart;
  456|  15.4k|  const char *SavedCurPtr = CurPtr;
  457|  15.4k|  bool SavedAtStartOfLine = isAtStartOfLine;
  458|  15.4k|  bool SavedSkipSpace = SkipSpace;
  459|       |
  460|  15.4k|  std::string SavedErr = getErr();
  461|  15.4k|  SMLoc SavedErrLoc = getErrLoc();
  462|       |
  463|  15.4k|  SkipSpace = ShouldSkipSpace;
  464|       |
  465|  15.4k|  size_t ReadCount;
  466|  30.9k|  for (ReadCount = 0; ReadCount < Buf.size(); ++ReadCount) {
  ------------------
  |  Branch (466:23): [True: 15.4k, False: 15.4k]
  ------------------
  467|  15.4k|    AsmToken Token = LexToken();
  468|       |
  469|  15.4k|    Buf[ReadCount] = Token;
  470|       |
  471|  15.4k|    if (Token.is(AsmToken::Eof))
  ------------------
  |  Branch (471:9): [True: 5, False: 15.4k]
  ------------------
  472|      5|      break;
  473|  15.4k|  }
  474|       |
  475|  15.4k|  SetError(SavedErrLoc, SavedErr);
  476|       |
  477|  15.4k|  SkipSpace = SavedSkipSpace;
  478|  15.4k|  isAtStartOfLine = SavedAtStartOfLine;
  479|  15.4k|  CurPtr = SavedCurPtr;
  480|  15.4k|  TokStart = SavedTokStart;
  481|       |
  482|  15.4k|  return ReadCount;
  483|  15.4k|}
_ZN7llvm_ks8AsmLexer18isAtStartOfCommentEPKc:
  485|  16.3M|bool AsmLexer::isAtStartOfComment(const char *Ptr) {
  486|  16.3M|  const char *CommentString = MAI.getCommentString();
  487|       |
  488|  16.3M|  if (CommentString[1] == '\0')
  ------------------
  |  Branch (488:7): [True: 16.3M, False: 0]
  ------------------
  489|  16.3M|    return CommentString[0] == Ptr[0];
  490|       |
  491|       |  // FIXME: special case for the bogus "##" comment string in X86MCAsmInfoDarwin
  492|      0|  if (CommentString[1] == '#')
  ------------------
  |  Branch (492:7): [True: 0, False: 0]
  ------------------
  493|      0|    return CommentString[0] == Ptr[0];
  494|       |
  495|      0|  return strncmp(Ptr, CommentString, strlen(CommentString)) == 0;
  496|      0|}
_ZN7llvm_ks8AsmLexer22isAtStatementSeparatorEPKc:
  498|  16.2M|bool AsmLexer::isAtStatementSeparator(const char *Ptr) {
  499|  16.2M|  return strncmp(Ptr, MAI.getSeparatorString(),
  500|  16.2M|                 strlen(MAI.getSeparatorString())) == 0;
  501|  16.2M|}
_ZN7llvm_ks8AsmLexer8LexTokenEv:
  504|  16.1M|{
  505|  16.1M|  TokStart = CurPtr;
  506|       |  // This always consumes at least one character.
  507|  16.1M|  int CurChar = getNextChar();
  508|       |
  509|  16.1M|  if (isAtStartOfComment(TokStart)) {
  ------------------
  |  Branch (509:7): [True: 71.6k, False: 16.1M]
  ------------------
  510|       |    // If this comment starts with a '#', then return the Hash token and let
  511|       |    // the assembler parser see if it can be parsed as a cpp line filename
  512|       |    // comment. We do this only if we are at the start of a line.
  513|  71.6k|    if (CurChar == '#' && isAtStartOfLine)
  ------------------
  |  Branch (513:9): [True: 0, False: 71.6k]
  |  Branch (513:27): [True: 0, False: 0]
  ------------------
  514|      0|      return AsmToken(AsmToken::Hash, StringRef(TokStart, 1));
  515|  71.6k|    isAtStartOfLine = true;
  516|  71.6k|    return LexLineComment();
  517|  71.6k|  }
  518|  16.1M|  if (isAtStatementSeparator(TokStart)) {
  ------------------
  |  Branch (518:7): [True: 580k, False: 15.5M]
  ------------------
  519|   580k|    CurPtr += strlen(MAI.getSeparatorString()) - 1;
  520|   580k|    return AsmToken(AsmToken::EndOfStatement,
  521|   580k|                    StringRef(TokStart, strlen(MAI.getSeparatorString())));
  522|   580k|  }
  523|       |
  524|       |  // If we're missing a newline at EOF, make sure we still get an
  525|       |  // EndOfStatement token before the Eof token.
  526|  15.5M|  if (CurChar == EOF && !isAtStartOfLine) {
  ------------------
  |  Branch (526:7): [True: 36.1k, False: 15.5M]
  |  Branch (526:25): [True: 18.0k, False: 18.1k]
  ------------------
  527|  18.0k|    isAtStartOfLine = true;
  528|  18.0k|    return AsmToken(AsmToken::EndOfStatement, StringRef(TokStart, 1));
  529|  18.0k|  }
  530|       |
  531|  15.5M|  isAtStartOfLine = false;
  532|  15.5M|  switch (CurChar) {
  533|  3.88M|  default:
  ------------------
  |  Branch (533:3): [True: 3.88M, False: 11.6M]
  ------------------
  534|       |    // Handle identifier: [a-zA-Z_.][a-zA-Z0-9_$.@]*
  535|  3.88M|    if (isalpha(CurChar) || CurChar == '_' || CurChar == '.')
  ------------------
  |  Branch (535:9): [True: 1.18M, False: 2.69M]
  |  Branch (535:29): [True: 5.64k, False: 2.69M]
  |  Branch (535:47): [True: 1.23M, False: 1.45M]
  ------------------
  536|  2.42M|      return LexIdentifier();
  537|       |
  538|       |    // Unknown character, emit an error.
  539|  1.45M|    return ReturnError(TokStart, "invalid character in input");
  540|  18.1k|  case EOF: return AsmToken(AsmToken::Eof, StringRef(TokStart, 0));
  ------------------
  |  Branch (540:3): [True: 18.1k, False: 15.5M]
  ------------------
  541|      0|  case 0:
  ------------------
  |  Branch (541:3): [True: 0, False: 15.5M]
  ------------------
  542|   534k|  case ' ':
  ------------------
  |  Branch (542:3): [True: 534k, False: 14.9M]
  ------------------
  543|   606k|  case '\t':
  ------------------
  |  Branch (543:3): [True: 71.4k, False: 15.4M]
  ------------------
  544|   606k|    if (SkipSpace) {
  ------------------
  |  Branch (544:9): [True: 606k, False: 0]
  ------------------
  545|       |      // Ignore whitespace.
  546|   606k|      return LexToken();
  547|   606k|    } else {
  548|      0|      int len = 1;
  549|      0|      while (*CurPtr==' ' || *CurPtr=='\t') {
  ------------------
  |  Branch (549:14): [True: 0, False: 0]
  |  Branch (549:30): [True: 0, False: 0]
  ------------------
  550|      0|        CurPtr++;
  551|      0|        len++;
  552|      0|      }
  553|      0|      return AsmToken(AsmToken::Space, StringRef(TokStart, len));
  554|      0|    }
  555|  3.83M|  case '\n': // FALL THROUGH.
  ------------------
  |  Branch (555:3): [True: 3.83M, False: 11.6M]
  ------------------
  556|  4.15M|  case '\r':
  ------------------
  |  Branch (556:3): [True: 323k, False: 15.2M]
  ------------------
  557|  4.15M|    isAtStartOfLine = true;
  558|  4.15M|    return AsmToken(AsmToken::EndOfStatement, StringRef(TokStart, 1));
  559|  3.24k|  case ':': return AsmToken(AsmToken::Colon, StringRef(TokStart, 1));
  ------------------
  |  Branch (559:3): [True: 3.24k, False: 15.5M]
  ------------------
  560|  86.3k|  case '+': return AsmToken(AsmToken::Plus, StringRef(TokStart, 1));
  ------------------
  |  Branch (560:3): [True: 86.3k, False: 15.4M]
  ------------------
  561|   403k|  case '-': return AsmToken(AsmToken::Minus, StringRef(TokStart, 1));
  ------------------
  |  Branch (561:3): [True: 403k, False: 15.1M]
  ------------------
  562|  78.4k|  case '~': return AsmToken(AsmToken::Tilde, StringRef(TokStart, 1));
  ------------------
  |  Branch (562:3): [True: 78.4k, False: 15.4M]
  ------------------
  563|  84.6k|  case '(': return AsmToken(AsmToken::LParen, StringRef(TokStart, 1));
  ------------------
  |  Branch (563:3): [True: 84.6k, False: 15.4M]
  ------------------
  564|  15.3k|  case ')': return AsmToken(AsmToken::RParen, StringRef(TokStart, 1));
  ------------------
  |  Branch (564:3): [True: 15.3k, False: 15.5M]
  ------------------
  565|  3.60k|  case '[': return AsmToken(AsmToken::LBrac, StringRef(TokStart, 1));
  ------------------
  |  Branch (565:3): [True: 3.60k, False: 15.5M]
  ------------------
  566|  5.85k|  case ']': return AsmToken(AsmToken::RBrac, StringRef(TokStart, 1));
  ------------------
  |  Branch (566:3): [True: 5.85k, False: 15.5M]
  ------------------
  567|  15.2k|  case '{': return AsmToken(AsmToken::LCurly, StringRef(TokStart, 1));
  ------------------
  |  Branch (567:3): [True: 15.2k, False: 15.5M]
  ------------------
  568|  3.64k|  case '}': return AsmToken(AsmToken::RCurly, StringRef(TokStart, 1));
  ------------------
  |  Branch (568:3): [True: 3.64k, False: 15.5M]
  ------------------
  569|  47.2k|  case '*': return AsmToken(AsmToken::Star, StringRef(TokStart, 1));
  ------------------
  |  Branch (569:3): [True: 47.2k, False: 15.4M]
  ------------------
  570|   703k|  case ',': return AsmToken(AsmToken::Comma, StringRef(TokStart, 1));
  ------------------
  |  Branch (570:3): [True: 703k, False: 14.8M]
  ------------------
  571|   113k|  case '$': return AsmToken(AsmToken::Dollar, StringRef(TokStart, 1));
  ------------------
  |  Branch (571:3): [True: 113k, False: 15.4M]
  ------------------
  572|      0|  case '@': return AsmToken(AsmToken::At, StringRef(TokStart, 1));
  ------------------
  |  Branch (572:3): [True: 0, False: 15.5M]
  ------------------
  573|   147k|  case '\\': return AsmToken(AsmToken::BackSlash, StringRef(TokStart, 1));
  ------------------
  |  Branch (573:3): [True: 147k, False: 15.3M]
  ------------------
  574|   351k|  case '=':
  ------------------
  |  Branch (574:3): [True: 351k, False: 15.1M]
  ------------------
  575|   351k|    if (*CurPtr == '=')
  ------------------
  |  Branch (575:9): [True: 843, False: 350k]
  ------------------
  576|    843|      return ++CurPtr, AsmToken(AsmToken::EqualEqual, StringRef(TokStart, 2));
  577|   350k|    return AsmToken(AsmToken::Equal, StringRef(TokStart, 1));
  578|   184k|  case '|':
  ------------------
  |  Branch (578:3): [True: 184k, False: 15.3M]
  ------------------
  579|   184k|    if (*CurPtr == '|')
  ------------------
  |  Branch (579:9): [True: 140k, False: 43.5k]
  ------------------
  580|   140k|      return ++CurPtr, AsmToken(AsmToken::PipePipe, StringRef(TokStart, 2));
  581|  43.5k|    return AsmToken(AsmToken::Pipe, StringRef(TokStart, 1));
  582|  7.73k|  case '^': return AsmToken(AsmToken::Caret, StringRef(TokStart, 1));
  ------------------
  |  Branch (582:3): [True: 7.73k, False: 15.5M]
  ------------------
  583|  73.3k|  case '&':
  ------------------
  |  Branch (583:3): [True: 73.3k, False: 15.4M]
  ------------------
  584|  73.3k|    if (*CurPtr == '&')
  ------------------
  |  Branch (584:9): [True: 5.41k, False: 67.9k]
  ------------------
  585|  5.41k|      return ++CurPtr, AsmToken(AsmToken::AmpAmp, StringRef(TokStart, 2));
  586|  67.9k|    return AsmToken(AsmToken::Amp, StringRef(TokStart, 1));
  587|  19.9k|  case '!':
  ------------------
  |  Branch (587:3): [True: 19.9k, False: 15.5M]
  ------------------
  588|  19.9k|    if (*CurPtr == '=')
  ------------------
  |  Branch (588:9): [True: 342, False: 19.6k]
  ------------------
  589|    342|      return ++CurPtr, AsmToken(AsmToken::ExclaimEqual, StringRef(TokStart, 2));
  590|  19.6k|    return AsmToken(AsmToken::Exclaim, StringRef(TokStart, 1));
  591|  10.5k|  case '%': return AsmToken(AsmToken::Percent, StringRef(TokStart, 1));
  ------------------
  |  Branch (591:3): [True: 10.5k, False: 15.5M]
  ------------------
  592|  26.0k|  case '/': return LexSlash();
  ------------------
  |  Branch (592:3): [True: 26.0k, False: 15.5M]
  ------------------
  593|  3.58M|  case '#': return AsmToken(AsmToken::Hash, StringRef(TokStart, 1));
  ------------------
  |  Branch (593:3): [True: 3.58M, False: 11.9M]
  ------------------
  594|  10.1k|  case '\'': return LexSingleQuote();
  ------------------
  |  Branch (594:3): [True: 10.1k, False: 15.5M]
  ------------------
  595|  25.2k|  case '"': return LexQuote();
  ------------------
  |  Branch (595:3): [True: 25.2k, False: 15.5M]
  ------------------
  596|   584k|  case '0': case '1': case '2': case '3': case '4':
  ------------------
  |  Branch (596:3): [True: 245k, False: 15.2M]
  |  Branch (596:13): [True: 112k, False: 15.4M]
  |  Branch (596:23): [True: 59.0k, False: 15.4M]
  |  Branch (596:33): [True: 151k, False: 15.3M]
  |  Branch (596:43): [True: 15.8k, False: 15.5M]
  ------------------
  597|   838k|  case '5': case '6': case '7': case '8': case '9':
  ------------------
  |  Branch (597:3): [True: 13.7k, False: 15.5M]
  |  Branch (597:13): [True: 169k, False: 15.3M]
  |  Branch (597:23): [True: 33.7k, False: 15.4M]
  |  Branch (597:33): [True: 28.9k, False: 15.4M]
  |  Branch (597:43): [True: 8.20k, False: 15.5M]
  ------------------
  598|   838k|    return LexDigit();
  599|  16.6k|  case '<':
  ------------------
  |  Branch (599:3): [True: 16.6k, False: 15.5M]
  ------------------
  600|  16.6k|    switch (*CurPtr) {
  601|  4.12k|    case '<': return ++CurPtr, AsmToken(AsmToken::LessLess,
  ------------------
  |  Branch (601:5): [True: 4.12k, False: 12.5k]
  ------------------
  602|  4.12k|                                        StringRef(TokStart, 2));
  603|  1.02k|    case '=': return ++CurPtr, AsmToken(AsmToken::LessEqual,
  ------------------
  |  Branch (603:5): [True: 1.02k, False: 15.6k]
  ------------------
  604|  1.02k|                                        StringRef(TokStart, 2));
  605|    556|    case '>': return ++CurPtr, AsmToken(AsmToken::LessGreater,
  ------------------
  |  Branch (605:5): [True: 556, False: 16.0k]
  ------------------
  606|    556|                                        StringRef(TokStart, 2));
  607|  10.9k|    default: return AsmToken(AsmToken::Less, StringRef(TokStart, 1));
  ------------------
  |  Branch (607:5): [True: 10.9k, False: 5.69k]
  ------------------
  608|  16.6k|    }
  609|  8.57k|  case '>':
  ------------------
  |  Branch (609:3): [True: 8.57k, False: 15.5M]
  ------------------
  610|  8.57k|    switch (*CurPtr) {
  611|    703|    case '>': return ++CurPtr, AsmToken(AsmToken::GreaterGreater,
  ------------------
  |  Branch (611:5): [True: 703, False: 7.86k]
  ------------------
  612|    703|                                        StringRef(TokStart, 2));
  613|  1.14k|    case '=': return ++CurPtr, AsmToken(AsmToken::GreaterEqual,
  ------------------
  |  Branch (613:5): [True: 1.14k, False: 7.42k]
  ------------------
  614|  1.14k|                                        StringRef(TokStart, 2));
  615|  6.72k|    default: return AsmToken(AsmToken::Greater, StringRef(TokStart, 1));
  ------------------
  |  Branch (615:5): [True: 6.72k, False: 1.84k]
  ------------------
  616|  8.57k|    }
  617|       |
  618|       |  // TODO: Quoted identifiers (objc methods etc)
  619|       |  // local labels: [0-9][:]
  620|       |  // Forward/backward labels: [0-9][fb]
  621|       |  // Integers, fp constants, character constants.
  622|  15.5M|  }
  623|  15.5M|}
AsmLexer.cpp:_ZL16IsIdentifierCharcb:
  145|  9.62M|static bool IsIdentifierChar(char c, bool AllowAt) {
  146|  9.62M|  return isalnum(c) || c == '_' || c == '$' || c == '.' ||
  ------------------
  |  Branch (146:10): [True: 6.98M, False: 2.64M]
  |  Branch (146:24): [True: 36.4k, False: 2.60M]
  |  Branch (146:36): [True: 22.0k, False: 2.58M]
  |  Branch (146:48): [True: 160k, False: 2.42M]
  ------------------
  147|  2.42M|         (c == '@' && AllowAt) || c == '?';
  ------------------
  |  Branch (147:11): [True: 25.7k, False: 2.40M]
  |  Branch (147:23): [True: 0, False: 25.7k]
  |  Branch (147:35): [True: 5.99k, False: 2.42M]
  ------------------
  148|  9.62M|}
AsmLexer.cpp:_ZL11doLookAheadRPKcj:
  223|   780k|static unsigned doLookAhead(const char *&CurPtr, unsigned DefaultRadix) {
  224|   780k|  const char *FirstHex = nullptr;
  225|   780k|  const char *LookAhead = CurPtr;
  226|  1.74M|  while (1) {
  ------------------
  |  Branch (226:10): [True: 1.74M, Folded]
  ------------------
  227|  1.74M|    if (isdigit(*LookAhead)) {
  ------------------
  |  Branch (227:9): [True: 940k, False: 808k]
  ------------------
  228|   940k|      ++LookAhead;
  229|   940k|    } else if (isxdigit(*LookAhead)) {
  ------------------
  |  Branch (229:16): [True: 28.0k, False: 780k]
  ------------------
  230|  28.0k|      if (!FirstHex)
  ------------------
  |  Branch (230:11): [True: 19.0k, False: 9.04k]
  ------------------
  231|  19.0k|        FirstHex = LookAhead;
  232|  28.0k|      ++LookAhead;
  233|   780k|    } else {
  234|   780k|      break;
  235|   780k|    }
  236|  1.74M|  }
  237|   780k|  bool isHex = *LookAhead == 'h' || *LookAhead == 'H';
  ------------------
  |  Branch (237:16): [True: 1.54k, False: 779k]
  |  Branch (237:37): [True: 696, False: 778k]
  ------------------
  238|   780k|  CurPtr = isHex || !FirstHex ? LookAhead : FirstHex;
  ------------------
  |  Branch (238:12): [True: 2.23k, False: 778k]
  |  Branch (238:21): [True: 760k, False: 18.3k]
  ------------------
  239|   780k|  if (isHex)
  ------------------
  |  Branch (239:7): [True: 2.23k, False: 778k]
  ------------------
  240|  2.23k|    return 16;
  241|   778k|  return DefaultRadix;
  242|   780k|}
AsmLexer.cpp:_ZL24SkipIgnoredIntegerSuffixRPKc:
  211|   797k|static void SkipIgnoredIntegerSuffix(const char *&CurPtr) {
  212|       |  // Skip ULL, UL, U, L and LL suffices.
  213|   797k|  if (CurPtr[0] == 'U')
  ------------------
  |  Branch (213:7): [True: 1.24k, False: 795k]
  ------------------
  214|  1.24k|    ++CurPtr;
  215|   797k|  if (CurPtr[0] == 'L')
  ------------------
  |  Branch (215:7): [True: 12.0k, False: 784k]
  ------------------
  216|  12.0k|    ++CurPtr;
  217|   797k|  if (CurPtr[0] == 'L')
  ------------------
  |  Branch (217:7): [True: 5.91k, False: 791k]
  ------------------
  218|  5.91k|    ++CurPtr;
  219|   797k|}
AsmLexer.cpp:_ZL8intTokenN7llvm_ks9StringRefERNS_5APIntE:
  245|   797k|{
  246|   797k|  if (Value.isIntN(64))
  ------------------
  |  Branch (246:7): [True: 791k, False: 5.77k]
  ------------------
  247|   791k|    return AsmToken(AsmToken::Integer, Ref, Value);
  248|  5.77k|  return AsmToken(AsmToken::BigNum, Ref, Value);
  249|   797k|}

_ZN7llvm_ks13MCParserUtils25parseAssignmentExpressionENS_9StringRefEbRNS_11MCAsmParserERPNS_8MCSymbolERPKNS_6MCExprE:
 6074|   326k|{
 6075|   326k|  MCAsmLexer &Lexer = Parser.getLexer();
 6076|       |
 6077|       |  // FIXME: Use better location, we should use proper tokens.
 6078|       |  //SMLoc EqualLoc = Lexer.getLoc();
 6079|       |
 6080|   326k|  if (Parser.parseExpression(Value)) {
  ------------------
  |  Branch (6080:7): [True: 198k, False: 128k]
  ------------------
 6081|       |    //Parser.TokError("missing expression");
 6082|   198k|    Parser.eatToEndOfStatement();
 6083|   198k|    return true;
 6084|   198k|  }
 6085|       |
 6086|       |  // Note: we don't count b as used in "a = b". This is to allow
 6087|       |  // a = b
 6088|       |  // b = c
 6089|       |
 6090|   128k|  if (Lexer.isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (6090:7): [True: 6.17k, False: 122k]
  ------------------
 6091|       |    //return Parser.TokError("unexpected token in assignment");
 6092|  6.17k|    return true;
 6093|       |
 6094|       |  // Eat the end of statement marker.
 6095|   122k|  Parser.Lex();
 6096|       |
 6097|       |  // Validate that the LHS is allowed to be a variable (either it has not been
 6098|       |  // used as a symbol, or it is an absolute symbol).
 6099|   122k|  Sym = Parser.getContext().lookupSymbol(Name);
 6100|   122k|  if (Sym) {
  ------------------
  |  Branch (6100:7): [True: 99.6k, False: 22.6k]
  ------------------
 6101|       |    // Diagnose assignment to a label.
 6102|       |    //
 6103|       |    // FIXME: Diagnostics. Note the location of the definition as a label.
 6104|       |    // FIXME: Diagnose assignment to protected identifier (e.g., register name).
 6105|  99.6k|    if (isSymbolUsedInExpression(Sym, Value))
  ------------------
  |  Branch (6105:9): [True: 302, False: 99.3k]
  ------------------
 6106|       |      //return Parser.Error(EqualLoc, "Recursive use of '" + Name + "'");
 6107|    302|      return true;
 6108|  99.3k|    else if (Sym->isUndefined(/*SetUsed*/ false) && !Sym->isUsed() &&
  ------------------
  |  Branch (6108:14): [True: 93.0k, False: 6.33k]
  |  Branch (6108:53): [True: 92.5k, False: 488]
  ------------------
 6109|  92.5k|             !Sym->isVariable())
  ------------------
  |  Branch (6109:14): [True: 223, False: 92.3k]
  ------------------
 6110|    223|      ; // Allow redefinitions of undefined symbols only used in directives.
 6111|  99.1k|    else if (Sym->isVariable() && !Sym->isUsed() && allow_redef)
  ------------------
  |  Branch (6111:14): [True: 98.8k, False: 250]
  |  Branch (6111:35): [True: 96.3k, False: 2.56k]
  |  Branch (6111:53): [True: 96.3k, False: 0]
  ------------------
 6112|  96.3k|      ; // Allow redefinitions of variables that haven't yet been used.
 6113|  2.81k|    else if (!Sym->isUndefined() && (!Sym->isVariable() || !allow_redef))
  ------------------
  |  Branch (6113:14): [True: 2.33k, False: 488]
  |  Branch (6113:38): [True: 250, False: 2.08k]
  |  Branch (6113:60): [True: 0, False: 2.08k]
  ------------------
 6114|       |      //return Parser.Error(EqualLoc, "redefinition of '" + Name + "'");
 6115|    250|      return true;
 6116|  2.56k|    else if (!Sym->isVariable())
  ------------------
  |  Branch (6116:14): [True: 0, False: 2.56k]
  ------------------
 6117|       |      //return Parser.Error(EqualLoc, "invalid assignment to '" + Name + "'");
 6118|      0|      return true;
 6119|  2.56k|    else if (!isa<MCConstantExpr>(Sym->getVariableValue()))
  ------------------
  |  Branch (6119:14): [True: 1.79k, False: 778]
  ------------------
 6120|       |      //return Parser.Error(EqualLoc,
 6121|       |      //                    "invalid reassignment of non-absolute variable '" +
 6122|       |      //                        Name + "'");
 6123|  1.79k|      return true;
 6124|  99.6k|  } else if (Name == ".") {
  ------------------
  |  Branch (6124:14): [True: 20.7k, False: 1.85k]
  ------------------
 6125|  20.7k|    Parser.getStreamer().emitValueToOffset(Value, 0);
 6126|  20.7k|    return false;
 6127|  20.7k|  } else {
 6128|  1.85k|    if (Name.empty()) {
  ------------------
  |  Branch (6128:9): [True: 96, False: 1.76k]
  ------------------
 6129|     96|        return true;
 6130|     96|    }
 6131|  1.76k|    Sym = Parser.getContext().getOrCreateSymbol(Name);
 6132|  1.76k|  }
 6133|       |
 6134|  99.0k|  Sym->setRedefinable(allow_redef);
 6135|       |
 6136|  99.0k|  return false;
 6137|   122k|}
_ZN7llvm_ks17createMCAsmParserERNS_9SourceMgrERNS_9MCContextERNS_10MCStreamerERKNS_9MCAsmInfoE:
 6144|  20.9k|                                     MCStreamer &Out, const MCAsmInfo &MAI) {
 6145|  20.9k|  return new AsmParser(SM, C, Out, MAI);
 6146|  20.9k|}
AsmParser.cpp:_ZN7llvm_ks13MCParserUtilsL24isSymbolUsedInExpressionEPKNS_8MCSymbolEPKNS_6MCExprE:
 6046|   107k|static bool isSymbolUsedInExpression(const MCSymbol *Sym, const MCExpr *Value) {
 6047|   107k|  switch (Value->getKind()) {
  ------------------
  |  Branch (6047:11): [True: 107k, False: 0]
  ------------------
 6048|  2.85k|  case MCExpr::Binary: {
  ------------------
  |  Branch (6048:3): [True: 2.85k, False: 104k]
  ------------------
 6049|  2.85k|    const MCBinaryExpr *BE = static_cast<const MCBinaryExpr *>(Value);
 6050|  2.85k|    return isSymbolUsedInExpression(Sym, BE->getLHS()) ||
  ------------------
  |  Branch (6050:12): [True: 323, False: 2.52k]
  ------------------
 6051|  2.52k|           isSymbolUsedInExpression(Sym, BE->getRHS());
  ------------------
  |  Branch (6051:12): [True: 54, False: 2.47k]
  ------------------
 6052|      0|  }
 6053|      0|  case MCExpr::Target:
  ------------------
  |  Branch (6053:3): [True: 0, False: 107k]
  ------------------
 6054|  4.95k|  case MCExpr::Constant:
  ------------------
  |  Branch (6054:3): [True: 4.95k, False: 102k]
  ------------------
 6055|  4.95k|    return false;
 6056|  97.7k|  case MCExpr::SymbolRef: {
  ------------------
  |  Branch (6056:3): [True: 97.7k, False: 9.47k]
  ------------------
 6057|  97.7k|    const MCSymbol &S =
 6058|  97.7k|        static_cast<const MCSymbolRefExpr *>(Value)->getSymbol();
 6059|  97.7k|    if (S.isVariable())
  ------------------
  |  Branch (6059:9): [True: 536, False: 97.2k]
  ------------------
 6060|    536|      return isSymbolUsedInExpression(Sym, S.getVariableValue());
 6061|  97.2k|    return &S == Sym;
 6062|  97.7k|  }
 6063|  1.66k|  case MCExpr::Unary:
  ------------------
  |  Branch (6063:3): [True: 1.66k, False: 105k]
  ------------------
 6064|  1.66k|    return isSymbolUsedInExpression(
 6065|  1.66k|        Sym, static_cast<const MCUnaryExpr *>(Value)->getSubExpr());
 6066|   107k|  }
 6067|       |
 6068|      0|  llvm_unreachable("Unknown expr kind!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 6069|   107k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParserC2ERN7llvm_ks9SourceMgrERNS1_9MCContextERNS1_10MCStreamerERKNS1_9MCAsmInfoE:
  545|  20.9k|    : Lexer(MAI), Ctx(Ctx), Out(Out), MAI(MAI), SrcMgr(SM),
  546|  20.9k|      PlatformParser(nullptr), CurBuffer(SM.getMainFileID()),
  547|  20.9k|      MacrosEnabledFlag(true), HadError(false), CppHashLineNumber(0),
  548|  20.9k|      AssemblerDialect(~0U), IsDarwin(false), ParsingInlineAsm(false),
  549|  20.9k|      NasmDefaultRel(false) {
  550|       |  // Save the old handler.
  551|  20.9k|  SavedDiagHandler = SrcMgr.getDiagHandler();
  552|  20.9k|  SavedDiagContext = SrcMgr.getDiagContext();
  553|       |  // Set our own handler which calls the saved handler.
  554|  20.9k|  SrcMgr.setDiagHandler(DiagHandler, this);
  555|  20.9k|  Lexer.setBuffer(SrcMgr.getMemoryBuffer(CurBuffer)->getBuffer());
  556|       |
  557|       |  // Initialize the platform / file format parser.
  558|  20.9k|  PlatformParser.reset(createDarwinAsmParser());
  559|  20.9k|  IsDarwin = true;
  560|       |#if 0
  561|       |  switch (Ctx.getObjectFileInfo()->getObjectFileType()) {
  562|       |  case MCObjectFileInfo::IsCOFF:
  563|       |    PlatformParser.reset(createCOFFAsmParser());
  564|       |    break;
  565|       |  case MCObjectFileInfo::IsMachO:
  566|       |    PlatformParser.reset(createDarwinAsmParser());
  567|       |    IsDarwin = true;
  568|       |    break;
  569|       |  case MCObjectFileInfo::IsELF:
  570|       |    PlatformParser.reset(createELFAsmParser());
  571|       |    break;
  572|       |  }
  573|       |#endif
  574|       |
  575|  20.9k|  PlatformParser->Initialize(*this);
  576|  20.9k|  initializeDirectiveKindMap(0);
  577|       |
  578|  20.9k|  NumOfMacroInstantiations = 0;
  579|  20.9k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser11DiagHandlerERKN7llvm_ks12SMDiagnosticEPv:
 2025|  80.5k|void AsmParser::DiagHandler(const SMDiagnostic &Diag, void *Context) {
 2026|  80.5k|  const AsmParser *Parser = static_cast<const AsmParser *>(Context);
 2027|  80.5k|  raw_ostream &OS = errs();
 2028|       |
 2029|  80.5k|  const SourceMgr &DiagSrcMgr = *Diag.getSourceMgr();
 2030|  80.5k|  SMLoc DiagLoc = Diag.getLoc();
 2031|  80.5k|  unsigned DiagBuf = DiagSrcMgr.FindBufferContainingLoc(DiagLoc);
 2032|  80.5k|  unsigned CppHashBuf =
 2033|  80.5k|      Parser->SrcMgr.FindBufferContainingLoc(Parser->CppHashLoc);
 2034|       |
 2035|       |  // Like SourceMgr::printMessage() we need to print the include stack if any
 2036|       |  // before printing the message.
 2037|  80.5k|  unsigned DiagCurBuffer = DiagSrcMgr.FindBufferContainingLoc(DiagLoc);
 2038|  80.5k|  if (!Parser->SavedDiagHandler && DiagCurBuffer &&
  ------------------
  |  Branch (2038:7): [True: 80.5k, False: 0]
  |  Branch (2038:36): [True: 80.5k, False: 0]
  ------------------
 2039|  80.5k|      DiagCurBuffer != DiagSrcMgr.getMainFileID()) {
  ------------------
  |  Branch (2039:7): [True: 60.5k, False: 19.9k]
  ------------------
 2040|  60.5k|    SMLoc ParentIncludeLoc = DiagSrcMgr.getParentIncludeLoc(DiagCurBuffer);
 2041|  60.5k|    DiagSrcMgr.PrintIncludeStack(ParentIncludeLoc, OS);
 2042|  60.5k|  }
 2043|       |
 2044|       |  // If we have not parsed a cpp hash line filename comment or the source
 2045|       |  // manager changed or buffer changed (like in a nested include) then just
 2046|       |  // print the normal diagnostic using its Filename and LineNo.
 2047|  80.5k|  if (!Parser->CppHashLineNumber || &DiagSrcMgr != &Parser->SrcMgr ||
  ------------------
  |  Branch (2047:7): [True: 74.2k, False: 6.22k]
  |  Branch (2047:37): [True: 0, False: 6.22k]
  ------------------
 2048|  78.1k|      DiagBuf != CppHashBuf) {
  ------------------
  |  Branch (2048:7): [True: 3.90k, False: 2.31k]
  ------------------
 2049|  78.1k|    if (Parser->SavedDiagHandler)
  ------------------
  |  Branch (2049:9): [True: 0, False: 78.1k]
  ------------------
 2050|      0|      Parser->SavedDiagHandler(Diag, Parser->SavedDiagContext);
 2051|  78.1k|    else
 2052|  78.1k|      Diag.print(nullptr, OS);
 2053|  78.1k|    return;
 2054|  78.1k|  }
 2055|       |
 2056|       |  // Use the CppHashFilename and calculate a line number based on the
 2057|       |  // CppHashLoc and CppHashLineNumber relative to this Diag's SMLoc for
 2058|       |  // the diagnostic.
 2059|  2.31k|  const std::string &Filename = Parser->CppHashFilename;
 2060|       |
 2061|  2.31k|  int DiagLocLineNo = DiagSrcMgr.FindLineNumber(DiagLoc, DiagBuf);
 2062|  2.31k|  int CppHashLocLineNo =
 2063|  2.31k|      Parser->SrcMgr.FindLineNumber(Parser->CppHashLoc, CppHashBuf);
 2064|  2.31k|  int LineNo =
 2065|  2.31k|      Parser->CppHashLineNumber - 1 + (DiagLocLineNo - CppHashLocLineNo);
 2066|       |
 2067|  2.31k|  SMDiagnostic NewDiag(*Diag.getSourceMgr(), Diag.getLoc(), Filename, LineNo,
 2068|  2.31k|                       Diag.getColumnNo(), Diag.getKind(), Diag.getMessage(),
 2069|  2.31k|                       Diag.getLineContents(), Diag.getRanges());
 2070|       |
 2071|  2.31k|  if (Parser->SavedDiagHandler)
  ------------------
  |  Branch (2071:7): [True: 0, False: 2.31k]
  ------------------
 2072|      0|    Parser->SavedDiagHandler(NewDiag, Parser->SavedDiagContext);
 2073|  2.31k|  else
 2074|  2.31k|    NewDiag.print(nullptr, OS);
 2075|  2.31k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParserD2Ev:
  581|  20.9k|AsmParser::~AsmParser() {
  582|  20.9k|  assert((HadError || ActiveMacros.empty()) &&
  ------------------
  |  Branch (582:3): [True: 364, False: 20.6k]
  |  Branch (582:3): [True: 20.6k, False: 0]
  |  Branch (582:3): [True: 20.9k, Folded]
  |  Branch (582:3): [True: 20.9k, False: 0]
  ------------------
  583|  20.9k|         "Unexpected active macro instantiation!");
  584|       |    
  585|       |  // Restore the saved diagnostics handler and context for use during
  586|       |  // finalization
  587|  20.9k|  SrcMgr.setDiagHandler(SavedDiagHandler, SavedDiagContext);  
  588|  20.9k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19addDirectiveHandlerEN7llvm_ks9StringRefENSt3__14pairIPNS1_20MCAsmParserExtensionEPFbS6_S2_NS1_5SMLocEEEE:
  197|  1.38M|                           ExtensionDirectiveHandler Handler) override {
  198|  1.38M|    ExtensionDirectiveMap[Directive] = Handler;
  199|  1.38M|  }
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser8getLexerEv:
  210|  57.1M|  MCAsmLexer &getLexer() override { return Lexer; }
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser10getContextEv:
  211|  2.50M|  MCContext &getContext() override { return Ctx; }
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser11getStreamerEv:
  212|  77.6M|  MCStreamer &getStreamer() override { return Out; }
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19getAssemblerDialectEv:
  213|  51.4k|  unsigned getAssemblerDialect() override {
  214|  51.4k|    if (AssemblerDialect == ~0U)
  ------------------
  |  Branch (214:9): [True: 51.4k, False: 0]
  ------------------
  215|  51.4k|      return MAI.getAssemblerDialect();
  216|      0|    else
  217|      0|      return AssemblerDialect;
  218|  51.4k|  }
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser3RunEbmb:
  675|  20.9k|{
  676|       |  // count number of statement
  677|  20.9k|  size_t count = 0;
  678|       |
  679|       |  // Create the initial section, if requested.
  680|  20.9k|  if (!NoInitialTextSection)
  ------------------
  |  Branch (680:7): [True: 20.9k, False: 0]
  ------------------
  681|  20.9k|    Out.InitSections(false);
  682|       |
  683|       |  // Prime the lexer.
  684|  20.9k|  Lex();
  685|  20.9k|  if (!Lexer.isNot(AsmToken::Error)) {
  ------------------
  |  Branch (685:7): [True: 84, False: 20.8k]
  ------------------
  686|     84|    KsError = KS_ERR_ASM_TOKEN_INVALID;
  687|     84|    return 0;
  688|     84|  }
  689|       |
  690|  20.8k|  HadError = false;
  691|  20.8k|  AsmCond StartingCondState = TheCondState;
  692|       |
  693|       |  // If we are generating dwarf for assembly source files save the initial text
  694|       |  // section and generate a .file directive.
  695|  20.8k|  if (getContext().getGenDwarfForAssembly()) {
  ------------------
  |  Branch (695:7): [True: 0, False: 20.8k]
  ------------------
  696|      0|    MCSection *Sec = getStreamer().getCurrentSection().first;
  697|      0|    if (!Sec->getBeginSymbol()) {
  ------------------
  |  Branch (697:9): [True: 0, False: 0]
  ------------------
  698|      0|      MCSymbol *SectionStartSym = getContext().createTempSymbol();
  699|      0|      getStreamer().EmitLabel(SectionStartSym);
  700|      0|      Sec->setBeginSymbol(SectionStartSym);
  701|      0|    }
  702|      0|    bool InsertResult = getContext().addGenDwarfSection(Sec);
  703|      0|    assert(InsertResult && ".text section should not have debug info yet");
  ------------------
  |  Branch (703:5): [True: 0, False: 0]
  |  Branch (703:5): [True: 0, Folded]
  |  Branch (703:5): [True: 0, False: 0]
  ------------------
  704|      0|    (void)InsertResult;
  705|      0|    getContext().setGenDwarfFileNumber(getStreamer().EmitDwarfFileDirective(
  706|      0|        0, StringRef(), getContext().getMainFileName()));
  707|      0|  }
  708|       |
  709|       |  // While we have input, parse each statement.
  710|  5.53M|  while (Lexer.isNot(AsmToken::Eof)) {
  ------------------
  |  Branch (710:10): [True: 5.52M, False: 9.85k]
  ------------------
  711|  5.52M|    ParseStatementInfo Info;
  712|  5.52M|    if (!parseStatement(Info, nullptr, Address)) {
  ------------------
  |  Branch (712:9): [True: 4.74M, False: 779k]
  ------------------
  713|  4.74M|      count++;
  714|  4.74M|      continue;
  715|  4.74M|    }
  716|       |
  717|       |    //printf(">> 222 error = %u\n", Info.KsError);
  718|   779k|    if (!KsError) {
  ------------------
  |  Branch (718:9): [True: 11.0k, False: 768k]
  ------------------
  719|  11.0k|        KsError = Info.KsError;
  720|  11.0k|        return 0;
  721|  11.0k|    }
  722|       |
  723|       |    // We had an error, validate that one was emitted and recover by skipping to
  724|       |    // the next line.
  725|       |    // assert(HadError && "Parse statement returned an error, but none emitted!");
  726|       |
  727|       |    //eatToEndOfStatement();
  728|   779k|  }
  729|       |
  730|  9.85k|  if (TheCondState.TheCond != StartingCondState.TheCond ||
  ------------------
  |  Branch (730:7): [True: 781, False: 9.07k]
  ------------------
  731|  9.07k|      TheCondState.Ignore != StartingCondState.Ignore) {
  ------------------
  |  Branch (731:7): [True: 0, False: 9.07k]
  ------------------
  732|       |    //return TokError("unmatched .ifs or .elses");
  733|    781|    KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
  734|    781|    return 0;
  735|    781|  }
  736|       |
  737|       |  // Check to see that all assembler local symbols were actually defined.
  738|       |  // Targets that don't do subsections via symbols may not want this, though,
  739|       |  // so conservatively exclude them. Only do this if we're finalizing, though,
  740|       |  // as otherwise we won't necessarilly have seen everything yet.
  741|  9.07k|  if (!NoFinalize && MAI.hasSubsectionsViaSymbols()) {
  ------------------
  |  Branch (741:7): [True: 9.07k, False: 0]
  |  Branch (741:22): [True: 0, False: 9.07k]
  ------------------
  742|      0|    for (const auto &TableEntry : getContext().getSymbols()) {
  ------------------
  |  Branch (742:33): [True: 0, False: 0]
  ------------------
  743|      0|      MCSymbol *Sym = TableEntry.getValue();
  744|       |      // Variable symbols may not be marked as defined, so check those
  745|       |      // explicitly. If we know it's a variable, we have a definition for
  746|       |      // the purposes of this check.
  747|      0|      if (Sym->isTemporary() && !Sym->isVariable() && !Sym->isDefined()) {
  ------------------
  |  Branch (747:11): [True: 0, False: 0]
  |  Branch (747:33): [True: 0, False: 0]
  |  Branch (747:55): [True: 0, False: 0]
  ------------------
  748|       |        // FIXME: We would really like to refer back to where the symbol was
  749|       |        // first referenced for a source location. We need to add something
  750|       |        // to track that. Currently, we just point to the end of the file.
  751|       |        //return Error(getLexer().getLoc(), "assembler local symbol '" +
  752|       |        //                                      Sym->getName() + "' not defined");    // qq: set KsError, then return 0
  753|      0|        KsError = KS_ERR_ASM_SYMBOL_MISSING;
  754|      0|        return 0;
  755|      0|      }
  756|      0|    }
  757|      0|  }
  758|       |
  759|       |  // Finalize the output stream if there are no errors and if the client wants
  760|       |  // us to.
  761|  9.07k|  if (!KsError) {
  ------------------
  |  Branch (761:7): [True: 7.49k, False: 1.58k]
  ------------------
  762|  7.49k|      if (!HadError && !NoFinalize)
  ------------------
  |  Branch (762:11): [True: 7.40k, False: 88]
  |  Branch (762:24): [True: 7.40k, False: 0]
  ------------------
  763|  7.40k|          KsError = Out.Finish();
  764|  7.49k|  } else
  765|  1.58k|      Out.Finish();
  766|       |
  767|       |  //return HadError || getContext().hadError();
  768|  9.07k|  return count;
  769|  9.07k|}
AsmParser.cpp:_ZN12_GLOBAL__N_118ParseStatementInfoC2Ev:
  114|  5.52M|  ParseStatementInfo() : KsError(0), Opcode(~0U), ParseError(false), AsmRewrites(nullptr) {}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser14parseStatementERNS_18ParseStatementInfoEPN7llvm_ks23MCAsmParserSemaCallbackERm:
 1449|  5.52M|{
 1450|  5.52M|  KsError = 0;
 1451|  5.52M|  if (Lexer.is(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (1451:7): [True: 727k, False: 4.79M]
  ------------------
 1452|   727k|    Out.AddBlankLine();
 1453|   727k|    Lex();
 1454|   727k|    return false;
 1455|   727k|  }
 1456|       |
 1457|       |  // Statements always start with an identifier or are a full line comment.
 1458|  4.79M|  AsmToken ID = getTok();
 1459|       |  //printf(">>> parseStatement:ID = %s\n", ID.getString().str().c_str());
 1460|  4.79M|  SMLoc IDLoc = ID.getLoc();
 1461|  4.79M|  StringRef IDVal;
 1462|  4.79M|  int64_t LocalLabelVal = -1;
 1463|       |  // A full line comment is a '#' as the first token.
 1464|  4.79M|  if (Lexer.is(AsmToken::Hash))
  ------------------
  |  Branch (1464:7): [True: 3.56M, False: 1.23M]
  ------------------
 1465|  3.56M|    return parseCppHashLineFilenameComment(IDLoc);
 1466|       |
 1467|       |  // Allow an integer followed by a ':' as a directional local label.
 1468|  1.23M|  if (Lexer.is(AsmToken::Integer)) {
  ------------------
  |  Branch (1468:7): [True: 1.68k, False: 1.23M]
  ------------------
 1469|  1.68k|    bool valid;
 1470|  1.68k|    LocalLabelVal = getTok().getIntVal(valid);
 1471|  1.68k|    if (!valid) {
  ------------------
  |  Branch (1471:9): [True: 0, False: 1.68k]
  ------------------
 1472|      0|        return true;
 1473|      0|    }
 1474|  1.68k|    if (LocalLabelVal < 0) {
  ------------------
  |  Branch (1474:9): [True: 319, False: 1.36k]
  ------------------
 1475|    319|      if (!TheCondState.Ignore) {
  ------------------
  |  Branch (1475:11): [True: 60, False: 259]
  ------------------
 1476|       |        // return TokError("unexpected token at start of statement");
 1477|     60|        Info.KsError = KS_ERR_ASM_STAT_TOKEN;
 1478|     60|        return true;
 1479|     60|      }
 1480|    259|      IDVal = "";
 1481|  1.36k|    } else {
 1482|  1.36k|      IDVal = getTok().getString();
 1483|  1.36k|      Lex(); // Consume the integer token to be used as an identifier token.
 1484|  1.36k|      if (Lexer.getKind() != AsmToken::Colon) {
  ------------------
  |  Branch (1484:11): [True: 1.02k, False: 338]
  ------------------
 1485|  1.02k|        if (!TheCondState.Ignore) {
  ------------------
  |  Branch (1485:13): [True: 432, False: 596]
  ------------------
 1486|       |          // return TokError("unexpected token at start of statement");
 1487|    432|          Info.KsError = KS_ERR_ASM_STAT_TOKEN;
 1488|    432|          return true;
 1489|    432|        }
 1490|  1.02k|      }
 1491|  1.36k|    }
 1492|  1.23M|  } else if (Lexer.is(AsmToken::Dot)) {
  ------------------
  |  Branch (1492:14): [True: 39.2k, False: 1.19M]
  ------------------
 1493|       |    // Treat '.' as a valid identifier in this context.
 1494|  39.2k|    Lex();
 1495|  39.2k|    IDVal = ".";
 1496|  1.19M|  } else if (Lexer.is(AsmToken::LCurly)) {
  ------------------
  |  Branch (1496:14): [True: 1.05k, False: 1.19M]
  ------------------
 1497|       |    // Treat '{' as a valid identifier in this context.
 1498|  1.05k|    Lex();
 1499|  1.05k|    IDVal = "{";
 1500|  1.19M|  } else if (Lexer.is(AsmToken::RCurly)) {
  ------------------
  |  Branch (1500:14): [True: 445, False: 1.19M]
  ------------------
 1501|       |    // Treat '}' as a valid identifier in this context.
 1502|    445|    Lex();
 1503|    445|    IDVal = "}";
 1504|  1.19M|  } else if (KsSyntax == KS_OPT_SYNTAX_NASM && Lexer.is(AsmToken::LBrac)) {
  ------------------
  |  Branch (1504:14): [True: 0, False: 1.19M]
  |  Branch (1504:48): [True: 0, False: 0]
  ------------------
 1505|       |    // [bits xx]
 1506|      0|    Lex();
 1507|      0|    ID = Lexer.getTok();
 1508|      0|    if (ID.getString().lower() == "bits") {
  ------------------
  |  Branch (1508:9): [True: 0, False: 0]
  ------------------
 1509|      0|        Lex();
 1510|      0|        if (parseNasmDirectiveBits()) {
  ------------------
  |  Branch (1510:13): [True: 0, False: 0]
  ------------------
 1511|      0|            Info.KsError = KS_ERR_ASM_DIRECTIVE_ID;
 1512|      0|            return true;
 1513|      0|        } else {
 1514|      0|            return false;
 1515|      0|        }
 1516|      0|    } else {
 1517|      0|        Info.KsError = KS_ERR_ASM_DIRECTIVE_ID;
 1518|      0|        return true;
 1519|      0|    }
 1520|  1.19M|  } else if (KsSyntax == KS_OPT_SYNTAX_NASM && isNasmDirective(ID.getString())) {
  ------------------
  |  Branch (1520:14): [True: 0, False: 1.19M]
  |  Branch (1520:14): [True: 0, False: 1.19M]
  |  Branch (1520:48): [True: 0, False: 0]
  ------------------
 1521|      0|      Lex();
 1522|      0|      IDVal = ID.getString();
 1523|  1.19M|  } else if (parseIdentifier(IDVal)) {
  ------------------
  |  Branch (1523:14): [True: 7.89k, False: 1.18M]
  ------------------
 1524|  7.89k|    if (!TheCondState.Ignore) {
  ------------------
  |  Branch (1524:9): [True: 5.79k, False: 2.10k]
  ------------------
 1525|       |      // return TokError("unexpected token at start of statement");
 1526|  5.79k|      Info.KsError = KS_ERR_ASM_STAT_TOKEN;
 1527|  5.79k|      return true;
 1528|  5.79k|    }
 1529|  2.10k|    IDVal = "";
 1530|  2.10k|  }
 1531|       |
 1532|       |  // Handle conditional assembly here before checking for skipping.  We
 1533|       |  // have to do this so that .endif isn't skipped in a ".if 0" block for
 1534|       |  // example.
 1535|       |
 1536|  1.22M|  StringMap<DirectiveKind>::const_iterator DirKindIt =
 1537|  1.22M|      DirectiveKindMap.find(IDVal.lower());
 1538|  1.22M|  DirectiveKind DirKind = (DirKindIt == DirectiveKindMap.end())
  ------------------
  |  Branch (1538:27): [True: 730k, False: 499k]
  ------------------
 1539|  1.22M|                              ? DK_NO_DIRECTIVE
 1540|  1.22M|                              : DirKindIt->getValue();
 1541|  1.22M|  switch (DirKind) {
 1542|  1.01M|  default:
  ------------------
  |  Branch (1542:3): [True: 1.01M, False: 210k]
  ------------------
 1543|  1.01M|    break;
 1544|  1.01M|  case DK_IF:
  ------------------
  |  Branch (1544:3): [True: 30.4k, False: 1.19M]
  ------------------
 1545|  30.8k|  case DK_IFEQ:
  ------------------
  |  Branch (1545:3): [True: 473, False: 1.22M]
  ------------------
 1546|  31.3k|  case DK_IFGE:
  ------------------
  |  Branch (1546:3): [True: 456, False: 1.22M]
  ------------------
 1547|  31.8k|  case DK_IFGT:
  ------------------
  |  Branch (1547:3): [True: 465, False: 1.22M]
  ------------------
 1548|  32.2k|  case DK_IFLE:
  ------------------
  |  Branch (1548:3): [True: 424, False: 1.22M]
  ------------------
 1549|  32.4k|  case DK_IFLT:
  ------------------
  |  Branch (1549:3): [True: 263, False: 1.22M]
  ------------------
 1550|  32.6k|  case DK_IFNE:
  ------------------
  |  Branch (1550:3): [True: 130, False: 1.22M]
  ------------------
 1551|  32.6k|    return parseDirectiveIf(IDLoc, DirKind);
 1552|    804|  case DK_IFB:
  ------------------
  |  Branch (1552:3): [True: 804, False: 1.22M]
  ------------------
 1553|    804|    return parseDirectiveIfb(IDLoc, true);
 1554|  2.59k|  case DK_IFNB:
  ------------------
  |  Branch (1554:3): [True: 2.59k, False: 1.22M]
  ------------------
 1555|  2.59k|    return parseDirectiveIfb(IDLoc, false);
 1556|    938|  case DK_IFC:
  ------------------
  |  Branch (1556:3): [True: 938, False: 1.22M]
  ------------------
 1557|    938|    return parseDirectiveIfc(IDLoc, true);
 1558|     68|  case DK_IFEQS:
  ------------------
  |  Branch (1558:3): [True: 68, False: 1.22M]
  ------------------
 1559|     68|    return parseDirectiveIfeqs(IDLoc, true);
 1560|   163k|  case DK_IFNC:
  ------------------
  |  Branch (1560:3): [True: 163k, False: 1.06M]
  ------------------
 1561|   163k|    return parseDirectiveIfc(IDLoc, false);
 1562|  6.23k|  case DK_IFNES:
  ------------------
  |  Branch (1562:3): [True: 6.23k, False: 1.22M]
  ------------------
 1563|  6.23k|    return parseDirectiveIfeqs(IDLoc, false);
 1564|    296|  case DK_IFDEF:
  ------------------
  |  Branch (1564:3): [True: 296, False: 1.22M]
  ------------------
 1565|    296|    return parseDirectiveIfdef(IDLoc, true);
 1566|    497|  case DK_IFNDEF:
  ------------------
  |  Branch (1566:3): [True: 497, False: 1.22M]
  ------------------
 1567|    497|  case DK_IFNOTDEF:
  ------------------
  |  Branch (1567:3): [True: 0, False: 1.22M]
  ------------------
 1568|    497|    return parseDirectiveIfdef(IDLoc, false);
 1569|  1.25k|  case DK_ELSEIF:
  ------------------
  |  Branch (1569:3): [True: 1.25k, False: 1.22M]
  ------------------
 1570|  1.25k|    return parseDirectiveElseIf(IDLoc);
 1571|  1.06k|  case DK_ELSE:
  ------------------
  |  Branch (1571:3): [True: 1.06k, False: 1.22M]
  ------------------
 1572|  1.06k|    return parseDirectiveElse(IDLoc);
 1573|    656|  case DK_ENDIF:
  ------------------
  |  Branch (1573:3): [True: 656, False: 1.22M]
  ------------------
 1574|    656|    return parseDirectiveEndIf(IDLoc);
 1575|  1.22M|  }
 1576|       |
 1577|       |  // Ignore the statement if in the middle of inactive conditional
 1578|       |  // (e.g. ".if 0").
 1579|  1.01M|  if (TheCondState.Ignore) {
  ------------------
  |  Branch (1579:7): [True: 4.58k, False: 1.01M]
  ------------------
 1580|  4.58k|    eatToEndOfStatement();
 1581|  4.58k|    return false;
 1582|  4.58k|  }
 1583|       |
 1584|       |  // FIXME: Recurse on local labels?
 1585|       |
 1586|       |  // See what kind of statement we have.
 1587|  1.01M|  switch (Lexer.getKind()) {
 1588|    523|  case AsmToken::Colon: {
  ------------------
  |  Branch (1588:3): [True: 523, False: 1.01M]
  ------------------
 1589|    523|    bool valid;
 1590|    523|    if (!getTargetParser().isLabel(ID, valid))
  ------------------
  |  Branch (1590:9): [True: 0, False: 523]
  ------------------
 1591|      0|      break;
 1592|    523|    if (!valid) {
  ------------------
  |  Branch (1592:9): [True: 0, False: 523]
  ------------------
 1593|      0|        Info.KsError = KS_ERR_ASM_LABEL_INVALID;
 1594|      0|        return true;
 1595|      0|    }
 1596|    523|    checkForValidSection();
 1597|       |
 1598|       |    // identifier ':'   -> Label.
 1599|    523|    Lex();
 1600|       |
 1601|       |    // Diagnose attempt to use '.' as a label.
 1602|    523|    if (IDVal == ".") {
  ------------------
  |  Branch (1602:9): [True: 238, False: 285]
  ------------------
 1603|       |      //return Error(IDLoc, "invalid use of pseudo-symbol '.' as a label");
 1604|    238|      KsError = KS_ERR_ASM_INVALIDOPERAND;
 1605|    238|      return true;
 1606|    238|    }
 1607|       |
 1608|       |    // Diagnose attempt to use a variable as a label.
 1609|       |    //
 1610|       |    // FIXME: Diagnostics. Note the location of the definition as a label.
 1611|       |    // FIXME: This doesn't diagnose assignment to a symbol which has been
 1612|       |    // implicitly marked as external.
 1613|    285|    MCSymbol *Sym;
 1614|    285|    if (LocalLabelVal == -1) {
  ------------------
  |  Branch (1614:9): [True: 222, False: 63]
  ------------------
 1615|    222|      if (ParsingInlineAsm && SI) {
  ------------------
  |  Branch (1615:11): [True: 0, False: 222]
  |  Branch (1615:31): [True: 0, False: 0]
  ------------------
 1616|      0|        StringRef RewrittenLabel =
 1617|      0|            SI->LookupInlineAsmLabel(IDVal, getSourceManager(), IDLoc, true);
 1618|      0|        assert(RewrittenLabel.size() &&
  ------------------
  |  Branch (1618:9): [True: 0, False: 0]
  |  Branch (1618:9): [True: 0, Folded]
  |  Branch (1618:9): [True: 0, False: 0]
  ------------------
 1619|      0|               "We should have an internal name here.");
 1620|      0|        Info.AsmRewrites->emplace_back(AOK_Label, IDLoc, IDVal.size(),
 1621|      0|                                       RewrittenLabel);
 1622|      0|        IDVal = RewrittenLabel;
 1623|      0|      }
 1624|    222|      if (IDVal.empty()) {
  ------------------
  |  Branch (1624:11): [True: 1, False: 221]
  ------------------
 1625|      1|          return true;
 1626|      1|      }
 1627|    221|      Sym = getContext().getOrCreateSymbol(IDVal);
 1628|    221|    } else {
 1629|     63|      bool valid;
 1630|     63|      Sym = Ctx.createDirectionalLocalSymbol(LocalLabelVal, valid);
 1631|     63|      if (!valid) {
  ------------------
  |  Branch (1631:11): [True: 63, False: 0]
  ------------------
 1632|     63|          Info.KsError = KS_ERR_ASM_LABEL_INVALID;
 1633|     63|          return true;
 1634|     63|      }
 1635|     63|    }
 1636|       |
 1637|    221|    Sym->redefineIfPossible();
 1638|       |
 1639|    221|    if (!Sym->isUndefined() || Sym->isVariable()) {
  ------------------
  |  Branch (1639:9): [True: 5, False: 216]
  |  Branch (1639:32): [True: 0, False: 216]
  ------------------
 1640|       |      //return Error(IDLoc, "invalid symbol redefinition");
 1641|      5|      Info.KsError = KS_ERR_ASM_SYMBOL_REDEFINED;
 1642|      5|      return true;
 1643|      5|    }
 1644|       |
 1645|       |    // Emit the label.
 1646|    216|    if (!ParsingInlineAsm)
  ------------------
  |  Branch (1646:9): [True: 216, False: 0]
  ------------------
 1647|    216|      Out.EmitLabel(Sym);
 1648|       |
 1649|    216|    getTargetParser().onLabelParsed(Sym);
 1650|       |
 1651|       |    // Consume any end of statement token, if present, to avoid spurious
 1652|       |    // AddBlankLine calls().
 1653|    216|    if (Lexer.is(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (1653:9): [True: 61, False: 155]
  ------------------
 1654|     61|      Lex();
 1655|     61|      if (Lexer.is(AsmToken::Eof))
  ------------------
  |  Branch (1655:11): [True: 17, False: 44]
  ------------------
 1656|     17|        return false;
 1657|     61|    }
 1658|       |
 1659|    199|    return false;
 1660|    216|  }
 1661|       |
 1662|   326k|  case AsmToken::Equal:
  ------------------
  |  Branch (1662:3): [True: 326k, False: 687k]
  ------------------
 1663|   326k|    if (!getTargetParser().equalIsAsmAssignment())
  ------------------
  |  Branch (1663:9): [True: 0, False: 326k]
  ------------------
 1664|      0|      break;
 1665|       |    // identifier '=' ... -> assignment statement
 1666|   326k|    Lex();
 1667|       |
 1668|   326k|    if (parseAssignment(IDVal, true)) {
  ------------------
  |  Branch (1668:9): [True: 207k, False: 118k]
  ------------------
 1669|   207k|        Info.KsError = KS_ERR_ASM_DIRECTIVE_EQU;
 1670|   207k|        return true;
 1671|   207k|    }
 1672|   118k|    return false;
 1673|       |
 1674|   687k|  default: // Normal instruction or directive.
  ------------------
  |  Branch (1674:3): [True: 687k, False: 326k]
  ------------------
 1675|   687k|    break;
 1676|  1.01M|  }
 1677|       |
 1678|       |  // If macros are enabled, check to see if this is a macro instantiation.
 1679|   687k|  if (areMacrosEnabled())
  ------------------
  |  Branch (1679:7): [True: 687k, False: 0]
  ------------------
 1680|   687k|    if (const MCAsmMacro *M = lookupMacro(IDVal)) {
  ------------------
  |  Branch (1680:27): [True: 51.4k, False: 635k]
  ------------------
 1681|  51.4k|      return handleMacroEntry(M, IDLoc);
 1682|  51.4k|    }
 1683|       |
 1684|       |  // Otherwise, we have a normal instruction or directive.
 1685|   635k|  if (isDirective(IDVal)) {
  ------------------
  |  Branch (1685:7): [True: 584k, False: 51.4k]
  ------------------
 1686|       |    // There are several entities interested in parsing directives:
 1687|       |    //
 1688|       |    // 1. The target-specific assembly parser. Some directives are target
 1689|       |    //    specific or may potentially behave differently on certain targets.
 1690|       |    // 2. Asm parser extensions. For example, platform-specific parsers
 1691|       |    //    (like the ELF parser) register themselves as extensions.
 1692|       |    // 3. The generic directive parser implemented by this class. These are
 1693|       |    //    all the directives that behave in a target and platform independent
 1694|       |    //    manner, or at least have a default behavior that's shared between
 1695|       |    //    all targets and platforms.
 1696|       |
 1697|       |    // First query the target-specific parser. It will return 'true' if it
 1698|       |    // isn't interested in this directive.
 1699|   584k|      uint64_t BytesInFragment = getStreamer().getCurrentFragmentSize();
 1700|   584k|      if (!getTargetParser().ParseDirective(ID)){
  ------------------
  |  Branch (1700:11): [True: 106k, False: 477k]
  ------------------
 1701|       |        // increment the address for the next statement if the directive
 1702|       |        // has emitted any value to the streamer.
 1703|   106k|        Address += getStreamer().getCurrentFragmentSize() - BytesInFragment;
 1704|   106k|        return false;
 1705|   106k|        }
 1706|       |
 1707|       |    // Next, check the extension directive map to see if any extension has
 1708|       |    // registered itself to parse this directive.
 1709|   477k|    std::pair<MCAsmParserExtension *, DirectiveHandler> Handler =
 1710|   477k|        ExtensionDirectiveMap.lookup(IDVal);
 1711|   477k|    if (Handler.first)
  ------------------
  |  Branch (1711:9): [True: 4.74k, False: 472k]
  ------------------
 1712|  4.74k|      return (*Handler.second)(Handler.first, IDVal, IDLoc);
 1713|       |
 1714|       |    // Finally, if no one else is interested in this directive, it must be
 1715|       |    // generic and familiar to this class.
 1716|   472k|    switch (DirKind) {
 1717|   184k|    default:
  ------------------
  |  Branch (1717:5): [True: 184k, False: 287k]
  ------------------
 1718|   184k|      break;
 1719|   184k|    case DK_SET:
  ------------------
  |  Branch (1719:5): [True: 1.07k, False: 471k]
  ------------------
 1720|  1.07k|    case DK_EQU:
  ------------------
  |  Branch (1720:5): [True: 1, False: 472k]
  ------------------
 1721|  1.07k|      return parseDirectiveSet(IDVal, true);
 1722|      0|    case DK_EQUIV:
  ------------------
  |  Branch (1722:5): [True: 0, False: 472k]
  ------------------
 1723|      0|      return parseDirectiveSet(IDVal, false);
 1724|    220|    case DK_ASCII:
  ------------------
  |  Branch (1724:5): [True: 220, False: 472k]
  ------------------
 1725|    220|      return parseDirectiveAscii(IDVal, false);
 1726|    309|    case DK_ASCIZ:
  ------------------
  |  Branch (1726:5): [True: 309, False: 472k]
  ------------------
 1727|    980|    case DK_STRING:
  ------------------
  |  Branch (1727:5): [True: 671, False: 471k]
  ------------------
 1728|    980|      return parseDirectiveAscii(IDVal, true);
 1729|    362|    case DK_BYTE:
  ------------------
  |  Branch (1729:5): [True: 362, False: 472k]
  ------------------
 1730|    362|      return parseDirectiveValue(1, Info.KsError);
 1731|     87|    case DK_SHORT:
  ------------------
  |  Branch (1731:5): [True: 87, False: 472k]
  ------------------
 1732|     90|    case DK_VALUE:
  ------------------
  |  Branch (1732:5): [True: 3, False: 472k]
  ------------------
 1733|    180|    case DK_2BYTE:
  ------------------
  |  Branch (1733:5): [True: 90, False: 472k]
  ------------------
 1734|    180|      return parseDirectiveValue(2, Info.KsError);
 1735|    308|    case DK_LONG:
  ------------------
  |  Branch (1735:5): [True: 308, False: 472k]
  ------------------
 1736|  5.47k|    case DK_INT:
  ------------------
  |  Branch (1736:5): [True: 5.16k, False: 467k]
  ------------------
 1737|  5.70k|    case DK_4BYTE:
  ------------------
  |  Branch (1737:5): [True: 224, False: 472k]
  ------------------
 1738|  5.70k|      return parseDirectiveValue(4, Info.KsError);
 1739|     23|    case DK_QUAD:
  ------------------
  |  Branch (1739:5): [True: 23, False: 472k]
  ------------------
 1740|    275|    case DK_8BYTE:
  ------------------
  |  Branch (1740:5): [True: 252, False: 472k]
  ------------------
 1741|    275|      return parseDirectiveValue(8, Info.KsError);
 1742|    301|    case DK_OCTA:
  ------------------
  |  Branch (1742:5): [True: 301, False: 472k]
  ------------------
 1743|    301|      return parseDirectiveOctaValue(Info.KsError);
 1744|    118|    case DK_SINGLE:
  ------------------
  |  Branch (1744:5): [True: 118, False: 472k]
  ------------------
 1745|  6.75k|    case DK_FLOAT:
  ------------------
  |  Branch (1745:5): [True: 6.63k, False: 465k]
  ------------------
 1746|  6.75k|      return parseDirectiveRealValue(APFloat::IEEEsingle);
 1747|      3|    case DK_DOUBLE:
  ------------------
  |  Branch (1747:5): [True: 3, False: 472k]
  ------------------
 1748|      3|      return parseDirectiveRealValue(APFloat::IEEEdouble);
 1749|  14.8k|    case DK_ALIGN: {
  ------------------
  |  Branch (1749:5): [True: 14.8k, False: 457k]
  ------------------
 1750|  14.8k|      bool IsPow2 = !getContext().getAsmInfo()->getAlignmentIsInBytes();
 1751|  14.8k|      return parseDirectiveAlign(IsPow2, /*ExprSize=*/1);
 1752|    118|    }
 1753|     73|    case DK_ALIGN32: {
  ------------------
  |  Branch (1753:5): [True: 73, False: 472k]
  ------------------
 1754|     73|      bool IsPow2 = !getContext().getAsmInfo()->getAlignmentIsInBytes();
 1755|     73|      return parseDirectiveAlign(IsPow2, /*ExprSize=*/4);
 1756|    118|    }
 1757|    451|    case DK_BALIGN:
  ------------------
  |  Branch (1757:5): [True: 451, False: 472k]
  ------------------
 1758|    451|      return parseDirectiveAlign(/*IsPow2=*/false, /*ExprSize=*/1);
 1759|    265|    case DK_BALIGNW:
  ------------------
  |  Branch (1759:5): [True: 265, False: 472k]
  ------------------
 1760|    265|      return parseDirectiveAlign(/*IsPow2=*/false, /*ExprSize=*/2);
 1761|    119|    case DK_BALIGNL:
  ------------------
  |  Branch (1761:5): [True: 119, False: 472k]
  ------------------
 1762|    119|      return parseDirectiveAlign(/*IsPow2=*/false, /*ExprSize=*/4);
 1763|      0|    case DK_P2ALIGN:
  ------------------
  |  Branch (1763:5): [True: 0, False: 472k]
  ------------------
 1764|      0|      return parseDirectiveAlign(/*IsPow2=*/true, /*ExprSize=*/1);
 1765|      0|    case DK_P2ALIGNW:
  ------------------
  |  Branch (1765:5): [True: 0, False: 472k]
  ------------------
 1766|      0|      return parseDirectiveAlign(/*IsPow2=*/true, /*ExprSize=*/2);
 1767|      0|    case DK_P2ALIGNL:
  ------------------
  |  Branch (1767:5): [True: 0, False: 472k]
  ------------------
 1768|      0|      return parseDirectiveAlign(/*IsPow2=*/true, /*ExprSize=*/4);
 1769|  1.80k|    case DK_ORG:
  ------------------
  |  Branch (1769:5): [True: 1.80k, False: 470k]
  ------------------
 1770|  1.80k|      return parseDirectiveOrg();
 1771|  9.32k|    case DK_FILL:
  ------------------
  |  Branch (1771:5): [True: 9.32k, False: 463k]
  ------------------
 1772|  9.32k|      return parseDirectiveFill();
 1773|  2.74k|    case DK_ZERO:
  ------------------
  |  Branch (1773:5): [True: 2.74k, False: 469k]
  ------------------
 1774|  2.74k|      return parseDirectiveZero();
 1775|      0|    case DK_EXTERN:
  ------------------
  |  Branch (1775:5): [True: 0, False: 472k]
  ------------------
 1776|      0|      eatToEndOfStatement(); // .extern is the default, ignore it.
 1777|      0|      return false;
 1778|    115|    case DK_GLOBL:
  ------------------
  |  Branch (1778:5): [True: 115, False: 472k]
  ------------------
 1779|    126|    case DK_GLOBAL:
  ------------------
  |  Branch (1779:5): [True: 11, False: 472k]
  ------------------
 1780|    126|      return parseDirectiveSymbolAttribute(MCSA_Global);
 1781|      0|    case DK_LAZY_REFERENCE:
  ------------------
  |  Branch (1781:5): [True: 0, False: 472k]
  ------------------
 1782|      0|      return parseDirectiveSymbolAttribute(MCSA_LazyReference);
 1783|      0|    case DK_NO_DEAD_STRIP:
  ------------------
  |  Branch (1783:5): [True: 0, False: 472k]
  ------------------
 1784|      0|      return parseDirectiveSymbolAttribute(MCSA_NoDeadStrip);
 1785|      0|    case DK_SYMBOL_RESOLVER:
  ------------------
  |  Branch (1785:5): [True: 0, False: 472k]
  ------------------
 1786|      0|      return parseDirectiveSymbolAttribute(MCSA_SymbolResolver);
 1787|      0|    case DK_PRIVATE_EXTERN:
  ------------------
  |  Branch (1787:5): [True: 0, False: 472k]
  ------------------
 1788|      0|      return parseDirectiveSymbolAttribute(MCSA_PrivateExtern);
 1789|      0|    case DK_REFERENCE:
  ------------------
  |  Branch (1789:5): [True: 0, False: 472k]
  ------------------
 1790|      0|      return parseDirectiveSymbolAttribute(MCSA_Reference);
 1791|      0|    case DK_WEAK_DEFINITION:
  ------------------
  |  Branch (1791:5): [True: 0, False: 472k]
  ------------------
 1792|      0|      return parseDirectiveSymbolAttribute(MCSA_WeakDefinition);
 1793|      0|    case DK_WEAK_REFERENCE:
  ------------------
  |  Branch (1793:5): [True: 0, False: 472k]
  ------------------
 1794|      0|      return parseDirectiveSymbolAttribute(MCSA_WeakReference);
 1795|      0|    case DK_WEAK_DEF_CAN_BE_HIDDEN:
  ------------------
  |  Branch (1795:5): [True: 0, False: 472k]
  ------------------
 1796|      0|      return parseDirectiveSymbolAttribute(MCSA_WeakDefAutoPrivate);
 1797|  1.88k|    case DK_COMM:
  ------------------
  |  Branch (1797:5): [True: 1.88k, False: 470k]
  ------------------
 1798|  1.91k|    case DK_COMMON:
  ------------------
  |  Branch (1798:5): [True: 34, False: 472k]
  ------------------
 1799|  1.91k|      return parseDirectiveComm(/*IsLocal=*/false);
 1800|    252|    case DK_LCOMM:
  ------------------
  |  Branch (1800:5): [True: 252, False: 472k]
  ------------------
 1801|    252|      return parseDirectiveComm(/*IsLocal=*/true);
 1802|     11|    case DK_ABORT:
  ------------------
  |  Branch (1802:5): [True: 11, False: 472k]
  ------------------
 1803|     11|      return parseDirectiveAbort();
 1804|    217|    case DK_INCLUDE:
  ------------------
  |  Branch (1804:5): [True: 217, False: 472k]
  ------------------
 1805|    217|      return parseDirectiveInclude();
 1806|      0|    case DK_INCBIN:
  ------------------
  |  Branch (1806:5): [True: 0, False: 472k]
  ------------------
 1807|      0|      return parseDirectiveIncbin();
 1808|      1|    case DK_CODE16:
  ------------------
  |  Branch (1808:5): [True: 1, False: 472k]
  ------------------
 1809|      1|    case DK_CODE16GCC:
  ------------------
  |  Branch (1809:5): [True: 0, False: 472k]
  ------------------
 1810|       |      // return TokError(Twine(IDVal) + " not supported yet");
 1811|      1|      Info.KsError = KS_ERR_ASM_UNSUPPORTED;
 1812|      1|      return true;
 1813|   161k|    case DK_REPT:
  ------------------
  |  Branch (1813:5): [True: 161k, False: 311k]
  ------------------
 1814|   161k|      return parseDirectiveRept(IDLoc, IDVal);
 1815|  3.05k|    case DK_IRP:
  ------------------
  |  Branch (1815:5): [True: 3.05k, False: 469k]
  ------------------
 1816|  3.05k|      return parseDirectiveIrp(IDLoc);
 1817|  3.31k|    case DK_IRPC:
  ------------------
  |  Branch (1817:5): [True: 3.31k, False: 469k]
  ------------------
 1818|  3.31k|      return parseDirectiveIrpc(IDLoc);
 1819|  3.08k|    case DK_ENDR:
  ------------------
  |  Branch (1819:5): [True: 3.08k, False: 469k]
  ------------------
 1820|  3.08k|      return parseDirectiveEndr(IDLoc);
 1821|      0|    case DK_BUNDLE_ALIGN_MODE:
  ------------------
  |  Branch (1821:5): [True: 0, False: 472k]
  ------------------
 1822|      0|      return parseDirectiveBundleAlignMode();
 1823|      0|    case DK_BUNDLE_LOCK:
  ------------------
  |  Branch (1823:5): [True: 0, False: 472k]
  ------------------
 1824|      0|      return parseDirectiveBundleLock();
 1825|      0|    case DK_BUNDLE_UNLOCK:
  ------------------
  |  Branch (1825:5): [True: 0, False: 472k]
  ------------------
 1826|      0|      return parseDirectiveBundleUnlock();
 1827|      0|    case DK_SLEB128:
  ------------------
  |  Branch (1827:5): [True: 0, False: 472k]
  ------------------
 1828|      0|      return parseDirectiveLEB128(true);
 1829|      0|    case DK_ULEB128:
  ------------------
  |  Branch (1829:5): [True: 0, False: 472k]
  ------------------
 1830|      0|      return parseDirectiveLEB128(false);
 1831|    411|    case DK_SPACE:
  ------------------
  |  Branch (1831:5): [True: 411, False: 472k]
  ------------------
 1832|  2.53k|    case DK_SKIP:
  ------------------
  |  Branch (1832:5): [True: 2.12k, False: 470k]
  ------------------
 1833|  2.53k|      return parseDirectiveSpace(IDVal);
 1834|  2.22k|    case DK_FILE:
  ------------------
  |  Branch (1834:5): [True: 2.22k, False: 470k]
  ------------------
 1835|  2.22k|      return parseDirectiveFile(IDLoc);
 1836|  3.85k|    case DK_LINE:
  ------------------
  |  Branch (1836:5): [True: 3.85k, False: 468k]
  ------------------
 1837|  3.85k|      return parseDirectiveLine();
 1838|    262|    case DK_LOC:
  ------------------
  |  Branch (1838:5): [True: 262, False: 472k]
  ------------------
 1839|    262|      return parseDirectiveLoc();
 1840|      0|    case DK_STABS:
  ------------------
  |  Branch (1840:5): [True: 0, False: 472k]
  ------------------
 1841|      0|      return parseDirectiveStabs();
 1842|      0|    case DK_CV_FILE:
  ------------------
  |  Branch (1842:5): [True: 0, False: 472k]
  ------------------
 1843|      0|      return parseDirectiveCVFile();
 1844|      0|    case DK_CV_LOC:
  ------------------
  |  Branch (1844:5): [True: 0, False: 472k]
  ------------------
 1845|      0|      return parseDirectiveCVLoc();
 1846|      0|    case DK_CV_LINETABLE:
  ------------------
  |  Branch (1846:5): [True: 0, False: 472k]
  ------------------
 1847|      0|      return parseDirectiveCVLinetable();
 1848|      0|    case DK_CV_INLINE_LINETABLE:
  ------------------
  |  Branch (1848:5): [True: 0, False: 472k]
  ------------------
 1849|      0|      return parseDirectiveCVInlineLinetable();
 1850|      0|    case DK_CV_STRINGTABLE:
  ------------------
  |  Branch (1850:5): [True: 0, False: 472k]
  ------------------
 1851|      0|      return parseDirectiveCVStringTable();
 1852|      0|    case DK_CV_FILECHECKSUMS:
  ------------------
  |  Branch (1852:5): [True: 0, False: 472k]
  ------------------
 1853|      0|      return parseDirectiveCVFileChecksums();
 1854|      0|    case DK_CFI_SECTIONS:
  ------------------
  |  Branch (1854:5): [True: 0, False: 472k]
  ------------------
 1855|      0|      return parseDirectiveCFISections();
 1856|      0|    case DK_CFI_STARTPROC:
  ------------------
  |  Branch (1856:5): [True: 0, False: 472k]
  ------------------
 1857|      0|      return parseDirectiveCFIStartProc();
 1858|      0|    case DK_CFI_ENDPROC:
  ------------------
  |  Branch (1858:5): [True: 0, False: 472k]
  ------------------
 1859|      0|      return parseDirectiveCFIEndProc();
 1860|      0|    case DK_CFI_DEF_CFA:
  ------------------
  |  Branch (1860:5): [True: 0, False: 472k]
  ------------------
 1861|      0|      return parseDirectiveCFIDefCfa(IDLoc);
 1862|      0|    case DK_CFI_DEF_CFA_OFFSET:
  ------------------
  |  Branch (1862:5): [True: 0, False: 472k]
  ------------------
 1863|      0|      return parseDirectiveCFIDefCfaOffset();
 1864|      0|    case DK_CFI_ADJUST_CFA_OFFSET:
  ------------------
  |  Branch (1864:5): [True: 0, False: 472k]
  ------------------
 1865|      0|      return parseDirectiveCFIAdjustCfaOffset();
 1866|      0|    case DK_CFI_DEF_CFA_REGISTER:
  ------------------
  |  Branch (1866:5): [True: 0, False: 472k]
  ------------------
 1867|      0|      return parseDirectiveCFIDefCfaRegister(IDLoc);
 1868|      0|    case DK_CFI_OFFSET:
  ------------------
  |  Branch (1868:5): [True: 0, False: 472k]
  ------------------
 1869|      0|      return parseDirectiveCFIOffset(IDLoc);
 1870|      0|    case DK_CFI_REL_OFFSET:
  ------------------
  |  Branch (1870:5): [True: 0, False: 472k]
  ------------------
 1871|      0|      return parseDirectiveCFIRelOffset(IDLoc);
 1872|      0|    case DK_CFI_PERSONALITY:
  ------------------
  |  Branch (1872:5): [True: 0, False: 472k]
  ------------------
 1873|      0|      return parseDirectiveCFIPersonalityOrLsda(true);
 1874|      0|    case DK_CFI_LSDA:
  ------------------
  |  Branch (1874:5): [True: 0, False: 472k]
  ------------------
 1875|      0|      return parseDirectiveCFIPersonalityOrLsda(false);
 1876|      0|    case DK_CFI_REMEMBER_STATE:
  ------------------
  |  Branch (1876:5): [True: 0, False: 472k]
  ------------------
 1877|      0|      return parseDirectiveCFIRememberState();
 1878|      0|    case DK_CFI_RESTORE_STATE:
  ------------------
  |  Branch (1878:5): [True: 0, False: 472k]
  ------------------
 1879|      0|      return parseDirectiveCFIRestoreState();
 1880|      0|    case DK_CFI_SAME_VALUE:
  ------------------
  |  Branch (1880:5): [True: 0, False: 472k]
  ------------------
 1881|      0|      return parseDirectiveCFISameValue(IDLoc);
 1882|      0|    case DK_CFI_RESTORE:
  ------------------
  |  Branch (1882:5): [True: 0, False: 472k]
  ------------------
 1883|      0|      return parseDirectiveCFIRestore(IDLoc);
 1884|      0|    case DK_CFI_ESCAPE:
  ------------------
  |  Branch (1884:5): [True: 0, False: 472k]
  ------------------
 1885|      0|      return parseDirectiveCFIEscape();
 1886|      0|    case DK_CFI_SIGNAL_FRAME:
  ------------------
  |  Branch (1886:5): [True: 0, False: 472k]
  ------------------
 1887|      0|      return parseDirectiveCFISignalFrame();
 1888|      0|    case DK_CFI_UNDEFINED:
  ------------------
  |  Branch (1888:5): [True: 0, False: 472k]
  ------------------
 1889|      0|      return parseDirectiveCFIUndefined(IDLoc);
 1890|      0|    case DK_CFI_REGISTER:
  ------------------
  |  Branch (1890:5): [True: 0, False: 472k]
  ------------------
 1891|      0|      return parseDirectiveCFIRegister(IDLoc);
 1892|      0|    case DK_CFI_WINDOW_SAVE:
  ------------------
  |  Branch (1892:5): [True: 0, False: 472k]
  ------------------
 1893|      0|      return parseDirectiveCFIWindowSave();
 1894|      0|    case DK_MACROS_ON:
  ------------------
  |  Branch (1894:5): [True: 0, False: 472k]
  ------------------
 1895|      0|    case DK_MACROS_OFF:
  ------------------
  |  Branch (1895:5): [True: 0, False: 472k]
  ------------------
 1896|      0|      return parseDirectiveMacrosOnOff(IDVal);
 1897|  3.13k|    case DK_MACRO:
  ------------------
  |  Branch (1897:5): [True: 3.13k, False: 469k]
  ------------------
 1898|  3.13k|      return parseDirectiveMacro(IDLoc);
 1899|      0|    case DK_EXITM:
  ------------------
  |  Branch (1899:5): [True: 0, False: 472k]
  ------------------
 1900|      0|      return parseDirectiveExitMacro(IDVal);
 1901|    769|    case DK_ENDM:
  ------------------
  |  Branch (1901:5): [True: 769, False: 471k]
  ------------------
 1902|  48.6k|    case DK_ENDMACRO:
  ------------------
  |  Branch (1902:5): [True: 47.9k, False: 424k]
  ------------------
 1903|  48.6k|      return parseDirectiveEndMacro(IDVal);
 1904|     31|    case DK_PURGEM:
  ------------------
  |  Branch (1904:5): [True: 31, False: 472k]
  ------------------
 1905|     31|      return parseDirectivePurgeMacro(IDLoc);
 1906|  1.36k|    case DK_END:
  ------------------
  |  Branch (1906:5): [True: 1.36k, False: 471k]
  ------------------
 1907|  1.36k|      return parseDirectiveEnd(IDLoc);
 1908|    293|    case DK_ERR:
  ------------------
  |  Branch (1908:5): [True: 293, False: 472k]
  ------------------
 1909|    293|      return parseDirectiveError(IDLoc, false);
 1910|    247|    case DK_ERROR:
  ------------------
  |  Branch (1910:5): [True: 247, False: 472k]
  ------------------
 1911|    247|      return parseDirectiveError(IDLoc, true);
 1912|  1.40k|    case DK_WARNING:
  ------------------
  |  Branch (1912:5): [True: 1.40k, False: 471k]
  ------------------
 1913|  1.40k|      return parseDirectiveWarning(IDLoc);
 1914|  5.01k|    case DK_RELOC:
  ------------------
  |  Branch (1914:5): [True: 5.01k, False: 467k]
  ------------------
 1915|  5.01k|      return parseDirectiveReloc(IDLoc);
 1916|      0|    case DK_NASM_BITS:
  ------------------
  |  Branch (1916:5): [True: 0, False: 472k]
  ------------------
 1917|      0|      if (parseNasmDirectiveBits()) {
  ------------------
  |  Branch (1917:11): [True: 0, False: 0]
  ------------------
 1918|      0|          Info.KsError = KS_ERR_ASM_DIRECTIVE_ID;
 1919|      0|          return true;
 1920|      0|      } else {
 1921|      0|          return false;
 1922|      0|      }
 1923|      0|    case DK_NASM_USE32:
  ------------------
  |  Branch (1923:5): [True: 0, False: 472k]
  ------------------
 1924|      0|      return parseNasmDirectiveUse32();
 1925|      0|    case DK_NASM_DEFAULT:
  ------------------
  |  Branch (1925:5): [True: 0, False: 472k]
  ------------------
 1926|      0|      if (parseNasmDirectiveDefault()) {
  ------------------
  |  Branch (1926:11): [True: 0, False: 0]
  ------------------
 1927|      0|        Info.KsError = KS_ERR_ASM_DIRECTIVE_ID;
 1928|      0|        return true;
 1929|      0|      } else {
 1930|      0|        return false;
 1931|      0|      }
 1932|   472k|    }
 1933|       |
 1934|       |    //return Error(IDLoc, "unknown directive");
 1935|   184k|    KsError = KS_ERR_ASM_DIRECTIVE_UNKNOWN;
 1936|   184k|    return true;
 1937|   472k|  }
 1938|       |
 1939|       |  // __asm _emit or __asm __emit
 1940|  51.4k|  if (ParsingInlineAsm && (IDVal == "_emit" || IDVal == "__emit" ||
  ------------------
  |  Branch (1940:7): [True: 0, False: 51.4k]
  |  Branch (1940:7): [True: 0, False: 51.4k]
  |  Branch (1940:28): [True: 0, False: 0]
  |  Branch (1940:48): [True: 0, False: 0]
  ------------------
 1941|      0|                           IDVal == "_EMIT" || IDVal == "__EMIT"))
  ------------------
  |  Branch (1941:28): [True: 0, False: 0]
  |  Branch (1941:48): [True: 0, False: 0]
  ------------------
 1942|      0|    return parseDirectiveMSEmit(IDLoc, Info, IDVal.size());
 1943|       |
 1944|       |  // __asm align
 1945|  51.4k|  if (ParsingInlineAsm && (IDVal == "align" || IDVal == "ALIGN"))
  ------------------
  |  Branch (1945:7): [True: 0, False: 51.4k]
  |  Branch (1945:7): [True: 0, False: 51.4k]
  |  Branch (1945:28): [True: 0, False: 0]
  |  Branch (1945:48): [True: 0, False: 0]
  ------------------
 1946|      0|    return parseDirectiveMSAlign(IDLoc, Info);
 1947|       |
 1948|  51.4k|  if (ParsingInlineAsm && (IDVal == "even"))
  ------------------
  |  Branch (1948:7): [True: 0, False: 51.4k]
  |  Branch (1948:7): [True: 0, False: 51.4k]
  |  Branch (1948:27): [True: 0, False: 0]
  ------------------
 1949|      0|    Info.AsmRewrites->emplace_back(AOK_EVEN, IDLoc, 4);
 1950|  51.4k|  checkForValidSection();
 1951|       |
 1952|       |  // Canonicalize the opcode to lower case.
 1953|  51.4k|  std::string OpcodeStr = IDVal.lower();
 1954|  51.4k|  ParseInstructionInfo IInfo(Info.AsmRewrites);
 1955|       |  //printf(">> Going to ParseInstruction()\n");
 1956|  51.4k|  bool HadError = getTargetParser().ParseInstruction(IInfo, OpcodeStr, ID,
 1957|  51.4k|                                                     Info.ParsedOperands, Info.KsError);
 1958|  51.4k|  Info.ParseError = HadError;
 1959|       |
 1960|       |  // If parsing succeeded, match the instruction.
 1961|  51.4k|  if (!HadError) {
  ------------------
  |  Branch (1961:7): [True: 35.6k, False: 15.7k]
  ------------------
 1962|  35.6k|    uint64_t ErrorInfo;
 1963|       |    //printf(">> Going to MatchAndEmitInstruction()\n");
 1964|  35.6k|    return getTargetParser().MatchAndEmitInstruction(IDLoc, Info.Opcode,
 1965|  35.6k|                                              Info.ParsedOperands, Out,
 1966|  35.6k|                                              ErrorInfo, ParsingInlineAsm,
 1967|  35.6k|                                              Info.KsError, Address);
 1968|  35.6k|  }
 1969|       |
 1970|  15.7k|  return true;
 1971|  51.4k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser31parseCppHashLineFilenameCommentEN7llvm_ks5SMLocE:
 1986|  3.56M|bool AsmParser::parseCppHashLineFilenameComment(SMLoc L) {
 1987|  3.56M|  Lex(); // Eat the hash token.
 1988|       |
 1989|  3.56M|  if (getLexer().isNot(AsmToken::Integer)) {
  ------------------
  |  Branch (1989:7): [True: 3.55M, False: 9.57k]
  ------------------
 1990|       |    // Consume the line since in cases it is not a well-formed line directive,
 1991|       |    // as if were simply a full line comment.
 1992|  3.55M|    eatToEndOfLine();
 1993|  3.55M|    return false;
 1994|  3.55M|  }
 1995|       |
 1996|  9.57k|  bool valid;
 1997|  9.57k|  int64_t LineNumber = getTok().getIntVal(valid);
 1998|  9.57k|  if (!valid) {
  ------------------
  |  Branch (1998:7): [True: 0, False: 9.57k]
  ------------------
 1999|      0|      return true;
 2000|      0|  }
 2001|  9.57k|  Lex();
 2002|       |
 2003|  9.57k|  if (getLexer().isNot(AsmToken::String)) {
  ------------------
  |  Branch (2003:7): [True: 9.15k, False: 422]
  ------------------
 2004|  9.15k|    eatToEndOfLine();
 2005|  9.15k|    return false;
 2006|  9.15k|  }
 2007|       |
 2008|    422|  StringRef Filename = getTok().getString();
 2009|       |  // Get rid of the enclosing quotes.
 2010|    422|  Filename = Filename.substr(1, Filename.size() - 2);
 2011|       |
 2012|       |  // Save the SMLoc, Filename and LineNumber for later use by diagnostics.
 2013|    422|  CppHashLoc = L;
 2014|    422|  CppHashFilename = Filename;
 2015|    422|  CppHashLineNumber = LineNumber;
 2016|    422|  CppHashBuf = CurBuffer;
 2017|       |
 2018|       |  // Ignore any trailing characters, they're just comment.
 2019|    422|  eatToEndOfLine();
 2020|    422|  return false;
 2021|  9.57k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser14eatToEndOfLineEv:
 1976|  3.56M|{
 1977|  3.56M|  if (!Lexer.is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (1977:7): [True: 80.0k, False: 3.48M]
  ------------------
 1978|  80.0k|    Lexer.LexUntilEndOfLine();
 1979|       |  // Eat EOL.
 1980|  3.56M|  Lex();
 1981|  3.56M|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser16parseDirectiveIfEN7llvm_ks5SMLocENS0_13DirectiveKindE:
 4909|  32.6k|{
 4910|  32.6k|  TheCondStack.push_back(TheCondState);
 4911|  32.6k|  TheCondState.TheCond = AsmCond::IfCond;
 4912|  32.6k|  if (TheCondState.Ignore) {
  ------------------
  |  Branch (4912:7): [True: 502, False: 32.1k]
  ------------------
 4913|    502|    eatToEndOfStatement();
 4914|  32.1k|  } else {
 4915|  32.1k|    int64_t ExprValue;
 4916|  32.1k|    if (parseAbsoluteExpression(ExprValue)) {
  ------------------
  |  Branch (4916:9): [True: 1.60k, False: 30.5k]
  ------------------
 4917|  1.60k|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4918|  1.60k|      return true;
 4919|  1.60k|    }
 4920|       |
 4921|  30.5k|    if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4921:9): [True: 498, False: 30.0k]
  ------------------
 4922|       |      //return TokError("unexpected token in '.if' directive");
 4923|    498|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4924|    498|      return true;
 4925|    498|    }
 4926|       |
 4927|  30.0k|    Lex();
 4928|       |
 4929|  30.0k|    switch (DirKind) {
 4930|      0|    default:
  ------------------
  |  Branch (4930:5): [True: 0, False: 30.0k]
  ------------------
 4931|      0|      llvm_unreachable("unsupported directive");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 4932|  28.4k|    case DK_IF:
  ------------------
  |  Branch (4932:5): [True: 28.4k, False: 1.56k]
  ------------------
 4933|  28.5k|    case DK_IFNE:
  ------------------
  |  Branch (4933:5): [True: 85, False: 29.9k]
  ------------------
 4934|  28.5k|      break;
 4935|    413|    case DK_IFEQ:
  ------------------
  |  Branch (4935:5): [True: 413, False: 29.6k]
  ------------------
 4936|    413|      ExprValue = ExprValue == 0;
 4937|    413|      break;
 4938|    414|    case DK_IFGE:
  ------------------
  |  Branch (4938:5): [True: 414, False: 29.6k]
  ------------------
 4939|    414|      ExprValue = ExprValue >= 0;
 4940|    414|      break;
 4941|    286|    case DK_IFGT:
  ------------------
  |  Branch (4941:5): [True: 286, False: 29.7k]
  ------------------
 4942|    286|      ExprValue = ExprValue > 0;
 4943|    286|      break;
 4944|    291|    case DK_IFLE:
  ------------------
  |  Branch (4944:5): [True: 291, False: 29.7k]
  ------------------
 4945|    291|      ExprValue = ExprValue <= 0;
 4946|    291|      break;
 4947|     75|    case DK_IFLT:
  ------------------
  |  Branch (4947:5): [True: 75, False: 29.9k]
  ------------------
 4948|     75|      ExprValue = ExprValue < 0;
 4949|     75|      break;
 4950|  30.0k|    }
 4951|       |
 4952|  30.0k|    TheCondState.CondMet = ExprValue;
 4953|  30.0k|    TheCondState.Ignore = !TheCondState.CondMet;
 4954|  30.0k|  }
 4955|       |
 4956|  30.5k|  return false;
 4957|  32.6k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser17parseDirectiveIfbEN7llvm_ks5SMLocEb:
 4962|  3.39k|{
 4963|  3.39k|  TheCondStack.push_back(TheCondState);
 4964|  3.39k|  TheCondState.TheCond = AsmCond::IfCond;
 4965|       |
 4966|  3.39k|  if (TheCondState.Ignore) {
  ------------------
  |  Branch (4966:7): [True: 558, False: 2.83k]
  ------------------
 4967|    558|    eatToEndOfStatement();
 4968|  2.83k|  } else {
 4969|  2.83k|    StringRef Str = parseStringToEndOfStatement();
 4970|       |
 4971|  2.83k|    if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4971:9): [True: 1, False: 2.83k]
  ------------------
 4972|       |      //return TokError("unexpected token in '.ifb' directive");
 4973|      1|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4974|      1|      return true;
 4975|      1|    }
 4976|       |
 4977|  2.83k|    Lex();
 4978|       |
 4979|  2.83k|    TheCondState.CondMet = ExpectBlank == Str.empty();
 4980|  2.83k|    TheCondState.Ignore = !TheCondState.CondMet;
 4981|  2.83k|  }
 4982|       |
 4983|  3.39k|  return false;
 4984|  3.39k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser17parseDirectiveIfcEN7llvm_ks5SMLocEb:
 4990|   164k|{
 4991|   164k|  TheCondStack.push_back(TheCondState);
 4992|   164k|  TheCondState.TheCond = AsmCond::IfCond;
 4993|       |
 4994|   164k|  if (TheCondState.Ignore) {
  ------------------
  |  Branch (4994:7): [True: 335, False: 164k]
  ------------------
 4995|    335|    eatToEndOfStatement();
 4996|   164k|  } else {
 4997|   164k|    StringRef Str1 = parseStringToComma();
 4998|       |
 4999|   164k|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (4999:9): [True: 142k, False: 22.3k]
  ------------------
 5000|       |      //return TokError("unexpected token in '.ifc' directive");
 5001|   142k|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5002|   142k|      return true;
 5003|   142k|    }
 5004|       |
 5005|  22.3k|    Lex();
 5006|       |
 5007|  22.3k|    StringRef Str2 = parseStringToEndOfStatement();
 5008|       |
 5009|  22.3k|    if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5009:9): [True: 1, False: 22.3k]
  ------------------
 5010|       |      //return TokError("unexpected token in '.ifc' directive");
 5011|      1|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5012|      1|      return true;
 5013|      1|    }
 5014|       |
 5015|  22.3k|    Lex();
 5016|       |
 5017|  22.3k|    TheCondState.CondMet = ExpectEqual == (Str1.trim() == Str2.trim());
 5018|  22.3k|    TheCondState.Ignore = !TheCondState.CondMet;
 5019|  22.3k|  }
 5020|       |
 5021|  22.6k|  return false;
 5022|   164k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseStringToCommaEv:
  802|   164k|StringRef AsmParser::parseStringToComma() {
  803|   164k|  const char *Start = getTok().getLoc().getPointer();
  804|       |
  805|  1.92M|  while (Lexer.isNot(AsmToken::EndOfStatement) &&
  ------------------
  |  Branch (805:10): [True: 1.78M, False: 142k]
  ------------------
  806|  1.78M|         Lexer.isNot(AsmToken::Comma) && Lexer.isNot(AsmToken::Eof))
  ------------------
  |  Branch (806:10): [True: 1.76M, False: 22.3k]
  |  Branch (806:42): [True: 1.76M, False: 1]
  ------------------
  807|  1.76M|    Lex();
  808|       |
  809|   164k|  const char *End = getTok().getLoc().getPointer();
  810|   164k|  return StringRef(Start, End - Start);
  811|   164k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveIfeqsEN7llvm_ks5SMLocEb:
 5027|  6.30k|{
 5028|  6.30k|  if (Lexer.isNot(AsmToken::String)) {
  ------------------
  |  Branch (5028:7): [True: 1.58k, False: 4.71k]
  ------------------
 5029|       |    //if (ExpectEqual)
 5030|       |    //  TokError("expected string parameter for '.ifeqs' directive");
 5031|       |    //else
 5032|       |    //  TokError("expected string parameter for '.ifnes' directive");
 5033|  1.58k|    eatToEndOfStatement();
 5034|  1.58k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5035|  1.58k|    return true;
 5036|  1.58k|  }
 5037|       |
 5038|  4.71k|  bool valid;
 5039|  4.71k|  StringRef String1 = getTok().getStringContents(valid);
 5040|  4.71k|  if (!valid) {
  ------------------
  |  Branch (5040:7): [True: 0, False: 4.71k]
  ------------------
 5041|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5042|      0|      return true;
 5043|      0|  }
 5044|       |
 5045|  4.71k|  Lex();
 5046|       |
 5047|  4.71k|  if (Lexer.isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (5047:7): [True: 5, False: 4.71k]
  ------------------
 5048|       |    //if (ExpectEqual)
 5049|       |    //  TokError("expected comma after first string for '.ifeqs' directive");
 5050|       |    //else
 5051|       |    //  TokError("expected comma after first string for '.ifnes' directive");
 5052|      5|    eatToEndOfStatement();
 5053|      5|    return true;
 5054|      5|  }
 5055|       |
 5056|  4.71k|  Lex();
 5057|       |
 5058|  4.71k|  if (Lexer.isNot(AsmToken::String)) {
  ------------------
  |  Branch (5058:7): [True: 3.14k, False: 1.56k]
  ------------------
 5059|       |    //if (ExpectEqual)
 5060|       |    //  TokError("expected string parameter for '.ifeqs' directive");
 5061|       |    //else
 5062|       |    //  TokError("expected string parameter for '.ifnes' directive");
 5063|  3.14k|    eatToEndOfStatement();
 5064|  3.14k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5065|  3.14k|    return true;
 5066|  3.14k|  }
 5067|       |
 5068|  1.56k|  StringRef String2 = getTok().getStringContents(valid);
 5069|  1.56k|  if (!valid) {
  ------------------
  |  Branch (5069:7): [True: 0, False: 1.56k]
  ------------------
 5070|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5071|      0|      return true;
 5072|      0|  }
 5073|       |
 5074|  1.56k|  Lex();
 5075|       |
 5076|  1.56k|  TheCondStack.push_back(TheCondState);
 5077|  1.56k|  TheCondState.TheCond = AsmCond::IfCond;
 5078|  1.56k|  TheCondState.CondMet = ExpectEqual == (String1 == String2);
 5079|  1.56k|  TheCondState.Ignore = !TheCondState.CondMet;
 5080|       |
 5081|  1.56k|  return false;
 5082|  1.56k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveIfdefEN7llvm_ks5SMLocEb:
 5086|    793|bool AsmParser::parseDirectiveIfdef(SMLoc DirectiveLoc, bool expect_defined) {
 5087|    793|  StringRef Name;
 5088|    793|  TheCondStack.push_back(TheCondState);
 5089|    793|  TheCondState.TheCond = AsmCond::IfCond;
 5090|       |
 5091|    793|  if (TheCondState.Ignore) {
  ------------------
  |  Branch (5091:7): [True: 275, False: 518]
  ------------------
 5092|    275|    eatToEndOfStatement();
 5093|    518|  } else {
 5094|    518|    if (parseIdentifier(Name)) {
  ------------------
  |  Branch (5094:9): [True: 137, False: 381]
  ------------------
 5095|       |      //return TokError("expected identifier after '.ifdef'");
 5096|    137|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5097|    137|      return true;
 5098|    137|    }
 5099|       |
 5100|    381|    Lex();
 5101|       |
 5102|    381|    MCSymbol *Sym = getContext().lookupSymbol(Name);
 5103|       |
 5104|    381|    if (expect_defined)
  ------------------
  |  Branch (5104:9): [True: 22, False: 359]
  ------------------
 5105|     22|      TheCondState.CondMet = (Sym && !Sym->isUndefined());
  ------------------
  |  Branch (5105:31): [True: 14, False: 8]
  |  Branch (5105:38): [True: 12, False: 2]
  ------------------
 5106|    359|    else
 5107|    359|      TheCondState.CondMet = (!Sym || Sym->isUndefined());
  ------------------
  |  Branch (5107:31): [True: 279, False: 80]
  |  Branch (5107:39): [True: 79, False: 1]
  ------------------
 5108|    381|    TheCondState.Ignore = !TheCondState.CondMet;
 5109|    381|  }
 5110|       |
 5111|    656|  return false;
 5112|    793|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser20parseDirectiveElseIfEN7llvm_ks5SMLocE:
 5117|  1.25k|{
 5118|  1.25k|  if (TheCondState.TheCond != AsmCond::IfCond &&
  ------------------
  |  Branch (5118:7): [True: 785, False: 470]
  ------------------
 5119|    785|      TheCondState.TheCond != AsmCond::ElseIfCond) {
  ------------------
  |  Branch (5119:7): [True: 243, False: 542]
  ------------------
 5120|       |    //Error(DirectiveLoc, "Encountered a .elseif that doesn't follow a .if or "
 5121|       |    //                    " an .elseif");
 5122|    243|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5123|    243|    return true;
 5124|    243|  }
 5125|       |
 5126|  1.01k|  TheCondState.TheCond = AsmCond::ElseIfCond;
 5127|       |
 5128|  1.01k|  bool LastIgnoreState = false;
 5129|  1.01k|  if (!TheCondStack.empty())
  ------------------
  |  Branch (5129:7): [True: 1.01k, False: 0]
  ------------------
 5130|  1.01k|    LastIgnoreState = TheCondStack.back().Ignore;
 5131|  1.01k|  if (LastIgnoreState || TheCondState.CondMet) {
  ------------------
  |  Branch (5131:7): [True: 605, False: 407]
  |  Branch (5131:26): [True: 231, False: 176]
  ------------------
 5132|    836|    TheCondState.Ignore = true;
 5133|    836|    eatToEndOfStatement();
 5134|    836|  } else {
 5135|    176|    int64_t ExprValue;
 5136|    176|    if (parseAbsoluteExpression(ExprValue)) {
  ------------------
  |  Branch (5136:9): [True: 93, False: 83]
  ------------------
 5137|     93|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5138|     93|      return true;
 5139|     93|    }
 5140|       |
 5141|     83|    if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (5141:9): [True: 2, False: 81]
  ------------------
 5142|       |      //return TokError("unexpected token in '.elseif' directive");
 5143|      2|      return true;
 5144|       |
 5145|     81|    Lex();
 5146|     81|    TheCondState.CondMet = ExprValue;
 5147|     81|    TheCondState.Ignore = !TheCondState.CondMet;
 5148|     81|  }
 5149|       |
 5150|    917|  return false;
 5151|  1.01k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveElseEN7llvm_ks5SMLocE:
 5156|  1.06k|{
 5157|  1.06k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5157:7): [True: 222, False: 842]
  ------------------
 5158|       |    //return TokError("unexpected token in '.else' directive");
 5159|    222|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5160|    222|    return true;
 5161|    222|  }
 5162|       |
 5163|    842|  Lex();
 5164|       |
 5165|    842|  if (TheCondState.TheCond != AsmCond::IfCond &&
  ------------------
  |  Branch (5165:7): [True: 414, False: 428]
  ------------------
 5166|    414|      TheCondState.TheCond != AsmCond::ElseIfCond) {
  ------------------
  |  Branch (5166:7): [True: 85, False: 329]
  ------------------
 5167|       |    //Error(DirectiveLoc, "Encountered a .else that doesn't follow a .if or an "
 5168|       |    //                    ".elseif");
 5169|     85|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5170|     85|    return true;
 5171|     85|  }
 5172|    757|  TheCondState.TheCond = AsmCond::ElseCond;
 5173|    757|  bool LastIgnoreState = false;
 5174|    757|  if (!TheCondStack.empty())
  ------------------
  |  Branch (5174:7): [True: 757, False: 0]
  ------------------
 5175|    757|    LastIgnoreState = TheCondStack.back().Ignore;
 5176|    757|  if (LastIgnoreState || TheCondState.CondMet)
  ------------------
  |  Branch (5176:7): [True: 519, False: 238]
  |  Branch (5176:26): [True: 23, False: 215]
  ------------------
 5177|    542|    TheCondState.Ignore = true;
 5178|    215|  else
 5179|    215|    TheCondState.Ignore = false;
 5180|       |
 5181|    757|  return false;
 5182|    842|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveEndIfEN7llvm_ks5SMLocE:
 5332|    656|{
 5333|    656|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5333:7): [True: 92, False: 564]
  ------------------
 5334|       |    //return TokError("unexpected token in '.endif' directive");
 5335|     92|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5336|     92|    return true;
 5337|     92|  }
 5338|       |
 5339|    564|  Lex();
 5340|       |
 5341|    564|  if ((TheCondState.TheCond == AsmCond::NoCond) || TheCondStack.empty()) {
  ------------------
  |  Branch (5341:7): [True: 213, False: 351]
  |  Branch (5341:52): [True: 0, False: 351]
  ------------------
 5342|       |    //Error(DirectiveLoc, "Encountered a .endif that doesn't follow a .if or "
 5343|       |    //                    ".else");
 5344|    213|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5345|    213|    return true;
 5346|    213|  }
 5347|    351|  if (!TheCondStack.empty()) {
  ------------------
  |  Branch (5347:7): [True: 351, False: 0]
  ------------------
 5348|    351|    TheCondState = TheCondStack.back();
 5349|    351|    TheCondStack.pop_back();
 5350|    351|  }
 5351|       |
 5352|    351|  return false;
 5353|    564|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser15parseAssignmentEN7llvm_ks9StringRefEbb:
 2518|   326k|                                bool NoDeadStrip) {
 2519|   326k|  MCSymbol *Sym;
 2520|   326k|  const MCExpr *Value;
 2521|   326k|  if (MCParserUtils::parseAssignmentExpression(Name, allow_redef, *this, Sym,
  ------------------
  |  Branch (2521:7): [True: 206k, False: 119k]
  ------------------
 2522|   326k|                                               Value)) {
 2523|   206k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2524|   206k|    return true;
 2525|   206k|  }
 2526|       |
 2527|   119k|  if (!Sym) {
  ------------------
  |  Branch (2527:7): [True: 20.7k, False: 99.0k]
  ------------------
 2528|       |    // In the case where we parse an expression starting with a '.', we will
 2529|       |    // not generate an error, nor will we create a symbol.  In this case we
 2530|       |    // should just return out.
 2531|  20.7k|    return false;
 2532|  20.7k|  }
 2533|       |
 2534|       |  // Do the assignment.
 2535|  99.0k|  if (!Out.EmitAssignment(Sym, Value)) {
  ------------------
  |  Branch (2535:7): [True: 845, False: 98.2k]
  ------------------
 2536|    845|    KsError = KS_ERR_ASM_DIRECTIVE_ID;
 2537|    845|    return true;
 2538|    845|  }
 2539|  98.2k|  if (NoDeadStrip)
  ------------------
  |  Branch (2539:7): [True: 116, False: 98.1k]
  ------------------
 2540|    116|    Out.EmitSymbolAttribute(Sym, MCSA_NoDeadStrip);
 2541|       |
 2542|  98.2k|  return false;
 2543|  99.0k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser16areMacrosEnabledEv:
  280|   687k|  bool areMacrosEnabled() {return MacrosEnabledFlag;}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser11lookupMacroEN7llvm_ks9StringRefE:
 2446|   689k|const MCAsmMacro *AsmParser::lookupMacro(StringRef Name) {
 2447|   689k|  StringMap<MCAsmMacro>::iterator I = MacroMap.find(Name);
 2448|   689k|  return (I == MacroMap.end()) ? nullptr : &I->getValue();
  ------------------
  |  Branch (2448:10): [True: 636k, False: 53.1k]
  ------------------
 2449|   689k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser16handleMacroEntryEPKNS_10MCAsmMacroEN7llvm_ks5SMLocE:
 2458|  51.4k|{
 2459|       |  // Arbitrarily limit macro nesting depth, to match 'as'. We can eliminate
 2460|       |  // this, although we should protect against infinite loops.
 2461|  51.4k|  if (ActiveMacros.size() == 20) {
  ------------------
  |  Branch (2461:7): [True: 2.38k, False: 49.0k]
  ------------------
 2462|       |    // return TokError("macros cannot be nested more than 20 levels deep");
 2463|  2.38k|    KsError = KS_ERR_ASM_MACRO_LEVELS_EXCEED;
 2464|  2.38k|    return true;
 2465|  2.38k|  }
 2466|       |
 2467|  49.0k|  MCAsmMacroArguments A;
 2468|  49.0k|  if (parseMacroArguments(M, A)) {
  ------------------
  |  Branch (2468:7): [True: 840, False: 48.2k]
  ------------------
 2469|    840|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2470|    840|    return true;
 2471|    840|  }
 2472|       |
 2473|       |  // Macro instantiation is lexical, unfortunately. We construct a new buffer
 2474|       |  // to hold the macro body with substitutions.
 2475|  48.2k|  SmallString<256> Buf;
 2476|  48.2k|  StringRef Body = M->Body;
 2477|  48.2k|  raw_svector_ostream OS(Buf);
 2478|       |
 2479|  48.2k|  if (expandMacro(OS, Body, M->Parameters, A, true, getTok().getLoc())) {
  ------------------
  |  Branch (2479:7): [True: 0, False: 48.2k]
  ------------------
 2480|      0|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2481|      0|    return true;
 2482|      0|  }
 2483|       |
 2484|       |  // We include the .endmacro in the buffer as our cue to exit the macro
 2485|       |  // instantiation.
 2486|  48.2k|  OS << ".endmacro\n";
 2487|       |
 2488|  48.2k|  std::unique_ptr<MemoryBuffer> Instantiation =
 2489|  48.2k|      MemoryBuffer::getMemBufferCopy(OS.str(), "<instantiation>");
 2490|       |
 2491|       |  // Create the macro instantiation object and add to the current macro
 2492|       |  // instantiation stack.
 2493|  48.2k|  MacroInstantiation *MI = new MacroInstantiation(
 2494|  48.2k|      NameLoc, CurBuffer, getTok().getLoc(), TheCondStack.size());
 2495|  48.2k|  ActiveMacros.push_back(MI);
 2496|       |
 2497|  48.2k|  ++NumOfMacroInstantiations;
 2498|       |
 2499|       |  // Jump to the macro instantiation and prime the lexer.
 2500|  48.2k|  CurBuffer = SrcMgr.AddNewSourceBuffer(std::move(Instantiation), SMLoc());
 2501|  48.2k|  Lexer.setBuffer(SrcMgr.getMemoryBuffer(CurBuffer)->getBuffer());
 2502|  48.2k|  Lex();
 2503|       |
 2504|  48.2k|  return false;
 2505|  48.2k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseMacroArgumentsEPKNS_10MCAsmMacroERNSt3__16vectorINS5_IN7llvm_ks8AsmTokenENS4_9allocatorIS7_EEEENS8_ISA_EEEE:
 2337|  54.0k|{
 2338|  54.0k|  const unsigned NParameters = M ? M->Parameters.size() : 0;
  ------------------
  |  Branch (2338:32): [True: 49.0k, False: 4.95k]
  ------------------
 2339|  54.0k|  bool NamedParametersFound = false;
 2340|  54.0k|  SmallVector<SMLoc, 4> FALocs;
 2341|       |
 2342|  54.0k|  A.resize(NParameters);
 2343|  54.0k|  FALocs.resize(NParameters);
 2344|       |
 2345|       |  // Parse two kinds of macro invocations:
 2346|       |  // - macros defined without any parameters accept an arbitrary number of them
 2347|       |  // - macros defined with parameters accept at most that many of them
 2348|  54.0k|  bool HasVararg = NParameters ? M->Parameters.back().Vararg : false;
  ------------------
  |  Branch (2348:20): [True: 2.28k, False: 51.7k]
  ------------------
 2349|   136k|  for (unsigned Parameter = 0; !NParameters || Parameter < NParameters;
  ------------------
  |  Branch (2349:32): [True: 128k, False: 7.80k]
  |  Branch (2349:48): [True: 7.30k, False: 509]
  ------------------
 2350|   136k|       ++Parameter) {
 2351|       |    //SMLoc IDLoc = Lexer.getLoc();
 2352|   136k|    MCAsmMacroParameter FA;
 2353|       |
 2354|   136k|    if (Lexer.is(AsmToken::Identifier) && Lexer.peekTok().is(AsmToken::Equal)) {
  ------------------
  |  Branch (2354:9): [True: 14.6k, False: 121k]
  |  Branch (2354:9): [True: 5.89k, False: 130k]
  |  Branch (2354:43): [True: 5.89k, False: 8.76k]
  ------------------
 2355|  5.89k|      if (parseIdentifier(FA.Name)) {
  ------------------
  |  Branch (2355:11): [True: 0, False: 5.89k]
  ------------------
 2356|       |        //Error(IDLoc, "invalid argument identifier for formal argument");
 2357|      0|        eatToEndOfStatement();
 2358|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2359|      0|        return true;
 2360|      0|      }
 2361|       |
 2362|  5.89k|      if (!Lexer.is(AsmToken::Equal)) {
  ------------------
  |  Branch (2362:11): [True: 0, False: 5.89k]
  ------------------
 2363|       |        //TokError("expected '=' after formal parameter identifier");
 2364|      0|        eatToEndOfStatement();
 2365|      0|        KsError = KS_ERR_ASM_MACRO_EQU;
 2366|      0|        return true;
 2367|      0|      }
 2368|  5.89k|      Lex();
 2369|       |
 2370|  5.89k|      NamedParametersFound = true;
 2371|  5.89k|    }
 2372|       |
 2373|   136k|    if (NamedParametersFound && FA.Name.empty()) {
  ------------------
  |  Branch (2373:9): [True: 6.07k, False: 130k]
  |  Branch (2373:33): [True: 183, False: 5.89k]
  ------------------
 2374|       |      //Error(IDLoc, "cannot mix positional and keyword arguments");
 2375|    183|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2376|    183|      eatToEndOfStatement();
 2377|    183|      return true;
 2378|    183|    }
 2379|       |
 2380|   135k|    bool Vararg = HasVararg && Parameter == (NParameters - 1);
  ------------------
  |  Branch (2380:19): [True: 0, False: 135k]
  |  Branch (2380:32): [True: 0, False: 0]
  ------------------
 2381|   135k|    if (parseMacroArgument(FA.Value, Vararg)) {
  ------------------
  |  Branch (2381:9): [True: 776, False: 135k]
  ------------------
 2382|    776|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2383|    776|      return true;
 2384|    776|    }
 2385|       |
 2386|   135k|    unsigned PI = Parameter;
 2387|   135k|    if (!FA.Name.empty()) {
  ------------------
  |  Branch (2387:9): [True: 5.88k, False: 129k]
  ------------------
 2388|  5.88k|      unsigned FAI = 0;
 2389|  26.1k|      for (FAI = 0; FAI < NParameters; ++FAI)
  ------------------
  |  Branch (2389:21): [True: 25.5k, False: 657]
  ------------------
 2390|  25.5k|        if (M->Parameters[FAI].Name == FA.Name)
  ------------------
  |  Branch (2390:13): [True: 5.23k, False: 20.2k]
  ------------------
 2391|  5.23k|          break;
 2392|       |
 2393|  5.88k|      if (FAI >= NParameters) {
  ------------------
  |  Branch (2393:11): [True: 657, False: 5.23k]
  ------------------
 2394|       |        //assert(M && "expected macro to be defined");
 2395|       |        //Error(IDLoc,
 2396|       |        //      "parameter named '" + FA.Name + "' does not exist for macro '" +
 2397|       |        //      M->Name + "'");
 2398|    657|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2399|    657|        return true;
 2400|    657|      }
 2401|  5.23k|      PI = FAI;
 2402|  5.23k|    }
 2403|       |
 2404|   134k|    if (!FA.Value.empty()) {
  ------------------
  |  Branch (2404:9): [True: 25.9k, False: 108k]
  ------------------
 2405|  25.9k|      if (A.size() <= PI)
  ------------------
  |  Branch (2405:11): [True: 20.1k, False: 5.82k]
  ------------------
 2406|  20.1k|        A.resize(PI + 1);
 2407|  25.9k|      A[PI] = FA.Value;
 2408|       |
 2409|  25.9k|      if (FALocs.size() <= PI)
  ------------------
  |  Branch (2409:11): [True: 20.1k, False: 5.82k]
  ------------------
 2410|  20.1k|        FALocs.resize(PI + 1);
 2411|       |
 2412|  25.9k|      FALocs[PI] = Lexer.getLoc();
 2413|  25.9k|    }
 2414|       |
 2415|       |    // At the end of the statement, fill in remaining arguments that have
 2416|       |    // default values. If there aren't any, then the next argument is
 2417|       |    // required but missing
 2418|   134k|    if (Lexer.is(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (2418:9): [True: 51.9k, False: 82.6k]
  ------------------
 2419|  51.9k|      bool Failure = false;
 2420|  60.7k|      for (unsigned FAI = 0; FAI < NParameters; ++FAI) {
  ------------------
  |  Branch (2420:30): [True: 8.86k, False: 51.9k]
  ------------------
 2421|  8.86k|        if (A[FAI].empty()) {
  ------------------
  |  Branch (2421:13): [True: 7.37k, False: 1.49k]
  ------------------
 2422|  7.37k|          if (M->Parameters[FAI].Required) {
  ------------------
  |  Branch (2422:15): [True: 0, False: 7.37k]
  ------------------
 2423|       |            //Error(FALocs[FAI].isValid() ? FALocs[FAI] : Lexer.getLoc(),
 2424|       |            //      "missing value for required parameter "
 2425|       |            //      "'" + M->Parameters[FAI].Name + "' in macro '" + M->Name + "'");
 2426|      0|            KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2427|      0|            Failure = true;
 2428|      0|          }
 2429|       |
 2430|  7.37k|          if (!M->Parameters[FAI].Value.empty())
  ------------------
  |  Branch (2430:15): [True: 1.29k, False: 6.08k]
  ------------------
 2431|  1.29k|            A[FAI] = M->Parameters[FAI].Value;
 2432|  7.37k|        }
 2433|  8.86k|      }
 2434|  51.9k|      return Failure;
 2435|  51.9k|    }
 2436|       |
 2437|  82.6k|    if (Lexer.is(AsmToken::Comma))
  ------------------
  |  Branch (2437:9): [True: 82.6k, False: 0]
  ------------------
 2438|  82.6k|      Lex();
 2439|  82.6k|  }
 2440|       |
 2441|       |  // return TokError("too many positional arguments");
 2442|    509|  KsError = KS_ERR_ASM_MACRO_ARGS;
 2443|    509|  return true;
 2444|  54.0k|}
AsmParser.cpp:_ZN12_GLOBAL__N_119MCAsmMacroParameterC2Ev:
   65|   148k|  MCAsmMacroParameter() : Required(false), Vararg(false) {}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseMacroArgumentERNSt3__16vectorIN7llvm_ks8AsmTokenENS1_9allocatorIS4_EEEEb:
 2261|   136k|{
 2262|       |
 2263|   136k|  if (Vararg) {
  ------------------
  |  Branch (2263:7): [True: 0, False: 136k]
  ------------------
 2264|      0|    if (Lexer.isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (2264:9): [True: 0, False: 0]
  ------------------
 2265|      0|      StringRef Str = parseStringToEndOfStatement();
 2266|      0|      MA.emplace_back(AsmToken::String, Str);
 2267|      0|    }
 2268|      0|    return false;
 2269|      0|  }
 2270|       |
 2271|   136k|  unsigned ParenLevel = 0;
 2272|   136k|  unsigned AddTokens = 0;
 2273|       |
 2274|       |  // Darwin doesn't use spaces to delmit arguments.
 2275|   136k|  AsmLexerSkipSpaceRAII ScopedSkipSpace(Lexer, IsDarwin);
 2276|       |
 2277|   344k|  for (;;) {
 2278|   344k|    if (Lexer.is(AsmToken::Eof) || Lexer.is(AsmToken::Equal)) {
  ------------------
  |  Branch (2278:9): [True: 3, False: 344k]
  |  Branch (2278:36): [True: 0, False: 344k]
  ------------------
 2279|       |      // return TokError("unexpected token in macro instantiation");
 2280|      3|      KsError = KS_ERR_ASM_MACRO_TOKEN;
 2281|      3|      return true;
 2282|      3|    }
 2283|       |
 2284|   344k|    if (ParenLevel == 0 && Lexer.is(AsmToken::Comma))
  ------------------
  |  Branch (2284:9): [True: 319k, False: 24.9k]
  |  Branch (2284:28): [True: 82.8k, False: 237k]
  ------------------
 2285|  82.8k|      break;
 2286|       |
 2287|   262k|    if (Lexer.is(AsmToken::Space)) {
  ------------------
  |  Branch (2287:9): [True: 0, False: 262k]
  ------------------
 2288|      0|      Lex(); // Eat spaces
 2289|       |
 2290|       |      // Spaces can delimit parameters, but could also be part an expression.
 2291|       |      // If the token after a space is an operator, add the token and the next
 2292|       |      // one into this argument
 2293|      0|      if (!IsDarwin) {
  ------------------
  |  Branch (2293:11): [True: 0, False: 0]
  ------------------
 2294|      0|        if (isOperator(Lexer.getKind())) {
  ------------------
  |  Branch (2294:13): [True: 0, False: 0]
  ------------------
 2295|       |          // Check to see whether the token is used as an operator,
 2296|       |          // or part of an identifier
 2297|      0|          const char *NextChar = getTok().getEndLoc().getPointer();
 2298|      0|          if (*NextChar == ' ')
  ------------------
  |  Branch (2298:15): [True: 0, False: 0]
  ------------------
 2299|      0|            AddTokens = 2;
 2300|      0|        }
 2301|       |
 2302|      0|        if (!AddTokens && ParenLevel == 0) {
  ------------------
  |  Branch (2302:13): [True: 0, False: 0]
  |  Branch (2302:27): [True: 0, False: 0]
  ------------------
 2303|      0|          break;
 2304|      0|        }
 2305|      0|      }
 2306|      0|    }
 2307|       |
 2308|       |    // handleMacroEntry relies on not advancing the lexer here
 2309|       |    // to be able to fill in the remaining default parameter values
 2310|   262k|    if (Lexer.is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (2310:9): [True: 53.4k, False: 208k]
  ------------------
 2311|  53.4k|      break;
 2312|       |
 2313|       |    // Adjust the current parentheses level.
 2314|   208k|    if (Lexer.is(AsmToken::LParen))
  ------------------
  |  Branch (2314:9): [True: 2.61k, False: 205k]
  ------------------
 2315|  2.61k|      ++ParenLevel;
 2316|   205k|    else if (Lexer.is(AsmToken::RParen) && ParenLevel)
  ------------------
  |  Branch (2316:14): [True: 784, False: 205k]
  |  Branch (2316:44): [True: 248, False: 536]
  ------------------
 2317|    248|      --ParenLevel;
 2318|       |
 2319|       |    // Append the token to the current argument list.
 2320|   208k|    MA.push_back(getTok());
 2321|   208k|    if (AddTokens)
  ------------------
  |  Branch (2321:9): [True: 0, False: 208k]
  ------------------
 2322|      0|      AddTokens--;
 2323|   208k|    Lex();
 2324|   208k|  }
 2325|       |
 2326|   136k|  if (ParenLevel != 0) {
  ------------------
  |  Branch (2326:7): [True: 791, False: 135k]
  ------------------
 2327|       |    // return TokError("unbalanced parentheses in macro argument");
 2328|    791|    KsError = KS_ERR_ASM_MACRO_PAREN;
 2329|    791|    return true;
 2330|    791|  }
 2331|   135k|  return false;
 2332|   136k|}
AsmParser.cpp:_ZN12_GLOBAL__N_121AsmLexerSkipSpaceRAIIC2ERN7llvm_ks8AsmLexerEb:
 2247|   136k|  AsmLexerSkipSpaceRAII(AsmLexer &Lexer, bool SkipSpace) : Lexer(Lexer) {
 2248|   136k|    Lexer.setSkipSpace(SkipSpace);
 2249|   136k|  }
AsmParser.cpp:_ZN12_GLOBAL__N_121AsmLexerSkipSpaceRAIID2Ev:
 2251|   136k|  ~AsmLexerSkipSpaceRAII() {
 2252|   136k|    Lexer.setSkipSpace(true);
 2253|   136k|  }
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser11expandMacroERN7llvm_ks19raw_svector_ostreamENS1_9StringRefENS1_8ArrayRefINS_19MCAsmMacroParameterEEENS5_INSt3__16vectorINS1_8AsmTokenENS8_9allocatorISA_EEEEEEbNS1_5SMLocE:
 2090|  42.4M|{
 2091|  42.4M|  unsigned NParameters = Parameters.size();
 2092|  42.4M|  bool HasVararg = NParameters ? Parameters.back().Vararg : false;
  ------------------
  |  Branch (2092:20): [True: 51.0k, False: 42.4M]
  ------------------
 2093|  42.4M|  if ((!IsDarwin || NParameters != 0) && NParameters != A.size())
  ------------------
  |  Branch (2093:8): [True: 0, False: 42.4M]
  |  Branch (2093:21): [True: 51.0k, False: 42.4M]
  |  Branch (2093:42): [True: 0, False: 51.0k]
  ------------------
 2094|       |    //return Error(L, "Wrong number of arguments");
 2095|      0|    return true;
 2096|       |
 2097|       |  // A macro without parameters is handled differently on Darwin:
 2098|       |  // gas accepts no arguments and does no substitutions
 2099|  42.5M|  while (!Body.empty()) {
  ------------------
  |  Branch (2099:10): [True: 4.22M, False: 38.3M]
  ------------------
 2100|       |    // Scan for the next substitution.
 2101|  4.22M|    std::size_t End = Body.size(), Pos = 0;
 2102|  29.1M|    for (; Pos != End; ++Pos) {
  ------------------
  |  Branch (2102:12): [True: 25.0M, False: 4.10M]
  ------------------
 2103|       |      // Check for a substitution or escape.
 2104|  25.0M|      if (IsDarwin && !NParameters) {
  ------------------
  |  Branch (2104:11): [True: 25.0M, False: 0]
  |  Branch (2104:23): [True: 20.3M, False: 4.70M]
  ------------------
 2105|       |        // This macro has no parameters, look for $0, $1, etc.
 2106|  20.3M|        if (Body[Pos] != '$' || Pos + 1 == End)
  ------------------
  |  Branch (2106:13): [True: 20.1M, False: 233k]
  |  Branch (2106:33): [True: 0, False: 233k]
  ------------------
 2107|  20.1M|          continue;
 2108|       |
 2109|   233k|        char Next = Body[Pos + 1];
 2110|   233k|        if (Next == '$' || Next == 'n' ||
  ------------------
  |  Branch (2110:13): [True: 3.38k, False: 229k]
  |  Branch (2110:28): [True: 91.0k, False: 138k]
  ------------------
 2111|   138k|            isdigit(static_cast<unsigned char>(Next)))
  ------------------
  |  Branch (2111:13): [True: 9.60k, False: 129k]
  ------------------
 2112|   104k|          break;
 2113|  4.70M|      } else {
 2114|       |        // This macro has parameters, look for \foo, \bar, etc.
 2115|  4.70M|        if (Body[Pos] == '\\' && Pos + 1 != End)
  ------------------
  |  Branch (2115:13): [True: 23.2k, False: 4.67M]
  |  Branch (2115:34): [True: 23.2k, False: 0]
  ------------------
 2116|  23.2k|          break;
 2117|  4.70M|      }
 2118|  25.0M|    }
 2119|       |
 2120|       |    // Add the prefix.
 2121|  4.22M|    OS << Body.slice(0, Pos);
 2122|       |
 2123|       |    // Check if we reached the end.
 2124|  4.22M|    if (Pos == End)
  ------------------
  |  Branch (2124:9): [True: 4.10M, False: 127k]
  ------------------
 2125|  4.10M|      break;
 2126|       |
 2127|   127k|    if (IsDarwin && !NParameters) {
  ------------------
  |  Branch (2127:9): [True: 127k, False: 0]
  |  Branch (2127:21): [True: 104k, False: 23.2k]
  ------------------
 2128|   104k|      switch (Body[Pos + 1]) {
 2129|       |      // $$ => $
 2130|  3.38k|      case '$':
  ------------------
  |  Branch (2130:7): [True: 3.38k, False: 100k]
  ------------------
 2131|  3.38k|        OS << '$';
 2132|  3.38k|        break;
 2133|       |
 2134|       |      // $n => number of arguments
 2135|  91.0k|      case 'n':
  ------------------
  |  Branch (2135:7): [True: 91.0k, False: 12.9k]
  ------------------
 2136|  91.0k|        OS << A.size();
 2137|  91.0k|        break;
 2138|       |
 2139|       |      // $[0-9] => argument
 2140|  9.60k|      default: {
  ------------------
  |  Branch (2140:7): [True: 9.60k, False: 94.4k]
  ------------------
 2141|       |        // Missing arguments are ignored.
 2142|  9.60k|        unsigned Index = Body[Pos + 1] - '0';
 2143|  9.60k|        if (Index >= A.size())
  ------------------
  |  Branch (2143:13): [True: 9.09k, False: 507]
  ------------------
 2144|  9.09k|          break;
 2145|       |
 2146|       |        // Otherwise substitute with the token values, with spaces eliminated.
 2147|    507|        for (const AsmToken &Token : A[Index])
  ------------------
  |  Branch (2147:36): [True: 3.64k, False: 507]
  ------------------
 2148|  3.64k|          OS << Token.getString();
 2149|    507|        break;
 2150|  9.60k|      }
 2151|   104k|      }
 2152|   104k|      Pos += 2;
 2153|   104k|    } else {
 2154|  23.2k|      unsigned I = Pos + 1;
 2155|       |
 2156|       |      // Check for the \@ pseudo-variable.
 2157|  23.2k|      if (EnableAtPseudoVariable && Body[I] == '@' && I + 1 != End)
  ------------------
  |  Branch (2157:11): [True: 23.2k, False: 0]
  |  Branch (2157:37): [True: 1.02k, False: 22.2k]
  |  Branch (2157:55): [True: 1.02k, False: 0]
  ------------------
 2158|  1.02k|        ++I;
 2159|  22.2k|      else
 2160|  54.3k|        while (isIdentifierChar(Body[I]) && I + 1 != End)
  ------------------
  |  Branch (2160:16): [True: 32.1k, False: 22.2k]
  |  Branch (2160:45): [True: 32.1k, False: 0]
  ------------------
 2161|  32.1k|          ++I;
 2162|       |
 2163|  23.2k|      const char *Begin = Body.data() + Pos + 1;
 2164|  23.2k|      StringRef Argument(Begin, I - (Pos + 1));
 2165|  23.2k|      unsigned Index = 0;
 2166|       |
 2167|  23.2k|      if (Argument == "@") {
  ------------------
  |  Branch (2167:11): [True: 1.02k, False: 22.2k]
  ------------------
 2168|  1.02k|        OS << NumOfMacroInstantiations;
 2169|  1.02k|        Pos += 2;
 2170|  22.2k|      } else {
 2171|  43.8k|        for (; Index < NParameters; ++Index)
  ------------------
  |  Branch (2171:16): [True: 23.0k, False: 20.7k]
  ------------------
 2172|  23.0k|          if (Parameters[Index].Name == Argument)
  ------------------
  |  Branch (2172:15): [True: 1.46k, False: 21.5k]
  ------------------
 2173|  1.46k|            break;
 2174|       |
 2175|  22.2k|        if (Index == NParameters) {
  ------------------
  |  Branch (2175:13): [True: 20.7k, False: 1.46k]
  ------------------
 2176|  20.7k|          if (Body[Pos + 1] == '(' && Body[Pos + 2] == ')')
  ------------------
  |  Branch (2176:15): [True: 646, False: 20.1k]
  |  Branch (2176:39): [True: 330, False: 316]
  ------------------
 2177|    330|            Pos += 3;
 2178|  20.4k|          else {
 2179|  20.4k|            OS << '\\' << Argument;
 2180|  20.4k|            Pos = I;
 2181|  20.4k|          }
 2182|  20.7k|        } else {
 2183|  1.46k|          bool VarargParameter = HasVararg && Index == (NParameters - 1);
  ------------------
  |  Branch (2183:34): [True: 0, False: 1.46k]
  |  Branch (2183:47): [True: 0, False: 0]
  ------------------
 2184|  1.46k|          for (const AsmToken &Token : A[Index])
  ------------------
  |  Branch (2184:38): [True: 2.69k, False: 1.46k]
  ------------------
 2185|       |            // We expect no quotes around the string's contents when
 2186|       |            // parsing for varargs.
 2187|  2.69k|            if (Token.getKind() != AsmToken::String || VarargParameter)
  ------------------
  |  Branch (2187:17): [True: 2.49k, False: 202]
  |  Branch (2187:56): [True: 0, False: 202]
  ------------------
 2188|  2.49k|              OS << Token.getString();
 2189|    202|            else {
 2190|    202|              bool valid;
 2191|    202|              OS << Token.getStringContents(valid);
 2192|    202|              if (!valid) {
  ------------------
  |  Branch (2192:19): [True: 0, False: 202]
  ------------------
 2193|      0|                  return true;
 2194|      0|              }
 2195|    202|            }
 2196|       |
 2197|  1.46k|          Pos += 1 + Argument.size();
 2198|  1.46k|        }
 2199|  22.2k|      }
 2200|  23.2k|    }
 2201|       |    // Update the scan point.
 2202|   127k|    Body = Body.substr(Pos);
 2203|   127k|  }
 2204|       |
 2205|  42.4M|  return false;
 2206|  42.4M|}
AsmParser.cpp:_ZL16isIdentifierCharc:
 2081|  65.1k|static bool isIdentifierChar(char c) {
 2082|  65.1k|  return isalnum(static_cast<unsigned char>(c)) || c == '_' || c == '$' ||
  ------------------
  |  Branch (2082:10): [True: 31.9k, False: 33.1k]
  |  Branch (2082:52): [True: 1.45k, False: 31.6k]
  |  Branch (2082:64): [True: 2.11k, False: 29.5k]
  ------------------
 2083|  29.5k|         c == '.';
  ------------------
  |  Branch (2083:10): [True: 1.56k, False: 28.0k]
  ------------------
 2084|  65.1k|}
AsmParser.cpp:_ZN12_GLOBAL__N_118MacroInstantiationC2EN7llvm_ks5SMLocEiS2_m:
 2210|  51.0k|    : InstantiationLoc(IL), ExitBuffer(EB), ExitLoc(EL),
 2211|  51.0k|      CondStackDepth(CondStackDepth) {}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser11isDirectiveEN7llvm_ks9StringRefE:
 1435|   635k|{
 1436|   635k|    if (KsSyntax == KS_OPT_SYNTAX_NASM)
  ------------------
  |  Branch (1436:9): [True: 0, False: 635k]
  ------------------
 1437|      0|        return isNasmDirective(IDVal);
 1438|   635k|    else // Directives start with "."
 1439|   635k|        return (!IDVal.empty() && IDVal[0] == '.' && IDVal != ".");
  ------------------
  |  Branch (1439:17): [True: 635k, False: 82]
  |  Branch (1439:35): [True: 584k, False: 50.6k]
  |  Branch (1439:54): [True: 584k, False: 757]
  ------------------
 1440|   635k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser17parseDirectiveSetEN7llvm_ks9StringRefEb:
 2594|  1.07k|bool AsmParser::parseDirectiveSet(StringRef IDVal, bool allow_redef) {
 2595|  1.07k|  StringRef Name;
 2596|       |
 2597|  1.07k|  if (parseIdentifier(Name)) {
  ------------------
  |  Branch (2597:7): [True: 381, False: 698]
  ------------------
 2598|       |    // return TokError("expected identifier after '" + Twine(IDVal) + "'");
 2599|    381|    KsError = KS_ERR_ASM_DIRECTIVE_ID;
 2600|    381|    return true;
 2601|    381|  }
 2602|       |
 2603|    698|  if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (2603:7): [True: 322, False: 376]
  ------------------
 2604|       |    // return TokError("unexpected token in '" + Twine(IDVal) + "'");
 2605|    322|    KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2606|    322|    return true;
 2607|    322|  }
 2608|    376|  Lex();
 2609|       |
 2610|    376|  return parseAssignment(Name, allow_redef, true);
 2611|    698|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveAsciiEN7llvm_ks9StringRefEb:
 2692|  1.20k|{
 2693|  1.20k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (2693:7): [True: 924, False: 276]
  ------------------
 2694|    924|    checkForValidSection();
 2695|       |
 2696|  1.19k|    for (;;) {
 2697|  1.19k|      if (getLexer().isNot(AsmToken::String)) {
  ------------------
  |  Branch (2697:11): [True: 632, False: 560]
  ------------------
 2698|       |        // return TokError("expected string in '" + Twine(IDVal) + "' directive");
 2699|    632|        KsError = KS_ERR_ASM_DIRECTIVE_STR;
 2700|    632|        return true;
 2701|    632|      }
 2702|       |
 2703|    560|      std::string Data;
 2704|    560|      if (parseEscapedString(Data)) {
  ------------------
  |  Branch (2704:11): [True: 19, False: 541]
  ------------------
 2705|     19|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2706|     19|        return true;
 2707|     19|      }
 2708|       |
 2709|    541|      getStreamer().EmitBytes(Data);
 2710|    541|      if (ZeroTerminated)
  ------------------
  |  Branch (2710:11): [True: 530, False: 11]
  ------------------
 2711|    530|        getStreamer().EmitBytes(StringRef("\0", 1));
 2712|       |
 2713|    541|      Lex();
 2714|       |
 2715|    541|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (2715:11): [True: 176, False: 365]
  ------------------
 2716|    176|        break;
 2717|       |
 2718|    365|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (2718:11): [True: 97, False: 268]
  ------------------
 2719|       |        // return TokError("unexpected token in '" + Twine(IDVal) + "' directive");
 2720|     97|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2721|     97|        return true;
 2722|     97|      }
 2723|    268|      Lex();
 2724|    268|    }
 2725|    924|  }
 2726|       |
 2727|    452|  Lex();
 2728|    452|  return false;
 2729|  1.20k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveValueEjRj:
 2808|  6.51k|{
 2809|  6.51k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (2809:7): [True: 5.93k, False: 580]
  ------------------
 2810|  5.93k|    checkForValidSection();
 2811|       |
 2812|  11.3k|    for (;;) {
 2813|  11.3k|      const MCExpr *Value;
 2814|  11.3k|      SMLoc ExprLoc = getLexer().getLoc();
 2815|  11.3k|      if (parseExpression(Value)) {
  ------------------
  |  Branch (2815:11): [True: 363, False: 10.9k]
  ------------------
 2816|    363|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2817|    363|        return true;
 2818|    363|      }
 2819|       |
 2820|       |      // Special case constant expressions to match code generator.
 2821|  10.9k|      if (const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(Value)) {
  ------------------
  |  Branch (2821:33): [True: 1.14k, False: 9.82k]
  ------------------
 2822|  1.14k|        assert(Size <= 8 && "Invalid size");
  ------------------
  |  Branch (2822:9): [True: 1.14k, False: 0]
  |  Branch (2822:9): [True: 1.14k, Folded]
  |  Branch (2822:9): [True: 1.14k, False: 0]
  ------------------
 2823|  1.14k|        uint64_t IntValue = MCE->getValue();
 2824|  1.14k|        if (!isUIntN(8 * Size, IntValue) && !isIntN(8 * Size, IntValue)) {
  ------------------
  |  Branch (2824:13): [True: 215, False: 928]
  |  Branch (2824:45): [True: 94, False: 121]
  ------------------
 2825|       |            // return Error(ExprLoc, "literal value out of range for directive");
 2826|     94|            KsError = KS_ERR_ASM_DIRECTIVE_VALUE_RANGE;
 2827|     94|            return true;
 2828|     94|        }
 2829|  1.04k|        bool Error;
 2830|  1.04k|        getStreamer().EmitIntValue(IntValue, Size, Error);
 2831|  1.04k|        if (Error) {
  ------------------
  |  Branch (2831:13): [True: 0, False: 1.04k]
  ------------------
 2832|      0|            KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2833|      0|            return true;
 2834|      0|        }
 2835|  1.04k|      } else
 2836|  9.82k|        getStreamer().EmitValue(Value, Size, ExprLoc);
 2837|       |
 2838|  10.8k|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (2838:11): [True: 5.43k, False: 5.43k]
  ------------------
 2839|  5.43k|        break;
 2840|       |
 2841|       |      // FIXME: Improve diagnostic.
 2842|  5.43k|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (2842:11): [True: 44, False: 5.39k]
  ------------------
 2843|       |        // return TokError("unexpected token in directive");
 2844|     44|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2845|     44|        return true;
 2846|     44|      }
 2847|  5.39k|      Lex();
 2848|  5.39k|    }
 2849|  5.93k|  }
 2850|       |
 2851|  6.01k|  Lex();
 2852|  6.01k|  return false;
 2853|  6.51k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser15parseExpressionERPKN7llvm_ks6MCExprE:
 1076|   342k|bool AsmParser::parseExpression(const MCExpr *&Res) {
 1077|   342k|  SMLoc EndLoc;
 1078|   342k|  return parseExpression(Res, EndLoc);
 1079|   342k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser23parseDirectiveOctaValueERj:
 2858|    301|{
 2859|    301|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (2859:7): [True: 88, False: 213]
  ------------------
 2860|     88|    checkForValidSection();
 2861|       |
 2862|  1.13k|    for (;;) {
 2863|  1.13k|      if (Lexer.getKind() == AsmToken::Error) {
  ------------------
  |  Branch (2863:11): [True: 5, False: 1.12k]
  ------------------
 2864|      5|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2865|      5|        return true;
 2866|      5|      }
 2867|  1.12k|      if (Lexer.getKind() != AsmToken::Integer &&
  ------------------
  |  Branch (2867:11): [True: 315, False: 813]
  ------------------
 2868|    315|          Lexer.getKind() != AsmToken::BigNum) {
  ------------------
  |  Branch (2868:11): [True: 19, False: 296]
  ------------------
 2869|       |        // return TokError("unknown token in expression");
 2870|     19|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2871|     19|        return true;
 2872|     19|      }
 2873|       |
 2874|       |      // SMLoc ExprLoc = getLexer().getLoc();
 2875|  1.10k|      bool valid;
 2876|  1.10k|      APInt IntValue = getTok().getAPIntVal(valid);
 2877|  1.10k|      if (!valid) {
  ------------------
  |  Branch (2877:11): [True: 0, False: 1.10k]
  ------------------
 2878|      0|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2879|      0|          return true;
 2880|      0|      }
 2881|  1.10k|      Lex();
 2882|       |
 2883|  1.10k|      uint64_t hi, lo;
 2884|  1.10k|      if (IntValue.isIntN(64)) {
  ------------------
  |  Branch (2884:11): [True: 813, False: 296]
  ------------------
 2885|    813|        hi = 0;
 2886|    813|        lo = IntValue.getZExtValue();
 2887|    813|      } else if (IntValue.isIntN(128)) {
  ------------------
  |  Branch (2887:18): [True: 293, False: 3]
  ------------------
 2888|       |        // It might actually have more than 128 bits, but the top ones are zero.
 2889|    293|        hi = IntValue.getHiBits(IntValue.getBitWidth() - 64).getZExtValue();
 2890|    293|        lo = IntValue.getLoBits(64).getZExtValue();
 2891|    293|      } else {
 2892|       |        // return Error(ExprLoc, "literal value out of range for directive");
 2893|      3|        KsError = KS_ERR_ASM_DIRECTIVE_VALUE_RANGE;
 2894|      3|        return true;
 2895|      3|      }
 2896|       |
 2897|  1.10k|      bool Error;
 2898|  1.10k|      if (MAI.isLittleEndian()) {
  ------------------
  |  Branch (2898:11): [True: 1.10k, False: 0]
  ------------------
 2899|  1.10k|        getStreamer().EmitIntValue(lo, 8, Error);
 2900|  1.10k|        getStreamer().EmitIntValue(hi, 8, Error);
 2901|  1.10k|      } else {
 2902|      0|        getStreamer().EmitIntValue(hi, 8, Error);
 2903|      0|        getStreamer().EmitIntValue(lo, 8, Error);
 2904|      0|      }
 2905|       |
 2906|  1.10k|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (2906:11): [True: 47, False: 1.05k]
  ------------------
 2907|     47|        break;
 2908|       |
 2909|       |      // FIXME: Improve diagnostic.
 2910|  1.05k|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (2910:11): [True: 14, False: 1.04k]
  ------------------
 2911|       |        // return TokError("unexpected token in directive");
 2912|     14|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2913|     14|        return true;
 2914|     14|      }
 2915|  1.04k|      Lex();
 2916|  1.04k|    }
 2917|     88|  }
 2918|       |
 2919|    260|  Lex();
 2920|    260|  return false;
 2921|    301|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser23parseDirectiveRealValueERKN7llvm_ks12fltSemanticsE:
 2926|  6.75k|{
 2927|  6.75k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (2927:7): [True: 6.06k, False: 688]
  ------------------
 2928|  6.06k|    checkForValidSection();
 2929|       |
 2930|  10.4k|    for (;;) {
 2931|       |      // We don't truly support arithmetic on floating point expressions, so we
 2932|       |      // have to manually parse unary prefixes.
 2933|  10.4k|      bool IsNeg = false;
 2934|  10.4k|      if (getLexer().is(AsmToken::Minus)) {
  ------------------
  |  Branch (2934:11): [True: 1.04k, False: 9.41k]
  ------------------
 2935|  1.04k|        Lex();
 2936|  1.04k|        IsNeg = true;
 2937|  9.41k|      } else if (getLexer().is(AsmToken::Plus))
  ------------------
  |  Branch (2937:18): [True: 857, False: 8.55k]
  ------------------
 2938|    857|        Lex();
 2939|       |
 2940|  10.4k|      if (getLexer().isNot(AsmToken::Integer) &&
  ------------------
  |  Branch (2940:11): [True: 6.54k, False: 3.91k]
  ------------------
 2941|  6.54k|          getLexer().isNot(AsmToken::Real) &&
  ------------------
  |  Branch (2941:11): [True: 2.72k, False: 3.82k]
  ------------------
 2942|  2.72k|          getLexer().isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (2942:11): [True: 197, False: 2.52k]
  ------------------
 2943|       |        // return TokError("unexpected token in directive");
 2944|    197|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2945|    197|        return true;
 2946|    197|      }
 2947|       |
 2948|       |      // Convert to an APFloat.
 2949|  10.2k|      APFloat Value(Semantics);
 2950|  10.2k|      StringRef IDVal = getTok().getString();
 2951|  10.2k|      if (getLexer().is(AsmToken::Identifier)) {
  ------------------
  |  Branch (2951:11): [True: 2.52k, False: 7.73k]
  ------------------
 2952|  2.52k|        if (!IDVal.compare_lower("infinity") || !IDVal.compare_lower("inf"))
  ------------------
  |  Branch (2952:13): [True: 22, False: 2.50k]
  |  Branch (2952:13): [True: 602, False: 1.92k]
  |  Branch (2952:49): [True: 580, False: 1.92k]
  ------------------
 2953|    602|          Value = APFloat::getInf(Semantics);
 2954|  1.92k|        else if (!IDVal.compare_lower("nan"))
  ------------------
  |  Branch (2954:18): [True: 286, False: 1.63k]
  ------------------
 2955|    286|          Value = APFloat::getNaN(Semantics, false, ~0);
 2956|  1.63k|        else {
 2957|       |          // return TokError("invalid floating point literal");
 2958|  1.63k|          KsError = KS_ERR_ASM_DIRECTIVE_FPOINT;
 2959|  1.63k|          return true;
 2960|  1.63k|        }
 2961|  7.73k|      } else if (Value.convertFromString(IDVal, APFloat::rmNearestTiesToEven) ==
  ------------------
  |  Branch (2961:18): [True: 4, False: 7.73k]
  ------------------
 2962|  7.73k|                 APFloat::opInvalidOp) {
 2963|       |        // return TokError("invalid floating point literal");
 2964|      4|        KsError = KS_ERR_ASM_DIRECTIVE_FPOINT;
 2965|      4|        return true;
 2966|      4|      }
 2967|  8.61k|      if (IsNeg)
  ------------------
  |  Branch (2967:11): [True: 915, False: 7.70k]
  ------------------
 2968|    915|        Value.changeSign();
 2969|       |
 2970|       |      // Consume the numeric token.
 2971|  8.61k|      Lex();
 2972|       |
 2973|       |      // Emit the value as an integer.
 2974|  8.61k|      APInt AsInt = Value.bitcastToAPInt();
 2975|  8.61k|      bool Error;
 2976|  8.61k|      getStreamer().EmitIntValue(AsInt.getLimitedValue(),
 2977|  8.61k|                                 AsInt.getBitWidth() / 8, Error);
 2978|  8.61k|      if (Error) {
  ------------------
  |  Branch (2978:11): [True: 0, False: 8.61k]
  ------------------
 2979|      0|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2980|      0|          return true;
 2981|      0|      }
 2982|       |
 2983|  8.61k|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (2983:11): [True: 180, False: 8.43k]
  ------------------
 2984|    180|        break;
 2985|       |
 2986|  8.43k|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (2986:11): [True: 4.05k, False: 4.38k]
  ------------------
 2987|       |        // return TokError("unexpected token in directive");
 2988|  4.05k|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 2989|  4.05k|        return true;
 2990|  4.05k|      }
 2991|  4.38k|      Lex();
 2992|  4.38k|    }
 2993|  6.06k|  }
 2994|       |
 2995|    868|  Lex();
 2996|    868|  return false;
 2997|  6.75k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveAlignEbj:
 3170|  15.7k|{
 3171|  15.7k|  checkForValidSection();
 3172|       |
 3173|       |  //SMLoc AlignmentLoc = getLexer().getLoc();
 3174|  15.7k|  int64_t Alignment;
 3175|  15.7k|  if (parseAbsoluteExpression(Alignment)) {
  ------------------
  |  Branch (3175:7): [True: 917, False: 14.8k]
  ------------------
 3176|    917|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3177|    917|    return true;
 3178|    917|  }
 3179|       |
 3180|  14.8k|  SMLoc MaxBytesLoc;
 3181|  14.8k|  bool HasFillExpr = false;
 3182|  14.8k|  int64_t FillExpr = 0;
 3183|  14.8k|  int64_t MaxBytesToFill = 0;
 3184|  14.8k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3184:7): [True: 13.5k, False: 1.23k]
  ------------------
 3185|  13.5k|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (3185:9): [True: 913, False: 12.6k]
  ------------------
 3186|       |      // return TokError("unexpected token in directive");
 3187|    913|      KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3188|    913|      return true;
 3189|    913|    }
 3190|  12.6k|    Lex();
 3191|       |
 3192|       |    // The fill expression can be omitted while specifying a maximum number of
 3193|       |    // alignment bytes, e.g:
 3194|       |    //  .align 3,,4
 3195|  12.6k|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (3195:9): [True: 12.2k, False: 386]
  ------------------
 3196|  12.2k|      HasFillExpr = true;
 3197|  12.2k|      if (parseAbsoluteExpression(FillExpr)) {
  ------------------
  |  Branch (3197:11): [True: 2.75k, False: 9.54k]
  ------------------
 3198|  2.75k|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3199|  2.75k|        return true;
 3200|  2.75k|      }
 3201|  12.2k|    }
 3202|       |
 3203|  9.92k|    if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3203:9): [True: 5.49k, False: 4.43k]
  ------------------
 3204|  5.49k|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (3204:11): [True: 401, False: 5.09k]
  ------------------
 3205|       |        // return TokError("unexpected token in directive");
 3206|    401|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3207|    401|        return true;
 3208|    401|      }
 3209|  5.09k|      Lex();
 3210|       |
 3211|  5.09k|      MaxBytesLoc = getLexer().getLoc();
 3212|  5.09k|      if (parseAbsoluteExpression(MaxBytesToFill)) {
  ------------------
  |  Branch (3212:11): [True: 1.09k, False: 4.00k]
  ------------------
 3213|  1.09k|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3214|  1.09k|        return true;
 3215|  1.09k|      }
 3216|       |
 3217|  4.00k|      if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3217:11): [True: 513, False: 3.49k]
  ------------------
 3218|       |        // return TokError("unexpected token in directive");
 3219|    513|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3220|    513|        return true;
 3221|    513|      }
 3222|  4.00k|    }
 3223|  9.92k|  }
 3224|       |
 3225|  9.15k|  Lex();
 3226|       |
 3227|  9.15k|  if (!HasFillExpr)
  ------------------
  |  Branch (3227:7): [True: 1.58k, False: 7.57k]
  ------------------
 3228|  1.58k|    FillExpr = 0;
 3229|       |
 3230|       |  // Compute alignment in bytes.
 3231|  9.15k|  if (IsPow2) {
  ------------------
  |  Branch (3231:7): [True: 8.46k, False: 694]
  ------------------
 3232|       |    // FIXME: Diagnose overflow.
 3233|  8.46k|    if (Alignment >= 32) {
  ------------------
  |  Branch (3233:9): [True: 1.09k, False: 7.36k]
  ------------------
 3234|       |      //Error(AlignmentLoc, "invalid alignment value");
 3235|  1.09k|      Alignment = 31;
 3236|  1.09k|    }
 3237|       |
 3238|  8.46k|    Alignment = 1ULL << Alignment;
 3239|  8.46k|  } else {
 3240|       |    // Reject alignments that aren't either a power of two or zero,
 3241|       |    // for gas compatibility. Alignment of zero is silently rounded
 3242|       |    // up to one.
 3243|    694|    if (Alignment == 0)
  ------------------
  |  Branch (3243:9): [True: 468, False: 226]
  ------------------
 3244|    468|      Alignment = 1;
 3245|    694|    if (!isPowerOf2_64(Alignment)) {
  ------------------
  |  Branch (3245:9): [True: 133, False: 561]
  ------------------
 3246|       |      //Error(AlignmentLoc, "alignment must be a power of 2");
 3247|    133|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3248|    133|      return true;
 3249|    133|    }
 3250|    694|  }
 3251|       |
 3252|       |  // Diagnose non-sensical max bytes to align.
 3253|  9.02k|  if (MaxBytesLoc.isValid()) {
  ------------------
  |  Branch (3253:7): [True: 3.48k, False: 5.54k]
  ------------------
 3254|  3.48k|    if (MaxBytesToFill < 1) {
  ------------------
  |  Branch (3254:9): [True: 395, False: 3.08k]
  ------------------
 3255|       |      //Error(MaxBytesLoc, "alignment directive can never be satisfied in this "
 3256|       |      //                   "many bytes, ignoring maximum bytes expression");
 3257|    395|      MaxBytesToFill = 0;
 3258|    395|    }
 3259|       |
 3260|  3.48k|    if (MaxBytesToFill >= Alignment) {
  ------------------
  |  Branch (3260:9): [True: 2.63k, False: 846]
  ------------------
 3261|  2.63k|      Warning(MaxBytesLoc, "maximum bytes expression exceeds alignment and "
 3262|  2.63k|                           "has no effect");
 3263|  2.63k|      MaxBytesToFill = 0;
 3264|  2.63k|    }
 3265|  3.48k|  }
 3266|       |
 3267|       |  // Check whether we should use optimal code alignment for this .align
 3268|       |  // directive.
 3269|  9.02k|  const MCSection *Section = getStreamer().getCurrentSection().first;
 3270|  9.02k|  assert(Section && "must have section to emit alignment");
  ------------------
  |  Branch (3270:3): [True: 9.02k, False: 0]
  |  Branch (3270:3): [True: 9.02k, Folded]
  |  Branch (3270:3): [True: 9.02k, False: 0]
  ------------------
 3271|  9.02k|  bool UseCodeAlign = Section->UseCodeAlign();
 3272|  9.02k|  if ((!HasFillExpr || Lexer.getMAI().getTextAlignFillValue() == FillExpr) &&
  ------------------
  |  Branch (3272:8): [True: 1.45k, False: 7.56k]
  |  Branch (3272:24): [True: 1.20k, False: 6.36k]
  ------------------
 3273|  2.66k|      ValueSize == 1 && UseCodeAlign) {
  ------------------
  |  Branch (3273:7): [True: 2.62k, False: 35]
  |  Branch (3273:25): [True: 2.54k, False: 82]
  ------------------
 3274|  2.54k|    getStreamer().EmitCodeAlignment(Alignment, MaxBytesToFill);
 3275|  6.48k|  } else {
 3276|       |    // FIXME: Target specific behavior about how the "extra" bytes are filled.
 3277|  6.48k|    getStreamer().EmitValueToAlignment(Alignment, FillExpr, ValueSize,
 3278|  6.48k|                                       MaxBytesToFill);
 3279|  6.48k|  }
 3280|       |
 3281|  9.02k|  return false;
 3282|  9.02k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser17parseDirectiveOrgEv:
 3131|  1.80k|bool AsmParser::parseDirectiveOrg() {
 3132|  1.80k|  checkForValidSection();
 3133|       |
 3134|  1.80k|  const MCExpr *Offset;
 3135|  1.80k|  if (parseExpression(Offset)) {
  ------------------
  |  Branch (3135:7): [True: 685, False: 1.11k]
  ------------------
 3136|    685|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3137|    685|    return true;
 3138|    685|  }
 3139|       |
 3140|       |  // Parse optional fill expression.
 3141|  1.11k|  int64_t FillExpr = 0;
 3142|  1.11k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3142:7): [True: 273, False: 844]
  ------------------
 3143|    273|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (3143:9): [True: 95, False: 178]
  ------------------
 3144|       |      // return TokError("unexpected token in '.org' directive");
 3145|     95|      KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3146|     95|      return true;
 3147|     95|    }
 3148|    178|    Lex();
 3149|       |
 3150|    178|    if (parseAbsoluteExpression(FillExpr)) {
  ------------------
  |  Branch (3150:9): [True: 84, False: 94]
  ------------------
 3151|     84|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3152|     84|      return true;
 3153|     84|    }
 3154|       |
 3155|     94|    if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3155:9): [True: 25, False: 69]
  ------------------
 3156|       |      // return TokError("unexpected token in '.org' directive");
 3157|     25|      KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3158|     25|      return true;
 3159|     25|    }
 3160|     94|  }
 3161|       |
 3162|    913|  Lex();
 3163|    913|  getStreamer().emitValueToOffset(Offset, FillExpr);
 3164|    913|  return false;
 3165|  1.11k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveFillEv:
 3036|  9.32k|{
 3037|  9.32k|  checkForValidSection();
 3038|       |
 3039|  9.32k|  SMLoc RepeatLoc = getLexer().getLoc();
 3040|  9.32k|  int64_t NumValues;
 3041|  9.32k|  if (parseAbsoluteExpression(NumValues)) {
  ------------------
  |  Branch (3041:7): [True: 350, False: 8.97k]
  ------------------
 3042|    350|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3043|    350|    return true;
 3044|    350|  }
 3045|       |
 3046|  8.97k|  if (NumValues < 0) {
  ------------------
  |  Branch (3046:7): [True: 6.80k, False: 2.17k]
  ------------------
 3047|  6.80k|    Warning(RepeatLoc,
 3048|  6.80k|            "'.fill' directive with negative repeat count has no effect");
 3049|  6.80k|    NumValues = 0;
 3050|  6.80k|  }
 3051|       |
 3052|  8.97k|  int64_t FillSize = 1;
 3053|  8.97k|  int64_t FillExpr = 0;
 3054|       |
 3055|  8.97k|  SMLoc SizeLoc, ExprLoc;
 3056|  8.97k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3056:7): [True: 8.63k, False: 340]
  ------------------
 3057|  8.63k|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (3057:9): [True: 318, False: 8.31k]
  ------------------
 3058|       |      // return TokError("unexpected token in '.fill' directive");
 3059|    318|      KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3060|    318|      return true;
 3061|    318|    }
 3062|  8.31k|    Lex();
 3063|       |
 3064|  8.31k|    SizeLoc = getLexer().getLoc();
 3065|  8.31k|    if (parseAbsoluteExpression(FillSize)) {
  ------------------
  |  Branch (3065:9): [True: 3.09k, False: 5.22k]
  ------------------
 3066|  3.09k|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3067|  3.09k|      return true;
 3068|  3.09k|    }
 3069|       |
 3070|  5.22k|    if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3070:9): [True: 3.27k, False: 1.95k]
  ------------------
 3071|  3.27k|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (3071:11): [True: 300, False: 2.97k]
  ------------------
 3072|       |        // return TokError("unexpected token in '.fill' directive");
 3073|    300|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3074|    300|        return true;
 3075|    300|      }
 3076|  2.97k|      Lex();
 3077|       |
 3078|  2.97k|      ExprLoc = getLexer().getLoc();
 3079|  2.97k|      if (parseAbsoluteExpression(FillExpr)) {
  ------------------
  |  Branch (3079:11): [True: 1.99k, False: 981]
  ------------------
 3080|  1.99k|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3081|  1.99k|        return true;
 3082|  1.99k|      }
 3083|       |
 3084|    981|      if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3084:11): [True: 84, False: 897]
  ------------------
 3085|       |        // return TokError("unexpected token in '.fill' directive");
 3086|     84|        KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3087|     84|        return true;
 3088|     84|      }
 3089|       |
 3090|    897|      Lex();
 3091|    897|    }
 3092|  5.22k|  }
 3093|       |
 3094|  3.18k|  if (FillSize < 0) {
  ------------------
  |  Branch (3094:7): [True: 641, False: 2.54k]
  ------------------
 3095|    641|    Warning(SizeLoc, "'.fill' directive with negative size has no effect");
 3096|    641|    NumValues = 0;
 3097|    641|  }
 3098|  3.18k|  if (FillSize > 8) {
  ------------------
  |  Branch (3098:7): [True: 2.08k, False: 1.10k]
  ------------------
 3099|  2.08k|    Warning(SizeLoc, "'.fill' directive with size greater than 8 has been truncated to 8");
 3100|  2.08k|    FillSize = 8;
 3101|  2.08k|  }
 3102|       |
 3103|  3.18k|  if (!isUInt<32>(FillExpr) && FillSize > 4)
  ------------------
  |  Branch (3103:7): [True: 788, False: 2.40k]
  |  Branch (3103:32): [True: 574, False: 214]
  ------------------
 3104|    574|    Warning(ExprLoc, "'.fill' directive pattern has been truncated to 32-bits");
 3105|       |
 3106|  3.18k|  if (NumValues > 0) {
  ------------------
  |  Branch (3106:7): [True: 789, False: 2.39k]
  ------------------
 3107|    789|    int64_t NonZeroFillSize = FillSize > 4 ? 4 : FillSize;
  ------------------
  |  Branch (3107:31): [True: 444, False: 345]
  ------------------
 3108|    789|    FillExpr &= ~0ULL >> (64 - NonZeroFillSize * 8);
 3109|    789|    bool Error;
 3110|  70.8M|    for (uint64_t i = 0, e = NumValues; i != e; ++i) {
  ------------------
  |  Branch (3110:41): [True: 70.8M, False: 696]
  ------------------
 3111|  70.8M|      getStreamer().EmitIntValue(FillExpr, NonZeroFillSize, Error);
 3112|  70.8M|      if (Error) {
  ------------------
  |  Branch (3112:11): [True: 93, False: 70.8M]
  ------------------
 3113|     93|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3114|     93|          return true;
 3115|     93|      }
 3116|  70.8M|      if (NonZeroFillSize < FillSize) {
  ------------------
  |  Branch (3116:11): [True: 5.82M, False: 65.0M]
  ------------------
 3117|  5.82M|        getStreamer().EmitIntValue(0, FillSize - NonZeroFillSize, Error);
 3118|  5.82M|        if (Error) {
  ------------------
  |  Branch (3118:13): [True: 0, False: 5.82M]
  ------------------
 3119|      0|            KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3120|      0|            return true;
 3121|      0|        }
 3122|  5.82M|      }
 3123|  70.8M|    }
 3124|    789|  }
 3125|       |
 3126|  3.09k|  return false;
 3127|  3.18k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveZeroEv:
 3002|  2.74k|{
 3003|  2.74k|  checkForValidSection();
 3004|       |
 3005|  2.74k|  int64_t NumBytes;
 3006|  2.74k|  if (parseAbsoluteExpression(NumBytes)) {
  ------------------
  |  Branch (3006:7): [True: 218, False: 2.52k]
  ------------------
 3007|    218|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3008|    218|    return true;
 3009|    218|  }
 3010|       |
 3011|  2.52k|  int64_t Val = 0;
 3012|  2.52k|  if (getLexer().is(AsmToken::Comma)) {
  ------------------
  |  Branch (3012:7): [True: 2.17k, False: 345]
  ------------------
 3013|  2.17k|    Lex();
 3014|  2.17k|    if (parseAbsoluteExpression(Val)) {
  ------------------
  |  Branch (3014:9): [True: 245, False: 1.93k]
  ------------------
 3015|    245|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3016|    245|      return true;
 3017|    245|    }
 3018|  2.17k|  }
 3019|       |
 3020|  2.27k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3020:7): [True: 277, False: 2.00k]
  ------------------
 3021|       |    // return TokError("unexpected token in '.zero' directive");
 3022|    277|    KsError = KS_ERR_ASM_DIRECTIVE_TOKEN;
 3023|    277|    return true;
 3024|    277|  }
 3025|       |
 3026|  2.00k|  Lex();
 3027|       |
 3028|  2.00k|  getStreamer().EmitFill(NumBytes, Val);
 3029|       |
 3030|  2.00k|  return false;
 3031|  2.27k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser29parseDirectiveSymbolAttributeEN7llvm_ks12MCSymbolAttrE:
 4650|    126|{
 4651|    126|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4651:7): [True: 99, False: 27]
  ------------------
 4652|    183|    for (;;) {
 4653|    183|      StringRef Name;
 4654|       |      //SMLoc Loc = getTok().getLoc();
 4655|       |
 4656|    183|      if (parseIdentifier(Name)) {
  ------------------
  |  Branch (4656:11): [True: 16, False: 167]
  ------------------
 4657|       |        //return Error(Loc, "expected identifier in directive");
 4658|     16|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4659|     16|        return true;
 4660|     16|      }
 4661|       |
 4662|    167|      if (Name.empty()) {
  ------------------
  |  Branch (4662:11): [True: 3, False: 164]
  ------------------
 4663|      3|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4664|      3|          return true;
 4665|      3|      }
 4666|    164|      MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
 4667|       |
 4668|       |      // Assembler local symbols don't make any sense here. Complain loudly.
 4669|    164|      if (Sym->isTemporary()) {
  ------------------
  |  Branch (4669:11): [True: 11, False: 153]
  ------------------
 4670|       |        //return Error(Loc, "non-local symbol required in directive");
 4671|     11|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4672|     11|        return true;
 4673|     11|      }
 4674|       |
 4675|    153|      if (!getStreamer().EmitSymbolAttribute(Sym, Attr)) {
  ------------------
  |  Branch (4675:11): [True: 0, False: 153]
  ------------------
 4676|       |        //return Error(Loc, "unable to emit symbol attribute");
 4677|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4678|      0|        return true;
 4679|      0|      }
 4680|       |
 4681|    153|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (4681:11): [True: 46, False: 107]
  ------------------
 4682|     46|        break;
 4683|       |
 4684|    107|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (4684:11): [True: 23, False: 84]
  ------------------
 4685|       |        //return TokError("unexpected token in directive");
 4686|     23|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4687|     23|        return true;
 4688|     23|      }
 4689|     84|      Lex();
 4690|     84|    }
 4691|     99|  }
 4692|       |
 4693|     73|  Lex();
 4694|     73|  return false;
 4695|    126|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveCommEb:
 4700|  2.17k|{
 4701|  2.17k|  checkForValidSection();
 4702|       |
 4703|       |  //SMLoc IDLoc = getLexer().getLoc();
 4704|  2.17k|  StringRef Name;
 4705|  2.17k|  if (parseIdentifier(Name)) {
  ------------------
  |  Branch (4705:7): [True: 466, False: 1.70k]
  ------------------
 4706|       |    //return TokError("expected identifier in directive");
 4707|    466|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4708|    466|    return true;
 4709|    466|  }
 4710|       |
 4711|  1.70k|  if (Name.empty()) {
  ------------------
  |  Branch (4711:7): [True: 25, False: 1.68k]
  ------------------
 4712|     25|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4713|     25|      return true;
 4714|     25|  }
 4715|       |  // Handle the identifier as the key symbol.
 4716|  1.68k|  MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
 4717|       |
 4718|  1.68k|  if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (4718:7): [True: 268, False: 1.41k]
  ------------------
 4719|       |    //return TokError("unexpected token in directive");
 4720|    268|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4721|    268|    return true;
 4722|    268|  }
 4723|  1.41k|  Lex();
 4724|       |
 4725|  1.41k|  int64_t Size;
 4726|       |  //SMLoc SizeLoc = getLexer().getLoc();
 4727|  1.41k|  if (parseAbsoluteExpression(Size)) {
  ------------------
  |  Branch (4727:7): [True: 132, False: 1.28k]
  ------------------
 4728|    132|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4729|    132|    return true;
 4730|    132|  }
 4731|       |
 4732|  1.28k|  int64_t Pow2Alignment = 0;
 4733|  1.28k|  SMLoc Pow2AlignmentLoc;
 4734|  1.28k|  if (getLexer().is(AsmToken::Comma)) {
  ------------------
  |  Branch (4734:7): [True: 172, False: 1.10k]
  ------------------
 4735|    172|    Lex();
 4736|    172|    Pow2AlignmentLoc = getLexer().getLoc();
 4737|    172|    if (parseAbsoluteExpression(Pow2Alignment)) {
  ------------------
  |  Branch (4737:9): [True: 10, False: 162]
  ------------------
 4738|     10|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4739|     10|      return true;
 4740|     10|    }
 4741|       |
 4742|    162|    LCOMM::LCOMMType LCOMM = Lexer.getMAI().getLCOMMDirectiveAlignmentType();
 4743|    162|    if (IsLocal && LCOMM == LCOMM::NoAlignment) {
  ------------------
  |  Branch (4743:9): [True: 34, False: 128]
  |  Branch (4743:20): [True: 34, False: 0]
  ------------------
 4744|       |      //return Error(Pow2AlignmentLoc, "alignment not supported on this target");
 4745|     34|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4746|     34|      return true;
 4747|     34|    }
 4748|       |
 4749|       |    // If this target takes alignments in bytes (not log) validate and convert.
 4750|    128|    if ((!IsLocal && Lexer.getMAI().getCOMMDirectiveAlignmentIsInBytes()) ||
  ------------------
  |  Branch (4750:10): [True: 128, False: 0]
  |  Branch (4750:22): [True: 128, False: 0]
  ------------------
 4751|    128|        (IsLocal && LCOMM == LCOMM::ByteAlignment)) {
  ------------------
  |  Branch (4751:10): [True: 0, False: 0]
  |  Branch (4751:21): [True: 0, False: 0]
  ------------------
 4752|    128|      if (!isPowerOf2_64(Pow2Alignment)) {
  ------------------
  |  Branch (4752:11): [True: 115, False: 13]
  ------------------
 4753|       |        //return Error(Pow2AlignmentLoc, "alignment must be a power of 2");
 4754|    115|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4755|    115|        return true;
 4756|    115|      }
 4757|     13|      Pow2Alignment = Log2_64(Pow2Alignment);
 4758|     13|    }
 4759|    128|  }
 4760|       |
 4761|  1.12k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4761:7): [True: 126, False: 995]
  ------------------
 4762|       |    //return TokError("unexpected token in '.comm' or '.lcomm' directive");
 4763|    126|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4764|    126|    return true;
 4765|    126|  }
 4766|       |
 4767|    995|  Lex();
 4768|       |
 4769|       |  // NOTE: a size of zero for a .comm should create a undefined symbol
 4770|       |  // but a size of .lcomm creates a bss symbol of size zero.
 4771|    995|  if (Size < 0) {
  ------------------
  |  Branch (4771:7): [True: 145, False: 850]
  ------------------
 4772|       |    //return Error(SizeLoc, "invalid '.comm' or '.lcomm' directive size, can't "
 4773|       |    //                      "be less than zero");
 4774|    145|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4775|    145|    return true;
 4776|    145|  }
 4777|       |
 4778|       |  // NOTE: The alignment in the directive is a power of 2 value, the assembler
 4779|       |  // may internally end up wanting an alignment in bytes.
 4780|       |  // FIXME: Diagnose overflow.
 4781|    850|  if (Pow2Alignment < 0) {
  ------------------
  |  Branch (4781:7): [True: 0, False: 850]
  ------------------
 4782|       |    //return Error(Pow2AlignmentLoc, "invalid '.comm' or '.lcomm' directive "
 4783|       |    //                               "alignment, can't be less than zero");
 4784|      0|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4785|      0|    return true;
 4786|      0|  }
 4787|       |
 4788|    850|  if (!Sym->isUndefined()) {
  ------------------
  |  Branch (4788:7): [True: 79, False: 771]
  ------------------
 4789|       |    //return Error(IDLoc, "invalid symbol redefinition");
 4790|     79|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4791|     79|    return true;
 4792|     79|  }
 4793|       |
 4794|       |  // Create the Symbol as a common or local common with Size and Pow2Alignment
 4795|    771|  if (IsLocal) {
  ------------------
  |  Branch (4795:7): [True: 45, False: 726]
  ------------------
 4796|     45|    getStreamer().EmitLocalCommonSymbol(Sym, Size, 1 << Pow2Alignment);
 4797|     45|    return false;
 4798|     45|  }
 4799|       |
 4800|    726|  getStreamer().EmitCommonSymbol(Sym, Size, 1 << Pow2Alignment);
 4801|    726|  return false;
 4802|    771|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveAbortEv:
 4807|     11|{
 4808|       |  // FIXME: Use loc from directive.
 4809|       |  //SMLoc Loc = getLexer().getLoc();
 4810|       |
 4811|     11|  StringRef Str = parseStringToEndOfStatement();
 4812|     11|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4812:7): [True: 1, False: 10]
  ------------------
 4813|       |    //return TokError("unexpected token in '.abort' directive");
 4814|      1|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4815|      1|    return true;
 4816|      1|  }
 4817|       |
 4818|     10|  Lex();
 4819|       |
 4820|     10|  if (Str.empty()) {
  ------------------
  |  Branch (4820:7): [True: 4, False: 6]
  ------------------
 4821|       |    //Error(Loc, ".abort detected. Assembly stopping.");
 4822|      4|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4823|      4|    return true;
 4824|      6|  } else {
 4825|       |    //Error(Loc, ".abort '" + Str + "' detected. Assembly stopping.");
 4826|      6|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4827|      6|    return true;
 4828|      6|  }
 4829|       |
 4830|       |  // FIXME: Actually abort assembly here.
 4831|       |
 4832|      0|  return false;
 4833|     10|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser21parseDirectiveIncludeEv:
 4838|    217|{
 4839|    217|  if (getLexer().isNot(AsmToken::String)) {
  ------------------
  |  Branch (4839:7): [True: 87, False: 130]
  ------------------
 4840|       |    //return TokError("expected string in '.include' directive");
 4841|     87|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4842|     87|    return true;
 4843|     87|  }
 4844|       |
 4845|       |  // Allow the strings to have escaped octal character sequence.
 4846|    130|  std::string Filename;
 4847|    130|  if (parseEscapedString(Filename)) {
  ------------------
  |  Branch (4847:7): [True: 10, False: 120]
  ------------------
 4848|     10|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4849|     10|    return true;
 4850|     10|  }
 4851|       |  //SMLoc IncludeLoc = getLexer().getLoc();
 4852|    120|  Lex();
 4853|       |
 4854|    120|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4854:7): [True: 113, False: 7]
  ------------------
 4855|       |    //return TokError("unexpected token in '.include' directive");
 4856|    113|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4857|    113|    return true;
 4858|    113|  }
 4859|       |
 4860|       |  // Attempt to switch the lexer to the included file before consuming the end
 4861|       |  // of statement to avoid losing it when we switch.
 4862|      7|  if (enterIncludeFile(Filename)) {
  ------------------
  |  Branch (4862:7): [True: 7, False: 0]
  ------------------
 4863|       |    //Error(IncludeLoc, "Could not find include file '" + Filename + "'");
 4864|      7|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4865|      7|    return true;
 4866|      7|  }
 4867|       |
 4868|      0|  return false;
 4869|      7|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser16enterIncludeFileERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  622|      7|bool AsmParser::enterIncludeFile(const std::string &Filename) {
  623|      7|  std::string IncludedFile;
  624|      7|  unsigned NewBuf =
  625|      7|      SrcMgr.AddIncludeFile(Filename, Lexer.getLoc(), IncludedFile);
  626|      7|  if (!NewBuf)
  ------------------
  |  Branch (626:7): [True: 7, False: 0]
  ------------------
  627|      7|    return true;
  628|       |
  629|      0|  CurBuffer = NewBuf;
  630|      0|  Lexer.setBuffer(SrcMgr.getMemoryBuffer(CurBuffer)->getBuffer());
  631|      0|  return false;
  632|      7|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveReptEN7llvm_ks5SMLocENS1_9StringRefE:
 5563|   161k|{
 5564|   161k|  const MCExpr *CountExpr;
 5565|       |  //SMLoc CountLoc = getTok().getLoc();
 5566|   161k|  if (parseExpression(CountExpr)) {
  ------------------
  |  Branch (5566:7): [True: 83.3k, False: 78.0k]
  ------------------
 5567|  83.3k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5568|  83.3k|    return true;
 5569|  83.3k|  }
 5570|       |
 5571|  78.0k|  int64_t Count;
 5572|  78.0k|  if (!CountExpr->evaluateAsAbsolute(Count)) {
  ------------------
  |  Branch (5572:7): [True: 3.40k, False: 74.6k]
  ------------------
 5573|  3.40k|    eatToEndOfStatement();
 5574|       |    //return Error(CountLoc, "unexpected token in '" + Dir + "' directive");
 5575|  3.40k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5576|  3.40k|    return true;
 5577|  3.40k|  }
 5578|       |
 5579|  74.6k|  if (Count < 0) {
  ------------------
  |  Branch (5579:7): [True: 73.6k, False: 994]
  ------------------
 5580|       |    //return Error(CountLoc, "Count is negative");
 5581|  73.6k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5582|  73.6k|    return true;
 5583|  73.6k|  }
 5584|       |
 5585|    994|  if (Lexer.isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5585:7): [True: 247, False: 747]
  ------------------
 5586|       |    //return TokError("unexpected token in '" + Dir + "' directive");
 5587|    247|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5588|    247|    return true;
 5589|    247|  }
 5590|       |
 5591|       |  // Eat the end of statement.
 5592|    747|  Lex();
 5593|       |
 5594|       |  // Lex the rept definition.
 5595|    747|  MCAsmMacro *M = parseMacroLikeBody(DirectiveLoc);
 5596|    747|  if (!M) {
  ------------------
  |  Branch (5596:7): [True: 55, False: 692]
  ------------------
 5597|     55|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5598|     55|    return true;
 5599|     55|  }
 5600|       |
 5601|       |  // Macro instantiation is lexical, unfortunately. We construct a new buffer
 5602|       |  // to hold the macro body with substitutions.
 5603|    692|  SmallString<256> Buf;
 5604|    692|  raw_svector_ostream OS(Buf);
 5605|  42.3M|  while (Count--) {
  ------------------
  |  Branch (5605:10): [True: 42.3M, False: 692]
  ------------------
 5606|       |    // Note that the AtPseudoVariable is disabled for instantiations of .rep(t).
 5607|  42.3M|    if (expandMacro(OS, M->Body, None, None, false, getTok().getLoc())) {
  ------------------
  |  Branch (5607:9): [True: 0, False: 42.3M]
  ------------------
 5608|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5609|      0|      return true;
 5610|      0|    }
 5611|  42.3M|  }
 5612|    692|  instantiateMacroLikeBody(M, DirectiveLoc, OS);
 5613|       |
 5614|    692|  return false;
 5615|    692|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseMacroLikeBodyEN7llvm_ks5SMLocE:
 5498|  3.08k|MCAsmMacro *AsmParser::parseMacroLikeBody(SMLoc DirectiveLoc) {
 5499|  3.08k|  AsmToken EndToken, StartToken = getTok();
 5500|       |
 5501|  3.08k|  unsigned NestLevel = 0;
 5502|  8.58k|  for (;;) {
 5503|       |    // Check whether we have reached the end of the file.
 5504|  8.58k|    if (getLexer().is(AsmToken::Eof)) {
  ------------------
  |  Branch (5504:9): [True: 134, False: 8.45k]
  ------------------
 5505|       |      //Error(DirectiveLoc, "no matching '.endr' in definition");
 5506|    134|      return nullptr;
 5507|    134|    }
 5508|       |
 5509|  8.45k|    if (Lexer.is(AsmToken::Identifier) &&
  ------------------
  |  Branch (5509:9): [True: 6.59k, False: 1.86k]
  |  Branch (5509:9): [True: 244, False: 8.20k]
  ------------------
 5510|  6.59k|        (getTok().getIdentifier() == ".rept")) {
  ------------------
  |  Branch (5510:9): [True: 244, False: 6.34k]
  ------------------
 5511|    244|      ++NestLevel;
 5512|    244|    }
 5513|       |
 5514|       |    // Otherwise, check whether we have reached the .endr.
 5515|  8.45k|    if (Lexer.is(AsmToken::Identifier) && getTok().getIdentifier() == ".endr") {
  ------------------
  |  Branch (5515:9): [True: 6.59k, False: 1.86k]
  |  Branch (5515:9): [True: 2.98k, False: 5.46k]
  |  Branch (5515:43): [True: 2.98k, False: 3.60k]
  ------------------
 5516|  2.98k|      if (NestLevel == 0) {
  ------------------
  |  Branch (5516:11): [True: 2.95k, False: 36]
  ------------------
 5517|  2.95k|        EndToken = getTok();
 5518|  2.95k|        Lex();
 5519|  2.95k|        if (Lexer.isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5519:13): [True: 118, False: 2.83k]
  ------------------
 5520|       |          //TokError("unexpected token in '.endr' directive");
 5521|    118|          return nullptr;
 5522|    118|        }
 5523|  2.83k|        break;
 5524|  2.95k|      }
 5525|     36|      --NestLevel;
 5526|     36|    }
 5527|       |
 5528|       |    // Otherwise, scan till the end of the statement.
 5529|  5.49k|    eatToEndOfStatement();
 5530|  5.49k|  }
 5531|       |
 5532|  2.83k|  const char *BodyStart = StartToken.getLoc().getPointer();
 5533|  2.83k|  const char *BodyEnd = EndToken.getLoc().getPointer();
 5534|  2.83k|  StringRef Body = StringRef(BodyStart, BodyEnd - BodyStart);
 5535|       |
 5536|       |  // We Are Anonymous.
 5537|  2.83k|  MacroLikeBodies.emplace_back(StringRef(), Body, MCAsmMacroParameters());
 5538|  2.83k|  return &MacroLikeBodies.back();
 5539|  3.08k|}
AsmParser.cpp:_ZN12_GLOBAL__N_110MCAsmMacroC2EN7llvm_ks9StringRefES2_NSt3__16vectorINS_19MCAsmMacroParameterENS3_9allocatorIS5_EEEE:
   77|  3.42k|      : Name(N), Body(B), Parameters(std::move(P)) {}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser24instantiateMacroLikeBodyEPNS_10MCAsmMacroEN7llvm_ks5SMLocERNS3_19raw_svector_ostreamE:
 5542|  2.83k|                                         raw_svector_ostream &OS) {
 5543|  2.83k|  OS << ".endr\n";
 5544|       |
 5545|  2.83k|  std::unique_ptr<MemoryBuffer> Instantiation =
 5546|  2.83k|      MemoryBuffer::getMemBufferCopy(OS.str(), "<instantiation>");
 5547|       |
 5548|       |  // Create the macro instantiation object and add to the current macro
 5549|       |  // instantiation stack.
 5550|  2.83k|  MacroInstantiation *MI = new MacroInstantiation(
 5551|  2.83k|      DirectiveLoc, CurBuffer, getTok().getLoc(), TheCondStack.size());
 5552|  2.83k|  ActiveMacros.push_back(MI);
 5553|       |
 5554|       |  // Jump to the macro instantiation and prime the lexer.
 5555|  2.83k|  CurBuffer = SrcMgr.AddNewSourceBuffer(std::move(Instantiation), SMLoc());
 5556|  2.83k|  Lexer.setBuffer(SrcMgr.getMemoryBuffer(CurBuffer)->getBuffer());
 5557|  2.83k|  Lex();
 5558|  2.83k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser17parseDirectiveIrpEN7llvm_ks5SMLocE:
 5620|  3.05k|{
 5621|  3.05k|  MCAsmMacroParameter Parameter;
 5622|       |
 5623|  3.05k|  if (parseIdentifier(Parameter.Name)) {
  ------------------
  |  Branch (5623:7): [True: 243, False: 2.80k]
  ------------------
 5624|       |    //return TokError("expected identifier in '.irp' directive");
 5625|    243|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5626|    243|    return true;
 5627|    243|  }
 5628|       |
 5629|  2.80k|  if (Lexer.isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (5629:7): [True: 276, False: 2.53k]
  ------------------
 5630|       |    //return TokError("expected comma in '.irp' directive");
 5631|    276|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5632|    276|    return true;
 5633|    276|  }
 5634|       |
 5635|  2.53k|  Lex();
 5636|       |
 5637|  2.53k|  MCAsmMacroArguments A;
 5638|  2.53k|  if (parseMacroArguments(nullptr, A)) {
  ------------------
  |  Branch (5638:7): [True: 521, False: 2.01k]
  ------------------
 5639|    521|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5640|    521|    return true;
 5641|    521|  }
 5642|       |
 5643|       |  // Eat the end of statement.
 5644|  2.01k|  Lex();
 5645|       |
 5646|       |  // Lex the irp definition.
 5647|  2.01k|  MCAsmMacro *M = parseMacroLikeBody(DirectiveLoc);
 5648|  2.01k|  if (!M) {
  ------------------
  |  Branch (5648:7): [True: 106, False: 1.90k]
  ------------------
 5649|    106|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5650|    106|    return true;
 5651|    106|  }
 5652|       |
 5653|       |  // Macro instantiation is lexical, unfortunately. We construct a new buffer
 5654|       |  // to hold the macro body with substitutions.
 5655|  1.90k|  SmallString<256> Buf;
 5656|  1.90k|  raw_svector_ostream OS(Buf);
 5657|       |
 5658|  36.4k|  for (const MCAsmMacroArgument &Arg : A) {
  ------------------
  |  Branch (5658:38): [True: 36.4k, False: 1.90k]
  ------------------
 5659|       |    // Note that the AtPseudoVariable is enabled for instantiations of .irp.
 5660|       |    // This is undocumented, but GAS seems to support it.
 5661|  36.4k|    if (expandMacro(OS, M->Body, Parameter, Arg, true, getTok().getLoc())) {
  ------------------
  |  Branch (5661:9): [True: 0, False: 36.4k]
  ------------------
 5662|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5663|      0|      return true;
 5664|      0|    }
 5665|  36.4k|  }
 5666|       |
 5667|  1.90k|  instantiateMacroLikeBody(M, DirectiveLoc, OS);
 5668|       |
 5669|  1.90k|  return false;
 5670|  1.90k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveIrpcEN7llvm_ks5SMLocE:
 5675|  3.31k|{
 5676|  3.31k|  MCAsmMacroParameter Parameter;
 5677|       |
 5678|  3.31k|  if (parseIdentifier(Parameter.Name)) {
  ------------------
  |  Branch (5678:7): [True: 284, False: 3.03k]
  ------------------
 5679|       |    //return TokError("expected identifier in '.irpc' directive");
 5680|    284|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5681|    284|    return true;
 5682|    284|  }
 5683|       |
 5684|  3.03k|  if (Lexer.isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (5684:7): [True: 613, False: 2.41k]
  ------------------
 5685|       |    //return TokError("expected comma in '.irpc' directive");
 5686|    613|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5687|    613|    return true;
 5688|    613|  }
 5689|       |
 5690|  2.41k|  Lex();
 5691|       |
 5692|  2.41k|  MCAsmMacroArguments A;
 5693|  2.41k|  if (parseMacroArguments(nullptr, A)) {
  ------------------
  |  Branch (5693:7): [True: 764, False: 1.65k]
  ------------------
 5694|    764|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5695|    764|    return true;
 5696|    764|  }
 5697|       |
 5698|  1.65k|  if (A.size() != 1 || A.front().size() != 1) {
  ------------------
  |  Branch (5698:7): [True: 678, False: 977]
  |  Branch (5698:24): [True: 649, False: 328]
  ------------------
 5699|       |    //return TokError("unexpected token in '.irpc' directive");
 5700|  1.32k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5701|  1.32k|    return true;
 5702|  1.32k|  }
 5703|       |
 5704|       |  // Eat the end of statement.
 5705|    328|  Lex();
 5706|       |
 5707|       |  // Lex the irpc definition.
 5708|    328|  MCAsmMacro *M = parseMacroLikeBody(DirectiveLoc);
 5709|    328|  if (!M) {
  ------------------
  |  Branch (5709:7): [True: 91, False: 237]
  ------------------
 5710|     91|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5711|     91|    return true;
 5712|     91|  }
 5713|       |
 5714|       |  // Macro instantiation is lexical, unfortunately. We construct a new buffer
 5715|       |  // to hold the macro body with substitutions.
 5716|    237|  SmallString<256> Buf;
 5717|    237|  raw_svector_ostream OS(Buf);
 5718|       |
 5719|    237|  StringRef Values = A.front().front().getString();
 5720|  13.3k|  for (std::size_t I = 0, End = Values.size(); I != End; ++I) {
  ------------------
  |  Branch (5720:48): [True: 13.1k, False: 237]
  ------------------
 5721|  13.1k|    MCAsmMacroArgument Arg;
 5722|  13.1k|    Arg.emplace_back(AsmToken::Identifier, Values.slice(I, I + 1));
 5723|       |
 5724|       |    // Note that the AtPseudoVariable is enabled for instantiations of .irpc.
 5725|       |    // This is undocumented, but GAS seems to support it.
 5726|  13.1k|    if (expandMacro(OS, M->Body, Parameter, Arg, true, getTok().getLoc())) {
  ------------------
  |  Branch (5726:9): [True: 0, False: 13.1k]
  ------------------
 5727|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5728|      0|      return true;
 5729|      0|    }
 5730|  13.1k|  }
 5731|       |
 5732|    237|  instantiateMacroLikeBody(M, DirectiveLoc, OS);
 5733|       |
 5734|    237|  return false;
 5735|    237|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveEndrEN7llvm_ks5SMLocE:
 5738|  3.08k|{
 5739|  3.08k|  if (ActiveMacros.empty()) {
  ------------------
  |  Branch (5739:7): [True: 187, False: 2.89k]
  ------------------
 5740|       |    //return TokError("unmatched '.endr' directive");
 5741|    187|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5742|    187|    return true;
 5743|    187|  }
 5744|       |
 5745|       |  // The only .repl that should get here are the ones created by
 5746|       |  // instantiateMacroLikeBody.
 5747|  3.08k|  assert(getLexer().is(AsmToken::EndOfStatement));
  ------------------
  |  Branch (5747:3): [True: 2.89k, False: 0]
  ------------------
 5748|       |
 5749|  2.89k|  handleMacroExit();
 5750|  2.89k|  return false;
 5751|  2.89k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser15handleMacroExitEv:
 2507|  51.0k|void AsmParser::handleMacroExit() {
 2508|       |  // Jump to the EndOfStatement we should return to, and consume it.
 2509|  51.0k|  jumpToLoc(ActiveMacros.back()->ExitLoc, ActiveMacros.back()->ExitBuffer);
 2510|  51.0k|  Lex();
 2511|       |
 2512|       |  // Pop the instantiation entry.
 2513|  51.0k|  delete ActiveMacros.back();
 2514|  51.0k|  ActiveMacros.pop_back();
 2515|  51.0k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser9jumpToLocEN7llvm_ks5SMLocEj:
  649|  51.0k|void AsmParser::jumpToLoc(SMLoc Loc, unsigned InBuffer) {
  650|  51.0k|  CurBuffer = InBuffer ? InBuffer : SrcMgr.FindBufferContainingLoc(Loc);
  ------------------
  |  Branch (650:15): [True: 51.0k, False: 0]
  ------------------
  651|  51.0k|  Lexer.setBuffer(SrcMgr.getMemoryBuffer(CurBuffer)->getBuffer(),
  652|  51.0k|                  Loc.getPointer());
  653|  51.0k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveSpaceEN7llvm_ks9StringRefE:
 4574|  2.53k|{
 4575|  2.53k|  checkForValidSection();
 4576|       |
 4577|  2.53k|  int64_t NumBytes;
 4578|  2.53k|  if (parseAbsoluteExpression(NumBytes)) {
  ------------------
  |  Branch (4578:7): [True: 165, False: 2.36k]
  ------------------
 4579|    165|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4580|    165|    return true;
 4581|    165|  }
 4582|       |
 4583|  2.36k|  int64_t FillExpr = 0;
 4584|  2.36k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4584:7): [True: 1.62k, False: 747]
  ------------------
 4585|  1.62k|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (4585:9): [True: 215, False: 1.40k]
  ------------------
 4586|       |      //return TokError("unexpected token in '" + Twine(IDVal) + "' directive");
 4587|    215|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4588|    215|      return true;
 4589|    215|    }
 4590|  1.40k|    Lex();
 4591|       |
 4592|  1.40k|    if (parseAbsoluteExpression(FillExpr))
  ------------------
  |  Branch (4592:9): [True: 20, False: 1.38k]
  ------------------
 4593|     20|      return true;
 4594|       |
 4595|  1.38k|    if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (4595:9): [True: 1, False: 1.38k]
  ------------------
 4596|       |      //return TokError("unexpected token in '" + Twine(IDVal) + "' directive");
 4597|      1|      return true;
 4598|  1.38k|  }
 4599|       |
 4600|  2.13k|  Lex();
 4601|       |
 4602|  2.13k|  if (NumBytes <= 0) {
  ------------------
  |  Branch (4602:7): [True: 1.70k, False: 427]
  ------------------
 4603|       |    //return TokError("invalid number of bytes in '" + Twine(IDVal) +
 4604|       |    //                "' directive");
 4605|  1.70k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4606|  1.70k|    return true;
 4607|  1.70k|  }
 4608|       |
 4609|       |  // FIXME: Sometimes the fill expr is 'nop' if it isn't supplied, instead of 0.
 4610|    427|  getStreamer().EmitFill(NumBytes, FillExpr);
 4611|       |
 4612|    427|  return false;
 4613|  2.13k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveFileEN7llvm_ks5SMLocE:
 3288|  2.22k|{
 3289|       |  // FIXME: I'm not sure what this is.
 3290|  2.22k|  int64_t FileNumber = -1;
 3291|       |  //SMLoc FileNumberLoc = getLexer().getLoc();
 3292|  2.22k|  if (getLexer().is(AsmToken::Integer)) {
  ------------------
  |  Branch (3292:7): [True: 453, False: 1.77k]
  ------------------
 3293|    453|    bool valid;
 3294|    453|    FileNumber = getTok().getIntVal(valid);
 3295|    453|    if (!valid) {
  ------------------
  |  Branch (3295:9): [True: 0, False: 453]
  ------------------
 3296|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3297|      0|        return true;
 3298|      0|    }
 3299|    453|    Lex();
 3300|       |
 3301|    453|    if (FileNumber < 1) {
  ------------------
  |  Branch (3301:9): [True: 81, False: 372]
  ------------------
 3302|       |      //return TokError("file number less than one");
 3303|     81|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3304|     81|      return true;
 3305|     81|    }
 3306|    453|  }
 3307|       |
 3308|  2.14k|  if (getLexer().isNot(AsmToken::String)) {
  ------------------
  |  Branch (3308:7): [True: 343, False: 1.80k]
  ------------------
 3309|       |    //return TokError("unexpected token in '.file' directive");
 3310|    343|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3311|    343|    return true;
 3312|    343|  }
 3313|       |
 3314|       |  // Usually the directory and filename together, otherwise just the directory.
 3315|       |  // Allow the strings to have escaped octal character sequence.
 3316|  1.80k|  std::string Path = getTok().getString();
 3317|  1.80k|  if (parseEscapedString(Path))
  ------------------
  |  Branch (3317:7): [True: 114, False: 1.69k]
  ------------------
 3318|    114|    return true;
 3319|  1.69k|  Lex();
 3320|       |
 3321|  1.69k|  StringRef Directory;
 3322|  1.69k|  StringRef Filename;
 3323|  1.69k|  std::string FilenameData;
 3324|  1.69k|  if (getLexer().is(AsmToken::String)) {
  ------------------
  |  Branch (3324:7): [True: 51, False: 1.63k]
  ------------------
 3325|     51|    if (FileNumber == -1)
  ------------------
  |  Branch (3325:9): [True: 3, False: 48]
  ------------------
 3326|       |      //return TokError("explicit path specified, but no file number");
 3327|      3|      return true;
 3328|     48|    if (parseEscapedString(FilenameData))
  ------------------
  |  Branch (3328:9): [True: 6, False: 42]
  ------------------
 3329|      6|      return true;
 3330|     42|    Filename = FilenameData;
 3331|     42|    Directory = Path;
 3332|     42|    Lex();
 3333|  1.63k|  } else {
 3334|  1.63k|    Filename = Path;
 3335|  1.63k|  }
 3336|       |
 3337|  1.68k|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (3337:7): [True: 60, False: 1.62k]
  ------------------
 3338|       |    //return TokError("unexpected token in '.file' directive");
 3339|     60|    return true;
 3340|       |
 3341|  1.62k|  if (FileNumber == -1)
  ------------------
  |  Branch (3341:7): [True: 1.57k, False: 49]
  ------------------
 3342|  1.57k|    getStreamer().EmitFileDirective(Filename);
 3343|     49|  else {
 3344|     49|    if (getContext().getGenDwarfForAssembly())
  ------------------
  |  Branch (3344:9): [True: 0, False: 49]
  ------------------
 3345|       |      //Error(DirectiveLoc,
 3346|       |      //      "input can't have .file dwarf directives when -g is "
 3347|       |      //      "used to generate dwarf debug info for assembly code");
 3348|      0|      return true;
 3349|       |
 3350|     49|    if (getStreamer().EmitDwarfFileDirective(FileNumber, Directory, Filename) ==
  ------------------
  |  Branch (3350:9): [True: 49, False: 0]
  ------------------
 3351|     49|        0)
 3352|       |      //Error(FileNumberLoc, "file number already allocated");
 3353|     49|      return true;
 3354|     49|  }
 3355|       |
 3356|  1.57k|  return false;
 3357|  1.62k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseDirectiveLineEv:
 3362|  3.85k|{
 3363|  3.85k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3363:7): [True: 1.30k, False: 2.55k]
  ------------------
 3364|  1.30k|    if (getLexer().isNot(AsmToken::Integer)) {
  ------------------
  |  Branch (3364:9): [True: 1.13k, False: 173]
  ------------------
 3365|       |      //return TokError("unexpected token in '.line' directive");
 3366|  1.13k|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3367|  1.13k|      return true;
 3368|  1.13k|    }
 3369|       |
 3370|    173|    bool valid;
 3371|    173|    int64_t LineNumber = getTok().getIntVal(valid);
 3372|    173|    if (!valid) {
  ------------------
  |  Branch (3372:9): [True: 0, False: 173]
  ------------------
 3373|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3374|      0|        return true;
 3375|      0|    }
 3376|    173|    (void)LineNumber;
 3377|    173|    Lex();
 3378|       |
 3379|       |    // FIXME: Do something with the .line.
 3380|    173|  }
 3381|       |
 3382|  2.72k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3382:7): [True: 106, False: 2.61k]
  ------------------
 3383|       |    //return TokError("unexpected token in '.line' directive");
 3384|    106|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3385|    106|    return true;
 3386|    106|  }
 3387|       |
 3388|  2.61k|  return false;
 3389|  2.72k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser17parseDirectiveLocEv:
 3399|    262|{
 3400|    262|  if (getLexer().isNot(AsmToken::Integer)) {
  ------------------
  |  Branch (3400:7): [True: 198, False: 64]
  ------------------
 3401|       |    //return TokError("unexpected token in '.loc' directive");
 3402|    198|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3403|    198|    return true;
 3404|    198|  }
 3405|     64|  bool valid;
 3406|     64|  int64_t FileNumber = getTok().getIntVal(valid);
 3407|     64|  if (!valid) {
  ------------------
  |  Branch (3407:7): [True: 0, False: 64]
  ------------------
 3408|      0|      return true;
 3409|      0|  }
 3410|     64|  if (FileNumber < 1) {
  ------------------
  |  Branch (3410:7): [True: 4, False: 60]
  ------------------
 3411|       |    //return TokError("file number less than one in '.loc' directive");
 3412|      4|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3413|      4|    return true;
 3414|      4|  }
 3415|     60|  if (!getContext().isValidDwarfFileNumber(FileNumber)) {
  ------------------
  |  Branch (3415:7): [True: 60, False: 0]
  ------------------
 3416|       |    //return TokError("unassigned file number in '.loc' directive");
 3417|     60|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3418|     60|    return true;
 3419|     60|  }
 3420|      0|  Lex();
 3421|       |
 3422|      0|  int64_t LineNumber = 0;
 3423|      0|  if (getLexer().is(AsmToken::Integer)) {
  ------------------
  |  Branch (3423:7): [True: 0, False: 0]
  ------------------
 3424|      0|    bool valid;
 3425|      0|    LineNumber = getTok().getIntVal(valid);
 3426|      0|    if (!valid) {
  ------------------
  |  Branch (3426:9): [True: 0, False: 0]
  ------------------
 3427|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3428|      0|        return true;
 3429|      0|    }
 3430|      0|    if (LineNumber < 0) {
  ------------------
  |  Branch (3430:9): [True: 0, False: 0]
  ------------------
 3431|       |      //return TokError("line number less than zero in '.loc' directive");
 3432|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3433|      0|      return true;
 3434|      0|    }
 3435|      0|    Lex();
 3436|      0|  }
 3437|       |
 3438|      0|  int64_t ColumnPos = 0;
 3439|      0|  if (getLexer().is(AsmToken::Integer)) {
  ------------------
  |  Branch (3439:7): [True: 0, False: 0]
  ------------------
 3440|      0|    bool valid;
 3441|      0|    ColumnPos = getTok().getIntVal(valid);
 3442|      0|    if (!valid) {
  ------------------
  |  Branch (3442:9): [True: 0, False: 0]
  ------------------
 3443|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3444|      0|        return true;
 3445|      0|    }
 3446|      0|    if (ColumnPos < 0) {
  ------------------
  |  Branch (3446:9): [True: 0, False: 0]
  ------------------
 3447|       |      //return TokError("column position less than zero in '.loc' directive");
 3448|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3449|      0|      return true;
 3450|      0|    }
 3451|      0|    Lex();
 3452|      0|  }
 3453|       |
 3454|      0|  unsigned Flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
  ------------------
  |  |   66|      0|#define DWARF2_LINE_DEFAULT_IS_STMT 1
  |  |  ------------------
  |  |  |  Branch (66:37): [True: 0, Folded]
  |  |  ------------------
  ------------------
                unsigned Flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
  ------------------
  |  |   68|      0|#define DWARF2_FLAG_IS_STMT (1 << 0)
  ------------------
 3455|      0|  unsigned Isa = 0;
 3456|      0|  int64_t Discriminator = 0;
 3457|      0|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (3457:7): [True: 0, False: 0]
  ------------------
 3458|      0|    for (;;) {
 3459|      0|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (3459:11): [True: 0, False: 0]
  ------------------
 3460|      0|        break;
 3461|       |
 3462|      0|      StringRef Name;
 3463|      0|      SMLoc Loc = getTok().getLoc();
 3464|      0|      if (parseIdentifier(Name)) {
  ------------------
  |  Branch (3464:11): [True: 0, False: 0]
  ------------------
 3465|       |        //return TokError("unexpected token in '.loc' directive");
 3466|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3467|      0|        return true;
 3468|      0|      }
 3469|       |
 3470|      0|      if (Name == "basic_block")
  ------------------
  |  Branch (3470:11): [True: 0, False: 0]
  ------------------
 3471|      0|        Flags |= DWARF2_FLAG_BASIC_BLOCK;
  ------------------
  |  |   69|      0|#define DWARF2_FLAG_BASIC_BLOCK (1 << 1)
  ------------------
 3472|      0|      else if (Name == "prologue_end")
  ------------------
  |  Branch (3472:16): [True: 0, False: 0]
  ------------------
 3473|      0|        Flags |= DWARF2_FLAG_PROLOGUE_END;
  ------------------
  |  |   70|      0|#define DWARF2_FLAG_PROLOGUE_END (1 << 2)
  ------------------
 3474|      0|      else if (Name == "epilogue_begin")
  ------------------
  |  Branch (3474:16): [True: 0, False: 0]
  ------------------
 3475|      0|        Flags |= DWARF2_FLAG_EPILOGUE_BEGIN;
  ------------------
  |  |   71|      0|#define DWARF2_FLAG_EPILOGUE_BEGIN (1 << 3)
  ------------------
 3476|      0|      else if (Name == "is_stmt") {
  ------------------
  |  Branch (3476:16): [True: 0, False: 0]
  ------------------
 3477|      0|        Loc = getTok().getLoc();
 3478|      0|        const MCExpr *Value;
 3479|      0|        if (parseExpression(Value)) {
  ------------------
  |  Branch (3479:13): [True: 0, False: 0]
  ------------------
 3480|      0|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3481|      0|          return true;
 3482|      0|        }
 3483|       |        // The expression must be the constant 0 or 1.
 3484|      0|        if (const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(Value)) {
  ------------------
  |  Branch (3484:35): [True: 0, False: 0]
  ------------------
 3485|      0|          int Value = MCE->getValue();
 3486|      0|          if (Value == 0)
  ------------------
  |  Branch (3486:15): [True: 0, False: 0]
  ------------------
 3487|      0|            Flags &= ~DWARF2_FLAG_IS_STMT;
  ------------------
  |  |   68|      0|#define DWARF2_FLAG_IS_STMT (1 << 0)
  ------------------
 3488|      0|          else if (Value == 1)
  ------------------
  |  Branch (3488:20): [True: 0, False: 0]
  ------------------
 3489|      0|            Flags |= DWARF2_FLAG_IS_STMT;
  ------------------
  |  |   68|      0|#define DWARF2_FLAG_IS_STMT (1 << 0)
  ------------------
 3490|      0|          else {
 3491|       |            //return Error(Loc, "is_stmt value not 0 or 1");
 3492|      0|            KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3493|      0|            return true;
 3494|      0|          }
 3495|      0|        } else {
 3496|       |          //return Error(Loc, "is_stmt value not the constant value of 0 or 1");
 3497|      0|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3498|      0|          return true;
 3499|      0|        }
 3500|      0|      } else if (Name == "isa") {
  ------------------
  |  Branch (3500:18): [True: 0, False: 0]
  ------------------
 3501|      0|        Loc = getTok().getLoc();
 3502|      0|        const MCExpr *Value;
 3503|      0|        if (parseExpression(Value)) {
  ------------------
  |  Branch (3503:13): [True: 0, False: 0]
  ------------------
 3504|      0|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3505|      0|          return true;
 3506|      0|        }
 3507|       |        // The expression must be a constant greater or equal to 0.
 3508|      0|        if (const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(Value)) {
  ------------------
  |  Branch (3508:35): [True: 0, False: 0]
  ------------------
 3509|      0|          int Value = MCE->getValue();
 3510|      0|          if (Value < 0) {
  ------------------
  |  Branch (3510:15): [True: 0, False: 0]
  ------------------
 3511|       |            //return Error(Loc, "isa number less than zero");
 3512|      0|            KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3513|      0|            return true;
 3514|      0|          }
 3515|      0|          Isa = Value;
 3516|      0|        } else {
 3517|       |          //return Error(Loc, "isa number not a constant value");
 3518|      0|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3519|      0|          return true;
 3520|      0|        }
 3521|      0|      } else if (Name == "discriminator") {
  ------------------
  |  Branch (3521:18): [True: 0, False: 0]
  ------------------
 3522|      0|        if (parseAbsoluteExpression(Discriminator)) {
  ------------------
  |  Branch (3522:13): [True: 0, False: 0]
  ------------------
 3523|      0|          KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3524|      0|          return true;
 3525|      0|        }
 3526|      0|      } else {
 3527|       |        //return Error(Loc, "unknown sub-directive in '.loc' directive");
 3528|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 3529|      0|        return true;
 3530|      0|      }
 3531|       |
 3532|      0|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (3532:11): [True: 0, False: 0]
  ------------------
 3533|      0|        break;
 3534|      0|    }
 3535|      0|  }
 3536|       |
 3537|      0|  getStreamer().EmitDwarfLocDirective(FileNumber, LineNumber, ColumnPos, Flags,
 3538|      0|                                      Isa, Discriminator, StringRef());
 3539|       |
 3540|      0|  return false;
 3541|      0|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveMacroEN7llvm_ks5SMLocE:
 4166|  3.13k|{
 4167|  3.13k|  StringRef Name;
 4168|  3.13k|  if (parseIdentifier(Name)) {
  ------------------
  |  Branch (4168:7): [True: 85, False: 3.04k]
  ------------------
 4169|       |    //return TokError("expected identifier in '.macro' directive");
 4170|     85|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4171|     85|    return true;
 4172|     85|  }
 4173|       |
 4174|  3.04k|  if (getLexer().is(AsmToken::Comma))
  ------------------
  |  Branch (4174:7): [True: 447, False: 2.59k]
  ------------------
 4175|    447|    Lex();
 4176|       |
 4177|  3.04k|  MCAsmMacroParameters Parameters;
 4178|  8.43k|  while (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4178:10): [True: 5.59k, False: 2.84k]
  ------------------
 4179|       |
 4180|  5.59k|    if (!Parameters.empty() && Parameters.back().Vararg) {
  ------------------
  |  Branch (4180:9): [True: 4.50k, False: 1.09k]
  |  Branch (4180:32): [True: 0, False: 4.50k]
  ------------------
 4181|       |      //return Error(Lexer.getLoc(),
 4182|       |      //             "Vararg parameter '" + Parameters.back().Name +
 4183|       |      //             "' should be last one in the list of parameters.");
 4184|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4185|      0|      return true;
 4186|      0|    }
 4187|       |
 4188|  5.59k|    MCAsmMacroParameter Parameter;
 4189|  5.59k|    if (parseIdentifier(Parameter.Name)) {
  ------------------
  |  Branch (4189:9): [True: 76, False: 5.51k]
  ------------------
 4190|       |      //return TokError("expected identifier in '.macro' directive");
 4191|     76|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4192|     76|      return true;
 4193|     76|    }
 4194|       |
 4195|  5.51k|    if (Lexer.is(AsmToken::Colon)) {
  ------------------
  |  Branch (4195:9): [True: 115, False: 5.40k]
  ------------------
 4196|    115|      Lex();  // consume ':'
 4197|       |
 4198|    115|      SMLoc QualLoc;
 4199|    115|      StringRef Qualifier;
 4200|       |
 4201|    115|      QualLoc = Lexer.getLoc();
 4202|    115|      if (parseIdentifier(Qualifier)) {
  ------------------
  |  Branch (4202:11): [True: 71, False: 44]
  ------------------
 4203|       |        //return Error(QualLoc, "missing parameter qualifier for "
 4204|       |        //             "'" + Parameter.Name + "' in macro '" + Name + "'");
 4205|     71|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4206|     71|        return true;
 4207|     71|      }
 4208|       |
 4209|     44|      if (Qualifier == "req")
  ------------------
  |  Branch (4209:11): [True: 6, False: 38]
  ------------------
 4210|      6|        Parameter.Required = true;
 4211|     38|      else if (Qualifier == "vararg")
  ------------------
  |  Branch (4211:16): [True: 0, False: 38]
  ------------------
 4212|      0|        Parameter.Vararg = true;
 4213|     38|      else {
 4214|       |        //return Error(QualLoc, Qualifier + " is not a valid parameter qualifier "
 4215|       |        //             "for '" + Parameter.Name + "' in macro '" + Name + "'");
 4216|     38|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4217|     38|        return true;
 4218|     38|      }
 4219|     44|    }
 4220|       |
 4221|  5.40k|    if (getLexer().is(AsmToken::Equal)) {
  ------------------
  |  Branch (4221:9): [True: 397, False: 5.00k]
  ------------------
 4222|    397|      Lex();
 4223|       |
 4224|    397|      SMLoc ParamLoc;
 4225|       |
 4226|    397|      ParamLoc = Lexer.getLoc();
 4227|    397|      if (parseMacroArgument(Parameter.Value, /*Vararg=*/false )) {
  ------------------
  |  Branch (4227:11): [True: 18, False: 379]
  ------------------
 4228|     18|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4229|     18|        return true;
 4230|     18|      }
 4231|       |
 4232|    379|      if (Parameter.Required)
  ------------------
  |  Branch (4232:11): [True: 0, False: 379]
  ------------------
 4233|      0|        Warning(ParamLoc, "pointless default value for required parameter "
 4234|      0|                "'" + Parameter.Name + "' in macro '" + Name + "'");
 4235|    379|    }
 4236|       |
 4237|  5.38k|    Parameters.push_back(std::move(Parameter));
 4238|       |
 4239|  5.38k|    if (getLexer().is(AsmToken::Comma))
  ------------------
  |  Branch (4239:9): [True: 1.57k, False: 3.81k]
  ------------------
 4240|  1.57k|      Lex();
 4241|  5.38k|  }
 4242|       |
 4243|       |  // Eat the end of statement.
 4244|  2.84k|  Lex();
 4245|       |
 4246|  2.84k|  AsmToken EndToken, StartToken = getTok();
 4247|  2.84k|  unsigned MacroDepth = 0;
 4248|       |
 4249|       |  // Lex the macro definition.
 4250|  11.7k|  for (;;) {
 4251|       |    // Check whether we have reached the end of the file.
 4252|  11.7k|    if (getLexer().is(AsmToken::Eof)) {
  ------------------
  |  Branch (4252:9): [True: 94, False: 11.6k]
  ------------------
 4253|       |      //return Error(DirectiveLoc, "no matching '.endmacro' in definition");
 4254|     94|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4255|     94|      return true;
 4256|     94|    }
 4257|       |
 4258|       |    // Otherwise, check whether we have reach the .endmacro.
 4259|  11.6k|    if (getLexer().is(AsmToken::Identifier)) {
  ------------------
  |  Branch (4259:9): [True: 7.40k, False: 4.25k]
  ------------------
 4260|  7.40k|      if (getTok().getIdentifier() == ".endm" ||
  ------------------
  |  Branch (4260:11): [True: 2.77k, False: 4.63k]
  |  Branch (4260:11): [True: 3.37k, False: 4.03k]
  ------------------
 4261|  4.63k|          getTok().getIdentifier() == ".endmacro") {
  ------------------
  |  Branch (4261:11): [True: 600, False: 4.03k]
  ------------------
 4262|  3.37k|        if (MacroDepth == 0) { // Outermost macro.
  ------------------
  |  Branch (4262:13): [True: 2.74k, False: 622]
  ------------------
 4263|  2.74k|          EndToken = getTok();
 4264|  2.74k|          Lex();
 4265|  2.74k|          if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4265:15): [True: 468, False: 2.28k]
  ------------------
 4266|       |            //return TokError("unexpected token in '" + EndToken.getIdentifier() +
 4267|       |            //                "' directive");
 4268|    468|            KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4269|    468|            return true;
 4270|    468|          }
 4271|  2.28k|          break;
 4272|  2.74k|        } else {
 4273|       |          // Otherwise we just found the end of an inner macro.
 4274|    622|          --MacroDepth;
 4275|    622|        }
 4276|  4.03k|      } else if (getTok().getIdentifier() == ".macro") {
  ------------------
  |  Branch (4276:18): [True: 630, False: 3.40k]
  ------------------
 4277|       |        // We allow nested macros. Those aren't instantiated until the outermost
 4278|       |        // macro is expanded so just ignore them for now.
 4279|    630|        ++MacroDepth;
 4280|    630|      }
 4281|  7.40k|    }
 4282|       |
 4283|       |    // Otherwise, scan til the end of the statement.
 4284|  8.91k|    eatToEndOfStatement();
 4285|  8.91k|  }
 4286|       |
 4287|  2.28k|  if (lookupMacro(Name)) {
  ------------------
  |  Branch (4287:7): [True: 1.69k, False: 588]
  ------------------
 4288|       |    //return Error(DirectiveLoc, "macro '" + Name + "' is already defined");
 4289|  1.69k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4290|  1.69k|    return true;
 4291|  1.69k|  }
 4292|       |
 4293|    588|  const char *BodyStart = StartToken.getLoc().getPointer();
 4294|    588|  const char *BodyEnd = EndToken.getLoc().getPointer();
 4295|    588|  StringRef Body = StringRef(BodyStart, BodyEnd - BodyStart);
 4296|    588|  checkForBadMacro(DirectiveLoc, Name, Body, Parameters);
 4297|    588|  defineMacro(Name, MCAsmMacro(Name, Body, std::move(Parameters)));
 4298|    588|  return false;
 4299|  2.28k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser16checkForBadMacroEN7llvm_ks5SMLocENS1_9StringRefES3_NS1_8ArrayRefINS_19MCAsmMacroParameterEEE:
 4317|    588|                                 ArrayRef<MCAsmMacroParameter> Parameters) {
 4318|       |  // If this macro is not defined with named parameters the warning we are
 4319|       |  // checking for here doesn't apply.
 4320|    588|  unsigned NParameters = Parameters.size();
 4321|    588|  if (NParameters == 0)
  ------------------
  |  Branch (4321:7): [True: 240, False: 348]
  ------------------
 4322|    240|    return;
 4323|       |
 4324|    348|  bool NamedParametersFound = false;
 4325|    348|  bool PositionalParametersFound = false;
 4326|       |
 4327|       |  // Look at the body of the macro for use of both the named parameters and what
 4328|       |  // are likely to be positional parameters.  This is what expandMacro() is
 4329|       |  // doing when it finds the parameters in the body.
 4330|  8.00k|  while (!Body.empty()) {
  ------------------
  |  Branch (4330:10): [True: 7.87k, False: 132]
  ------------------
 4331|       |    // Scan for the next possible parameter.
 4332|  7.87k|    std::size_t End = Body.size(), Pos = 0;
 4333|  31.8k|    for (; Pos != End; ++Pos) {
  ------------------
  |  Branch (4333:12): [True: 31.6k, False: 216]
  ------------------
 4334|       |      // Check for a substitution or escape.
 4335|       |      // This macro is defined with parameters, look for \foo, \bar, etc.
 4336|  31.6k|      if (Body[Pos] == '\\' && Pos + 1 != End)
  ------------------
  |  Branch (4336:11): [True: 5.76k, False: 25.8k]
  |  Branch (4336:32): [True: 5.76k, False: 0]
  ------------------
 4337|  5.76k|        break;
 4338|       |
 4339|       |      // This macro should have parameters, but look for $0, $1, ..., $n too.
 4340|  25.8k|      if (Body[Pos] != '$' || Pos + 1 == End)
  ------------------
  |  Branch (4340:11): [True: 22.6k, False: 3.15k]
  |  Branch (4340:31): [True: 0, False: 3.15k]
  ------------------
 4341|  22.6k|        continue;
 4342|  3.15k|      char Next = Body[Pos + 1];
 4343|  3.15k|      if (Next == '$' || Next == 'n' ||
  ------------------
  |  Branch (4343:11): [True: 986, False: 2.16k]
  |  Branch (4343:26): [True: 692, False: 1.47k]
  ------------------
 4344|  1.47k|          isdigit(static_cast<unsigned char>(Next)))
  ------------------
  |  Branch (4344:11): [True: 223, False: 1.25k]
  ------------------
 4345|  1.90k|        break;
 4346|  3.15k|    }
 4347|       |
 4348|       |    // Check if we reached the end.
 4349|  7.87k|    if (Pos == End)
  ------------------
  |  Branch (4349:9): [True: 216, False: 7.66k]
  ------------------
 4350|    216|      break;
 4351|       |
 4352|  7.66k|    if (Body[Pos] == '$') {
  ------------------
  |  Branch (4352:9): [True: 1.90k, False: 5.76k]
  ------------------
 4353|  1.90k|      switch (Body[Pos + 1]) {
 4354|       |      // $$ => $
 4355|    986|      case '$':
  ------------------
  |  Branch (4355:7): [True: 986, False: 915]
  ------------------
 4356|    986|        break;
 4357|       |
 4358|       |      // $n => number of arguments
 4359|    692|      case 'n':
  ------------------
  |  Branch (4359:7): [True: 692, False: 1.20k]
  ------------------
 4360|    692|        PositionalParametersFound = true;
 4361|    692|        break;
 4362|       |
 4363|       |      // $[0-9] => argument
 4364|    223|      default: {
  ------------------
  |  Branch (4364:7): [True: 223, False: 1.67k]
  ------------------
 4365|    223|        PositionalParametersFound = true;
 4366|    223|        break;
 4367|      0|      }
 4368|  1.90k|      }
 4369|  1.90k|      Pos += 2;
 4370|  5.76k|    } else {
 4371|  5.76k|      unsigned I = Pos + 1;
 4372|  10.7k|      while (isIdentifierChar(Body[I]) && I + 1 != End)
  ------------------
  |  Branch (4372:14): [True: 4.98k, False: 5.76k]
  |  Branch (4372:43): [True: 4.98k, False: 0]
  ------------------
 4373|  4.98k|        ++I;
 4374|       |
 4375|  5.76k|      const char *Begin = Body.data() + Pos + 1;
 4376|  5.76k|      StringRef Argument(Begin, I - (Pos + 1));
 4377|  5.76k|      unsigned Index = 0;
 4378|  12.7k|      for (; Index < NParameters; ++Index)
  ------------------
  |  Branch (4378:14): [True: 7.36k, False: 5.39k]
  ------------------
 4379|  7.36k|        if (Parameters[Index].Name == Argument)
  ------------------
  |  Branch (4379:13): [True: 370, False: 6.99k]
  ------------------
 4380|    370|          break;
 4381|       |
 4382|  5.76k|      if (Index == NParameters) {
  ------------------
  |  Branch (4382:11): [True: 5.39k, False: 370]
  ------------------
 4383|  5.39k|        if (Body[Pos + 1] == '(' && Body[Pos + 2] == ')')
  ------------------
  |  Branch (4383:13): [True: 361, False: 5.02k]
  |  Branch (4383:37): [True: 78, False: 283]
  ------------------
 4384|     78|          Pos += 3;
 4385|  5.31k|        else {
 4386|  5.31k|          Pos = I;
 4387|  5.31k|        }
 4388|  5.39k|      } else {
 4389|    370|        NamedParametersFound = true;
 4390|    370|        Pos += 1 + Argument.size();
 4391|    370|      }
 4392|  5.76k|    }
 4393|       |    // Update the scan point.
 4394|  7.66k|    Body = Body.substr(Pos);
 4395|  7.66k|  }
 4396|       |
 4397|    348|  if (!NamedParametersFound && PositionalParametersFound)
  ------------------
  |  Branch (4397:7): [True: 300, False: 48]
  |  Branch (4397:32): [True: 48, False: 252]
  ------------------
 4398|     48|    Warning(DirectiveLoc, "macro defined with named parameters which are not "
 4399|     48|                          "used in macro body, possible positional parameter "
 4400|     48|                          "found in body which will have no effect");
 4401|    348|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser11defineMacroEN7llvm_ks9StringRefENS_10MCAsmMacroE:
 2451|    588|void AsmParser::defineMacro(StringRef Name, MCAsmMacro Macro) {
 2452|    588|  MacroMap.insert(std::make_pair(Name, std::move(Macro)));
 2453|    588|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser26isInsideMacroInstantiationEv:
  297|  48.4k|  bool isInsideMacroInstantiation() {return !ActiveMacros.empty();}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser22parseDirectiveEndMacroEN7llvm_ks9StringRefE:
 4434|  48.6k|{
 4435|  48.6k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4435:7): [True: 200, False: 48.4k]
  ------------------
 4436|       |    //return TokError("unexpected token in '" + Directive + "' directive");
 4437|    200|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4438|    200|    return true;
 4439|    200|  }
 4440|       |
 4441|       |  // If we are inside a macro instantiation, terminate the current
 4442|       |  // instantiation.
 4443|  48.4k|  if (isInsideMacroInstantiation()) {
  ------------------
  |  Branch (4443:7): [True: 48.1k, False: 300]
  ------------------
 4444|  48.1k|    handleMacroExit();
 4445|  48.1k|    return false;
 4446|  48.1k|  }
 4447|       |
 4448|       |  // Otherwise, this .endmacro is a stray entry in the file; well formed
 4449|       |  // .endmacro directives are handled during the macro definition parsing.
 4450|       |  //return TokError("unexpected '" + Directive + "' in file, "
 4451|       |  //                                             "no current macro definition");
 4452|    300|  KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4453|    300|  return true;
 4454|  48.4k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser24parseDirectivePurgeMacroEN7llvm_ks5SMLocE:
 4459|     31|{
 4460|     31|  StringRef Name;
 4461|     31|  if (parseIdentifier(Name)) {
  ------------------
  |  Branch (4461:7): [True: 11, False: 20]
  ------------------
 4462|       |    //return TokError("expected identifier in '.purgem' directive");
 4463|     11|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4464|     11|    return true;
 4465|     11|  }
 4466|       |
 4467|     20|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4467:7): [True: 10, False: 10]
  ------------------
 4468|       |    //return TokError("unexpected token in '.purgem' directive");
 4469|     10|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4470|     10|    return true;
 4471|     10|  }
 4472|       |
 4473|     10|  if (!lookupMacro(Name)) {
  ------------------
  |  Branch (4473:7): [True: 10, False: 0]
  ------------------
 4474|       |    //return Error(DirectiveLoc, "macro '" + Name + "' is not defined");
 4475|     10|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 4476|     10|    return true;
 4477|     10|  }
 4478|       |
 4479|      0|  undefineMacro(Name);
 4480|      0|  return false;
 4481|     10|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser17parseDirectiveEndEN7llvm_ks5SMLocE:
 5187|  1.36k|{
 5188|  1.36k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5188:7): [True: 1.35k, False: 10]
  ------------------
 5189|       |    //return TokError("unexpected token in '.end' directive");
 5190|  1.35k|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5191|  1.35k|    return true;
 5192|  1.35k|  }
 5193|       |
 5194|     10|  Lex();
 5195|       |
 5196|    253|  while (Lexer.isNot(AsmToken::Eof))
  ------------------
  |  Branch (5196:10): [True: 243, False: 10]
  ------------------
 5197|    243|    Lex();
 5198|       |
 5199|     10|  return false;
 5200|  1.36k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveErrorEN7llvm_ks5SMLocEb:
 5206|    540|{
 5207|    540|  if (!TheCondStack.empty()) {
  ------------------
  |  Branch (5207:7): [True: 126, False: 414]
  ------------------
 5208|    126|    if (TheCondStack.back().Ignore) {
  ------------------
  |  Branch (5208:9): [True: 6, False: 120]
  ------------------
 5209|      6|      eatToEndOfStatement();
 5210|      6|      return false;
 5211|      6|    }
 5212|    126|  }
 5213|       |
 5214|    534|  if (!WithMessage) {
  ------------------
  |  Branch (5214:7): [True: 290, False: 244]
  ------------------
 5215|       |    //return Error(L, ".err encountered");
 5216|    290|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5217|    290|    return true;
 5218|    290|  }
 5219|       |
 5220|    244|  StringRef Message = ".error directive invoked in source file";
 5221|    244|  if (Lexer.isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5221:7): [True: 231, False: 13]
  ------------------
 5222|    231|    if (Lexer.isNot(AsmToken::String)) {
  ------------------
  |  Branch (5222:9): [True: 106, False: 125]
  ------------------
 5223|       |      //TokError(".error argument must be a string");
 5224|    106|      eatToEndOfStatement();
 5225|    106|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5226|    106|      return true;
 5227|    106|    }
 5228|       |
 5229|    125|    bool valid;
 5230|    125|    Message = getTok().getStringContents(valid);
 5231|    125|    if (!valid) {
  ------------------
  |  Branch (5231:9): [True: 0, False: 125]
  ------------------
 5232|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5233|      0|        return true;
 5234|      0|    }
 5235|    125|    Lex();
 5236|    125|  }
 5237|       |
 5238|       |  //Error(L, Message);
 5239|    138|  KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5240|    138|  return true;
 5241|    244|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser21parseDirectiveWarningEN7llvm_ks5SMLocE:
 5246|  1.40k|{
 5247|  1.40k|  if (!TheCondStack.empty()) {
  ------------------
  |  Branch (5247:7): [True: 117, False: 1.28k]
  ------------------
 5248|    117|    if (TheCondStack.back().Ignore) {
  ------------------
  |  Branch (5248:9): [True: 0, False: 117]
  ------------------
 5249|      0|      eatToEndOfStatement();
 5250|      0|      return false;
 5251|      0|    }
 5252|    117|  }
 5253|       |
 5254|  1.40k|  StringRef Message = ".warning directive invoked in source file";
 5255|  1.40k|  if (Lexer.isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (5255:7): [True: 1.11k, False: 284]
  ------------------
 5256|  1.11k|    if (Lexer.isNot(AsmToken::String)) {
  ------------------
  |  Branch (5256:9): [True: 1.08k, False: 27]
  ------------------
 5257|       |      //TokError(".warning argument must be a string");
 5258|  1.08k|      eatToEndOfStatement();
 5259|  1.08k|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5260|  1.08k|      return true;
 5261|  1.08k|    }
 5262|       |
 5263|     27|    bool valid;
 5264|     27|    Message = getTok().getStringContents(valid);
 5265|     27|    if (!valid) {
  ------------------
  |  Branch (5265:9): [True: 0, False: 27]
  ------------------
 5266|      0|        KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 5267|      0|        return true;
 5268|      0|    }
 5269|     27|    Lex();
 5270|     27|  }
 5271|       |
 5272|    311|  Warning(L, Message);
 5273|    311|  return false;
 5274|  1.40k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parseDirectiveRelocEN7llvm_ks5SMLocE:
 2734|  5.01k|{
 2735|  5.01k|  const MCExpr *Offset;
 2736|  5.01k|  const MCExpr *Expr = nullptr;
 2737|       |
 2738|       |  //SMLoc OffsetLoc = Lexer.getTok().getLoc();
 2739|  5.01k|  if (parseExpression(Offset)) {
  ------------------
  |  Branch (2739:7): [True: 125, False: 4.89k]
  ------------------
 2740|    125|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2741|    125|    return true;
 2742|    125|  }
 2743|       |
 2744|       |  // We can only deal with constant expressions at the moment.
 2745|  4.89k|  int64_t OffsetValue;
 2746|  4.89k|  if (!Offset->evaluateAsAbsolute(OffsetValue)) {
  ------------------
  |  Branch (2746:7): [True: 397, False: 4.49k]
  ------------------
 2747|       |    //return Error(OffsetLoc, "expression is not a constant value");
 2748|    397|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2749|    397|    return true;
 2750|    397|  }
 2751|       |
 2752|  4.49k|  if (OffsetValue < 0) {
  ------------------
  |  Branch (2752:7): [True: 139, False: 4.35k]
  ------------------
 2753|       |    //return Error(OffsetLoc, "expression is negative");
 2754|    139|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2755|    139|    return true;
 2756|    139|  }
 2757|       |
 2758|  4.35k|  if (Lexer.isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (2758:7): [True: 669, False: 3.68k]
  ------------------
 2759|       |    // return TokError("expected comma");
 2760|    669|    KsError = KS_ERR_ASM_DIRECTIVE_COMMA;
 2761|    669|    return true;
 2762|    669|  }
 2763|  3.68k|  Lexer.Lex();
 2764|       |
 2765|  3.68k|  if (Lexer.isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (2765:7): [True: 926, False: 2.75k]
  ------------------
 2766|       |    // return TokError("expected relocation name");
 2767|    926|    KsError = KS_ERR_ASM_DIRECTIVE_RELOC_NAME;
 2768|    926|    return true;
 2769|    926|  }
 2770|       |  //SMLoc NameLoc = Lexer.getTok().getLoc();
 2771|  2.75k|  StringRef Name = Lexer.getTok().getIdentifier();
 2772|  2.75k|  Lexer.Lex();
 2773|       |
 2774|  2.75k|  if (Lexer.is(AsmToken::Comma)) {
  ------------------
  |  Branch (2774:7): [True: 2.22k, False: 538]
  ------------------
 2775|  2.22k|    Lexer.Lex();
 2776|       |    //SMLoc ExprLoc = Lexer.getLoc();
 2777|  2.22k|    if (parseExpression(Expr)) {
  ------------------
  |  Branch (2777:9): [True: 153, False: 2.06k]
  ------------------
 2778|    153|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2779|    153|      return true;
 2780|    153|    }
 2781|       |
 2782|  2.06k|    MCValue Value;
 2783|  2.06k|    if (!Expr->evaluateAsRelocatable(Value, nullptr, nullptr)) {
  ------------------
  |  Branch (2783:9): [True: 1.67k, False: 394]
  ------------------
 2784|       |      //return Error(ExprLoc, "expression must be relocatable");
 2785|  1.67k|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2786|  1.67k|      return true;
 2787|  1.67k|    }
 2788|  2.06k|  }
 2789|       |
 2790|    932|  if (Lexer.isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (2790:7): [True: 370, False: 562]
  ------------------
 2791|       |    // return TokError("unexpected token in .reloc directive");
 2792|    370|    KsError = KS_ERR_ASM_DIRECTIVE_RELOC_TOKEN;
 2793|    370|    return true;
 2794|    370|  }
 2795|       |
 2796|    562|  if (getStreamer().EmitRelocDirective(*Offset, Name, Expr, DirectiveLoc)) {
  ------------------
  |  Branch (2796:7): [True: 562, False: 0]
  ------------------
 2797|       |    //return Error(NameLoc, "unknown relocation name");
 2798|    562|    KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2799|    562|    return true;
 2800|    562|  }
 2801|       |
 2802|      0|  return false;
 2803|    562|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser4NoteEN7llvm_ks5SMLocERKNS1_5TwineENS1_8ArrayRefINS1_7SMRangeEEE:
  600|  3.43k|void AsmParser::Note(SMLoc L, const Twine &Msg, ArrayRef<SMRange> Ranges) {
  601|  3.43k|  printMessage(L, SourceMgr::DK_Note, Msg, Ranges);
  602|  3.43k|  printMacroInstantiations();
  603|  3.43k|}
AsmParser.cpp:_ZNK12_GLOBAL__N_19AsmParser12printMessageEN7llvm_ks5SMLocENS1_9SourceMgr8DiagKindERKNS1_5TwineENS1_8ArrayRefINS1_7SMRangeEEE:
  316|  71.8k|                    ArrayRef<SMRange> Ranges = None) const {
  317|  71.8k|    SrcMgr.PrintMessage(Loc, Kind, Msg, Ranges);
  318|  71.8k|  }
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser24printMacroInstantiationsEv:
  590|  18.6k|void AsmParser::printMacroInstantiations() {
  591|       |  // Print the active macro instantiation stack.
  592|  18.6k|  for (std::vector<MacroInstantiation *>::const_reverse_iterator
  593|  18.6k|           it = ActiveMacros.rbegin(),
  594|  18.6k|           ie = ActiveMacros.rend();
  595|  71.8k|       it != ie; ++it)
  ------------------
  |  Branch (595:8): [True: 53.2k, False: 18.6k]
  ------------------
  596|  53.2k|    printMessage((*it)->InstantiationLoc, SourceMgr::DK_Note,
  597|  53.2k|                 "while in macro instantiation");
  598|  18.6k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser7WarningEN7llvm_ks5SMLocERKNS1_5TwineENS1_8ArrayRefINS1_7SMRangeEEE:
  605|  14.1k|bool AsmParser::Warning(SMLoc L, const Twine &Msg, ArrayRef<SMRange> Ranges) {
  606|  14.1k|  if(getTargetParser().getTargetOptions().MCNoWarn)
  ------------------
  |  Branch (606:6): [True: 0, False: 14.1k]
  ------------------
  607|      0|    return false;
  608|  14.1k|  if (getTargetParser().getTargetOptions().MCFatalWarnings)
  ------------------
  |  Branch (608:7): [True: 0, False: 14.1k]
  ------------------
  609|      0|    return Error(L, Msg, Ranges);
  610|  14.1k|  printMessage(L, SourceMgr::DK_Warning, Msg, Ranges);
  611|  14.1k|  printMacroInstantiations();
  612|  14.1k|  return false;
  613|  14.1k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser5ErrorEN7llvm_ks5SMLocERKNS1_5TwineENS1_8ArrayRefINS1_7SMRangeEEE:
  615|  1.03k|bool AsmParser::Error(SMLoc L, const Twine &Msg, ArrayRef<SMRange> Ranges) {
  616|  1.03k|  HadError = true;
  617|  1.03k|  printMessage(L, SourceMgr::DK_Error, Msg, Ranges);
  618|  1.03k|  printMacroInstantiations();
  619|  1.03k|  return true;
  620|  1.03k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser3LexEv:
  655|  15.5M|const AsmToken &AsmParser::Lex() {
  656|  15.5M|  const AsmToken *tok = &Lexer.Lex();
  657|       |
  658|  15.5M|  if (tok->is(AsmToken::Eof)) {
  ------------------
  |  Branch (658:7): [True: 18.5k, False: 15.5M]
  ------------------
  659|       |    // If this is the end of an included file, pop the parent file off the
  660|       |    // include stack.
  661|  18.5k|    SMLoc ParentIncludeLoc = SrcMgr.getParentIncludeLoc(CurBuffer);
  662|  18.5k|    if (ParentIncludeLoc != SMLoc()) {
  ------------------
  |  Branch (662:9): [True: 0, False: 18.5k]
  ------------------
  663|      0|      jumpToLoc(ParentIncludeLoc);
  664|      0|      tok = &Lexer.Lex();   // qq
  665|      0|    }
  666|  18.5k|  }
  667|       |
  668|       |  //if (tok->is(AsmToken::Error))
  669|       |  //  Error(Lexer.getErrLoc(), Lexer.getErr());
  670|       |
  671|  15.5M|  return *tok;
  672|  15.5M|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser15parseIdentifierERN7llvm_ks9StringRefE:
 2549|  1.57M|{
 2550|       |  // The assembler has relaxed rules for accepting identifiers, in particular we
 2551|       |  // allow things like '.globl $foo' and '.def @feat.00', which would normally be
 2552|       |  // separate tokens. At this level, we have already lexed so we cannot (currently)
 2553|       |  // handle this as a context dependent token, instead we detect adjacent tokens
 2554|       |  // and return the combined identifier.
 2555|  1.57M|  if (Lexer.is(AsmToken::Dollar) || Lexer.is(AsmToken::At)) {
  ------------------
  |  Branch (2555:7): [True: 87.3k, False: 1.48M]
  |  Branch (2555:37): [True: 0, False: 1.48M]
  ------------------
 2556|  87.3k|    SMLoc PrefixLoc = getLexer().getLoc();
 2557|       |
 2558|       |    // Consume the prefix character, and check for a following identifier.
 2559|  87.3k|    Lex();
 2560|  87.3k|    if (Lexer.isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (2560:9): [True: 86.2k, False: 1.06k]
  ------------------
 2561|  86.2k|      KsError = KS_ERR_ASM_MACRO_INVALID;
 2562|  86.2k|      return true;
 2563|  86.2k|    }
 2564|       |
 2565|       |    // We have a '$' or '@' followed by an identifier, make sure they are adjacent.
 2566|  1.06k|    if (PrefixLoc.getPointer() + 1 != getTok().getLoc().getPointer()) {
  ------------------
  |  Branch (2566:9): [True: 155, False: 912]
  ------------------
 2567|    155|      KsError = KS_ERR_ASM_MACRO_INVALID;
 2568|    155|      return true;
 2569|    155|    }
 2570|       |
 2571|       |    // Construct the joined identifier and consume the token.
 2572|    912|    Res =
 2573|    912|        StringRef(PrefixLoc.getPointer(), getTok().getIdentifier().size() + 1);
 2574|    912|    Lex();
 2575|    912|    return false;
 2576|  1.06k|  }
 2577|       |
 2578|  1.48M|  if (Lexer.isNot(AsmToken::Identifier) && Lexer.isNot(AsmToken::String)) {
  ------------------
  |  Branch (2578:7): [True: 10.1k, False: 1.47M]
  |  Branch (2578:44): [True: 6.29k, False: 3.83k]
  ------------------
 2579|  6.29k|    KsError = KS_ERR_ASM_MACRO_INVALID;
 2580|  6.29k|    return true;
 2581|  6.29k|  }
 2582|       |
 2583|  1.47M|  Res = getTok().getIdentifier();
 2584|       |
 2585|  1.47M|  Lex(); // Consume the identifier token.
 2586|       |
 2587|  1.47M|  return false;
 2588|  1.48M|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser27parseStringToEndOfStatementEv:
  792|  89.5k|StringRef AsmParser::parseStringToEndOfStatement() {
  793|  89.5k|  const char *Start = getTok().getLoc().getPointer();
  794|       |
  795|   892k|  while (Lexer.isNot(AsmToken::EndOfStatement) && Lexer.isNot(AsmToken::Eof))
  ------------------
  |  Branch (795:10): [True: 803k, False: 89.5k]
  |  Branch (795:51): [True: 803k, False: 41]
  ------------------
  796|   803k|    Lex();
  797|       |
  798|  89.5k|  const char *End = getTok().getLoc().getPointer();
  799|  89.5k|  return StringRef(Start, End - Start);
  800|  89.5k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18parseEscapedStringERNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
 2614|  2.54k|{
 2615|  2.54k|  if (!getLexer().is(AsmToken::String)) {
  ------------------
  |  Branch (2615:7): [True: 0, False: 2.54k]
  ------------------
 2616|      0|      KsError = KS_ERR_ASM_ESC_STR;
 2617|      0|      return true;
 2618|      0|  }
 2619|       |
 2620|  2.54k|  Data = "";
 2621|  2.54k|  bool valid;
 2622|  2.54k|  StringRef Str = getTok().getStringContents(valid);
 2623|  2.54k|  if (!valid) {
  ------------------
  |  Branch (2623:7): [True: 0, False: 2.54k]
  ------------------
 2624|      0|      KsError = KS_ERR_ASM_DIRECTIVE_INVALID;
 2625|      0|      return true;
 2626|      0|  }
 2627|       |
 2628|  86.1k|  for (unsigned i = 0, e = Str.size(); i != e; ++i) {
  ------------------
  |  Branch (2628:40): [True: 83.7k, False: 2.39k]
  ------------------
 2629|  83.7k|    if (Str[i] != '\\') {
  ------------------
  |  Branch (2629:9): [True: 76.3k, False: 7.43k]
  ------------------
 2630|  76.3k|      Data += Str[i];
 2631|  76.3k|      continue;
 2632|  76.3k|    }
 2633|       |
 2634|       |    // Recognize escaped characters. Note that this escape semantics currently
 2635|       |    // loosely follows Darwin 'as'. Notably, it doesn't support hex escapes.
 2636|  7.43k|    ++i;
 2637|  7.43k|    if (i == e) {
  ------------------
  |  Branch (2637:9): [True: 0, False: 7.43k]
  ------------------
 2638|       |      // return TokError("unexpected backslash at end of string");
 2639|      0|      KsError = KS_ERR_ASM_ESC_BACKSLASH;
 2640|      0|      return true;
 2641|      0|    }
 2642|       |
 2643|       |    // Recognize octal sequences.
 2644|  7.43k|    if ((unsigned)(Str[i] - '0') <= 7) {
  ------------------
  |  Branch (2644:9): [True: 4.01k, False: 3.42k]
  ------------------
 2645|       |      // Consume up to three octal characters.
 2646|  4.01k|      unsigned Value = Str[i] - '0';
 2647|       |
 2648|  4.01k|      if (i + 1 != e && ((unsigned)(Str[i + 1] - '0')) <= 7) {
  ------------------
  |  Branch (2648:11): [True: 3.69k, False: 318]
  |  Branch (2648:25): [True: 2.45k, False: 1.23k]
  ------------------
 2649|  2.45k|        ++i;
 2650|  2.45k|        Value = Value * 8 + (Str[i] - '0');
 2651|       |
 2652|  2.45k|        if (i + 1 != e && ((unsigned)(Str[i + 1] - '0')) <= 7) {
  ------------------
  |  Branch (2652:13): [True: 2.27k, False: 180]
  |  Branch (2652:27): [True: 806, False: 1.47k]
  ------------------
 2653|    806|          ++i;
 2654|    806|          Value = Value * 8 + (Str[i] - '0');
 2655|    806|        }
 2656|  2.45k|      }
 2657|       |
 2658|  4.01k|      if (Value > 255) {
  ------------------
  |  Branch (2658:11): [True: 50, False: 3.96k]
  ------------------
 2659|       |        // return TokError("invalid octal escape sequence (out of range)");
 2660|     50|        KsError = KS_ERR_ASM_ESC_BACKSLASH;
 2661|     50|        return true;
 2662|     50|      }
 2663|       |
 2664|  3.96k|      Data += (unsigned char)Value;
 2665|  3.96k|      continue;
 2666|  4.01k|    }
 2667|       |
 2668|       |    // Otherwise recognize individual escapes.
 2669|  3.42k|    switch (Str[i]) {
 2670|     99|    default:
  ------------------
  |  Branch (2670:5): [True: 99, False: 3.32k]
  ------------------
 2671|       |      // Just reject invalid escape sequences for now.
 2672|       |      // return TokError("invalid escape sequence (unrecognized character)");
 2673|     99|      KsError = KS_ERR_ASM_ESC_SEQUENCE;
 2674|     99|      return true;
 2675|       |
 2676|    713|    case 'b': Data += '\b'; break;
  ------------------
  |  Branch (2676:5): [True: 713, False: 2.71k]
  ------------------
 2677|    488|    case 'f': Data += '\f'; break;
  ------------------
  |  Branch (2677:5): [True: 488, False: 2.93k]
  ------------------
 2678|    157|    case 'n': Data += '\n'; break;
  ------------------
  |  Branch (2678:5): [True: 157, False: 3.26k]
  ------------------
 2679|    329|    case 'r': Data += '\r'; break;
  ------------------
  |  Branch (2679:5): [True: 329, False: 3.09k]
  ------------------
 2680|    460|    case 't': Data += '\t'; break;
  ------------------
  |  Branch (2680:5): [True: 460, False: 2.96k]
  ------------------
 2681|    344|    case '"': Data += '"'; break;
  ------------------
  |  Branch (2681:5): [True: 344, False: 3.08k]
  ------------------
 2682|    834|    case '\\': Data += '\\'; break;
  ------------------
  |  Branch (2682:5): [True: 834, False: 2.59k]
  ------------------
 2683|  3.42k|    }
 2684|  3.42k|  }
 2685|       |
 2686|  2.39k|  return false;
 2687|  2.54k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19eatToEndOfStatementEv:
  783|   257k|{
  784|  1.13M|  while (Lexer.isNot(AsmToken::EndOfStatement) && Lexer.isNot(AsmToken::Eof))
  ------------------
  |  Branch (784:10): [True: 876k, False: 256k]
  |  Branch (784:51): [True: 876k, False: 237]
  ------------------
  785|   876k|    Lex();
  786|       |
  787|       |  // Eat EOL.
  788|   257k|  if (Lexer.is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (788:7): [True: 256k, False: 237]
  ------------------
  789|   256k|    Lex();
  790|   257k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser15parseExpressionERPKN7llvm_ks6MCExprERNS1_5SMLocE:
 1145|   888k|bool AsmParser::parseExpression(const MCExpr *&Res, SMLoc &EndLoc) {
 1146|       |  // Parse the expression.
 1147|   888k|  Res = nullptr;
 1148|   888k|  if (parsePrimaryExpr(Res, EndLoc) || parseBinOpRHS(1, Res, EndLoc))
  ------------------
  |  Branch (1148:7): [True: 354k, False: 534k]
  |  Branch (1148:40): [True: 13.8k, False: 520k]
  ------------------
 1149|   368k|    return true;
 1150|       |
 1151|       |  // As a special case, we support 'a op b @ modifier' by rewriting the
 1152|       |  // expression to include the modifier. This is inefficient, but in general we
 1153|       |  // expect users to use 'a@modifier op b'.
 1154|   520k|  if (Lexer.getKind() == AsmToken::At) {
  ------------------
  |  Branch (1154:7): [True: 0, False: 520k]
  ------------------
 1155|      0|    Lex();
 1156|       |
 1157|      0|    if (Lexer.isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (1157:9): [True: 0, False: 0]
  ------------------
 1158|       |      // return TokError("unexpected symbol modifier following '@'");
 1159|      0|      KsError = KS_ERR_ASM_SYMBOL_MODIFIER;
 1160|      0|      return true;
 1161|      0|    }
 1162|       |
 1163|      0|    MCSymbolRefExpr::VariantKind Variant =
 1164|      0|        MCSymbolRefExpr::getVariantKindForName(getTok().getIdentifier());
 1165|      0|    if (Variant == MCSymbolRefExpr::VK_Invalid) {
  ------------------
  |  Branch (1165:9): [True: 0, False: 0]
  ------------------
 1166|       |      // return TokError("invalid variant '" + getTok().getIdentifier() + "'");
 1167|      0|      KsError = KS_ERR_ASM_VARIANT_INVALID;
 1168|      0|      return true;
 1169|      0|    }
 1170|       |
 1171|      0|    const MCExpr *ModifiedRes = applyModifierToExpr(Res, Variant);
 1172|      0|    if (!ModifiedRes) {
  ------------------
  |  Branch (1172:9): [True: 0, False: 0]
  ------------------
 1173|       |      // return TokError("invalid modifier '" + getTok().getIdentifier() +
 1174|       |      //                 "' (no symbols present)");
 1175|      0|      KsError = KS_ERR_ASM_VARIANT_INVALID;
 1176|      0|      return true;
 1177|      0|    }
 1178|       |
 1179|      0|    Res = ModifiedRes;
 1180|      0|    Lex();
 1181|      0|  }
 1182|       |
 1183|       |  // Try to constant fold it up front, if possible.
 1184|   520k|  int64_t Value;
 1185|   520k|  if (Res->evaluateAsAbsolute(Value))
  ------------------
  |  Branch (1185:7): [True: 232k, False: 288k]
  ------------------
 1186|   232k|    Res = MCConstantExpr::create(Value, getContext());
 1187|       |
 1188|   520k|  return false;
 1189|   520k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser13parseBinOpRHSEjRPKN7llvm_ks6MCExprERNS1_5SMLocE:
 1400|   543k|                              SMLoc &EndLoc) {
 1401|   749k|  while (1) {
  ------------------
  |  Branch (1401:10): [True: 749k, Folded]
  ------------------
 1402|   749k|    MCBinaryExpr::Opcode Kind = MCBinaryExpr::Add;
 1403|   749k|    unsigned TokPrec = getBinOpPrecedence(Lexer.getKind(), Kind);
 1404|       |
 1405|       |    // If the next token is lower precedence than we are allowed to eat, return
 1406|       |    // successfully with what we ate already.
 1407|   749k|    if (TokPrec < Precedence)
  ------------------
  |  Branch (1407:9): [True: 528k, False: 221k]
  ------------------
 1408|   528k|      return false;
 1409|       |
 1410|   221k|    Lex();
 1411|       |
 1412|       |    // Eat the next primary expression.
 1413|   221k|    const MCExpr *RHS;
 1414|   221k|    if (parsePrimaryExpr(RHS, EndLoc))
  ------------------
  |  Branch (1414:9): [True: 13.8k, False: 207k]
  ------------------
 1415|  13.8k|      return true;
 1416|       |
 1417|       |    // If BinOp binds less tightly with RHS than the operator after RHS, let
 1418|       |    // the pending operator take RHS as its LHS.
 1419|   207k|    MCBinaryExpr::Opcode Dummy;
 1420|   207k|    unsigned NextTokPrec = getBinOpPrecedence(Lexer.getKind(), Dummy);
 1421|   207k|    if (TokPrec < NextTokPrec && parseBinOpRHS(TokPrec + 1, RHS, EndLoc))
  ------------------
  |  Branch (1421:9): [True: 9.77k, False: 197k]
  |  Branch (1421:34): [True: 1.59k, False: 8.18k]
  ------------------
 1422|  1.59k|      return true;
 1423|       |
 1424|       |    // Merge LHS and RHS according to operator.
 1425|   205k|    Res = MCBinaryExpr::create(Kind, Res, RHS, getContext());
 1426|   205k|  }
 1427|   543k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser18getBinOpPrecedenceEN7llvm_ks8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE:
 1391|   956k|                                       MCBinaryExpr::Opcode &Kind) {
 1392|   956k|  bool ShouldUseLogicalShr = MAI.shouldUseLogicalShr();
 1393|   956k|  return IsDarwin ? getDarwinBinOpPrecedence(K, Kind, ShouldUseLogicalShr)
  ------------------
  |  Branch (1393:10): [True: 956k, False: 0]
  ------------------
 1394|   956k|                  : getGNUBinOpPrecedence(K, Kind, ShouldUseLogicalShr);
 1395|   956k|}
AsmParser.cpp:_ZL24getDarwinBinOpPrecedenceN7llvm_ks8AsmToken9TokenKindERNS_12MCBinaryExpr6OpcodeEb:
 1238|   956k|                                         bool ShouldUseLogicalShr) {
 1239|   956k|  switch (K) {
 1240|   658k|  default:
  ------------------
  |  Branch (1240:3): [True: 658k, False: 298k]
  ------------------
 1241|   658k|    return 0; // not a binop.
 1242|       |
 1243|       |  // Lowest Precedence: &&, ||
 1244|  2.24k|  case AsmToken::AmpAmp:
  ------------------
  |  Branch (1244:3): [True: 2.24k, False: 954k]
  ------------------
 1245|  2.24k|    Kind = MCBinaryExpr::LAnd;
 1246|  2.24k|    return 1;
 1247|    813|  case AsmToken::PipePipe:
  ------------------
  |  Branch (1247:3): [True: 813, False: 956k]
  ------------------
 1248|    813|    Kind = MCBinaryExpr::LOr;
 1249|    813|    return 1;
 1250|       |
 1251|       |  // Low Precedence: |, &, ^
 1252|       |  //
 1253|       |  // FIXME: gas seems to support '!' as an infix operator?
 1254|  3.27k|  case AsmToken::Pipe:
  ------------------
  |  Branch (1254:3): [True: 3.27k, False: 953k]
  ------------------
 1255|  3.27k|    Kind = MCBinaryExpr::Or;
 1256|  3.27k|    return 2;
 1257|  1.75k|  case AsmToken::Caret:
  ------------------
  |  Branch (1257:3): [True: 1.75k, False: 955k]
  ------------------
 1258|  1.75k|    Kind = MCBinaryExpr::Xor;
 1259|  1.75k|    return 2;
 1260|  7.23k|  case AsmToken::Amp:
  ------------------
  |  Branch (1260:3): [True: 7.23k, False: 949k]
  ------------------
 1261|  7.23k|    Kind = MCBinaryExpr::And;
 1262|  7.23k|    return 2;
 1263|       |
 1264|       |  // Low Intermediate Precedence: ==, !=, <>, <, <=, >, >=
 1265|    632|  case AsmToken::EqualEqual:
  ------------------
  |  Branch (1265:3): [True: 632, False: 956k]
  ------------------
 1266|    632|    Kind = MCBinaryExpr::EQ;
 1267|    632|    return 3;
 1268|    242|  case AsmToken::ExclaimEqual:
  ------------------
  |  Branch (1268:3): [True: 242, False: 956k]
  ------------------
 1269|    955|  case AsmToken::LessGreater:
  ------------------
  |  Branch (1269:3): [True: 713, False: 956k]
  ------------------
 1270|    955|    Kind = MCBinaryExpr::NE;
 1271|    955|    return 3;
 1272|  5.49k|  case AsmToken::Less:
  ------------------
  |  Branch (1272:3): [True: 5.49k, False: 951k]
  ------------------
 1273|  5.49k|    Kind = MCBinaryExpr::LT;
 1274|  5.49k|    return 3;
 1275|    951|  case AsmToken::LessEqual:
  ------------------
  |  Branch (1275:3): [True: 951, False: 955k]
  ------------------
 1276|    951|    Kind = MCBinaryExpr::LTE;
 1277|    951|    return 3;
 1278|  6.23k|  case AsmToken::Greater:
  ------------------
  |  Branch (1278:3): [True: 6.23k, False: 950k]
  ------------------
 1279|  6.23k|    Kind = MCBinaryExpr::GT;
 1280|  6.23k|    return 3;
 1281|  1.83k|  case AsmToken::GreaterEqual:
  ------------------
  |  Branch (1281:3): [True: 1.83k, False: 955k]
  ------------------
 1282|  1.83k|    Kind = MCBinaryExpr::GTE;
 1283|  1.83k|    return 3;
 1284|       |
 1285|       |  // Intermediate Precedence: <<, >>
 1286|  1.48k|  case AsmToken::LessLess:
  ------------------
  |  Branch (1286:3): [True: 1.48k, False: 955k]
  ------------------
 1287|  1.48k|    Kind = MCBinaryExpr::Shl;
 1288|  1.48k|    return 4;
 1289|    280|  case AsmToken::GreaterGreater:
  ------------------
  |  Branch (1289:3): [True: 280, False: 956k]
  ------------------
 1290|    280|    Kind = ShouldUseLogicalShr ? MCBinaryExpr::LShr : MCBinaryExpr::AShr;
  ------------------
  |  Branch (1290:12): [True: 280, False: 0]
  ------------------
 1291|    280|    return 4;
 1292|       |
 1293|       |  // High Intermediate Precedence: +, -
 1294|  25.4k|  case AsmToken::Plus:
  ------------------
  |  Branch (1294:3): [True: 25.4k, False: 931k]
  ------------------
 1295|  25.4k|    Kind = MCBinaryExpr::Add;
 1296|  25.4k|    return 5;
 1297|   184k|  case AsmToken::Minus:
  ------------------
  |  Branch (1297:3): [True: 184k, False: 772k]
  ------------------
 1298|   184k|    Kind = MCBinaryExpr::Sub;
 1299|   184k|    return 5;
 1300|       |
 1301|       |  // Highest Precedence: *, /, %
 1302|  37.1k|  case AsmToken::Star:
  ------------------
  |  Branch (1302:3): [True: 37.1k, False: 919k]
  ------------------
 1303|  37.1k|    Kind = MCBinaryExpr::Mul;
 1304|  37.1k|    return 6;
 1305|  13.0k|  case AsmToken::Slash:
  ------------------
  |  Branch (1305:3): [True: 13.0k, False: 943k]
  ------------------
 1306|  13.0k|    Kind = MCBinaryExpr::Div;
 1307|  13.0k|    return 6;
 1308|  5.19k|  case AsmToken::Percent:
  ------------------
  |  Branch (1308:3): [True: 5.19k, False: 951k]
  ------------------
 1309|  5.19k|    Kind = MCBinaryExpr::Mod;
 1310|  5.19k|    return 6;
 1311|   956k|  }
 1312|   956k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser16parsePrimaryExprERPKN7llvm_ks6MCExprERNS1_5SMLocE:
 1072|  1.10M|{
 1073|  1.10M|  return parsePrimaryExprAux(Res, EndLoc, 0);
 1074|  1.10M|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser19parsePrimaryExprAuxERPKN7llvm_ks6MCExprERNS1_5SMLocEj:
  848|  1.38M|{
  849|  1.38M|  if (depth > 0x100) {
  ------------------
  |  Branch (849:7): [True: 3, False: 1.38M]
  ------------------
  850|      3|    KsError = KS_ERR_ASM_EXPR_TOKEN;
  851|      3|    return true;
  852|      3|  }
  853|  1.38M|  SMLoc FirstTokenLoc = getLexer().getLoc();
  854|  1.38M|  AsmToken::TokenKind FirstTokenKind = Lexer.getKind();
  855|  1.38M|  switch (FirstTokenKind) {
  856|   206k|  default:
  ------------------
  |  Branch (856:3): [True: 206k, False: 1.17M]
  ------------------
  857|       |    //return TokError("unknown token in expression");
  858|   206k|    KsError = KS_ERR_ASM_EXPR_TOKEN;
  859|   206k|    return true;
  860|       |  // If we have an error assume that we've already handled it.
  861|  11.1k|  case AsmToken::Error:
  ------------------
  |  Branch (861:3): [True: 11.1k, False: 1.36M]
  ------------------
  862|  11.1k|    return true;
  863|  4.78k|  case AsmToken::Exclaim:
  ------------------
  |  Branch (863:3): [True: 4.78k, False: 1.37M]
  ------------------
  864|  4.78k|    Lex(); // Eat the operator.
  865|  4.78k|    if (parsePrimaryExprAux(Res, EndLoc, depth+1))
  ------------------
  |  Branch (865:9): [True: 619, False: 4.16k]
  ------------------
  866|    619|      return true;
  867|  4.16k|    Res = MCUnaryExpr::createLNot(Res, getContext());
  868|  4.16k|    return false;
  869|  81.3k|  case AsmToken::Dollar:
  ------------------
  |  Branch (869:3): [True: 81.3k, False: 1.29M]
  ------------------
  870|  81.3k|  case AsmToken::At:
  ------------------
  |  Branch (870:3): [True: 0, False: 1.38M]
  ------------------
  871|  82.0k|  case AsmToken::String:
  ------------------
  |  Branch (871:3): [True: 727, False: 1.37M]
  ------------------
  872|   346k|  case AsmToken::Identifier: {
  ------------------
  |  Branch (872:3): [True: 264k, False: 1.11M]
  ------------------
  873|   346k|    StringRef Identifier;
  874|   346k|    if (parseIdentifier(Identifier)) {
  ------------------
  |  Branch (874:9): [True: 80.5k, False: 266k]
  ------------------
  875|  80.5k|      if (FirstTokenKind == AsmToken::Dollar) {
  ------------------
  |  Branch (875:11): [True: 80.5k, False: 0]
  ------------------
  876|  80.5k|        if (Lexer.getMAI().getDollarIsPC()) {
  ------------------
  |  Branch (876:13): [True: 0, False: 80.5k]
  ------------------
  877|       |          // This is a '$' reference, which references the current PC.  Emit a
  878|       |          // temporary label to the streamer and refer to it.
  879|      0|          MCSymbol *Sym = Ctx.createTempSymbol();
  880|      0|          Out.EmitLabel(Sym);
  881|      0|          Res = MCSymbolRefExpr::create(Sym, MCSymbolRefExpr::VK_None,
  882|      0|                                        getContext());
  883|      0|          EndLoc = FirstTokenLoc;
  884|      0|          return false;
  885|      0|        }
  886|       |        //return Error(FirstTokenLoc, "invalid token in expression");
  887|  80.5k|        KsError = KS_ERR_ASM_INVALIDOPERAND;
  888|  80.5k|        return true;
  889|  80.5k|      }
  890|  80.5k|    }
  891|       |    // Parse symbol variant
  892|   266k|    std::pair<StringRef, StringRef> Split;
  893|   266k|    if (!MAI.useParensForSymbolVariant()) {
  ------------------
  |  Branch (893:9): [True: 0, False: 266k]
  ------------------
  894|      0|      if (FirstTokenKind == AsmToken::String) {
  ------------------
  |  Branch (894:11): [True: 0, False: 0]
  ------------------
  895|      0|        if (Lexer.is(AsmToken::At)) {
  ------------------
  |  Branch (895:13): [True: 0, False: 0]
  ------------------
  896|      0|          Lexer.Lex(); // eat @
  897|       |          //SMLoc AtLoc = getLexer().getLoc();
  898|      0|          StringRef VName;
  899|      0|          if (parseIdentifier(VName)) {
  ------------------
  |  Branch (899:15): [True: 0, False: 0]
  ------------------
  900|       |            //return Error(AtLoc, "expected symbol variant after '@'");
  901|      0|            KsError = KS_ERR_ASM_INVALIDOPERAND;
  902|      0|            return true;
  903|      0|          }
  904|       |
  905|      0|          Split = std::make_pair(Identifier, VName);
  906|      0|        }
  907|      0|      } else {
  908|      0|        Split = Identifier.split('@');
  909|      0|      }
  910|   266k|    } else if (Lexer.is(AsmToken::LParen)) {
  ------------------
  |  Branch (910:16): [True: 5.89k, False: 260k]
  ------------------
  911|  5.89k|      Lexer.Lex(); // eat (
  912|  5.89k|      StringRef VName;
  913|  5.89k|      parseIdentifier(VName);
  914|  5.89k|      if (Lexer.isNot(AsmToken::RParen)) {
  ------------------
  |  Branch (914:11): [True: 2.39k, False: 3.49k]
  ------------------
  915|       |          //return Error(Lexer.getTok().getLoc(),
  916|       |          //             "unexpected token in variant, expected ')'");
  917|  2.39k|          KsError = KS_ERR_ASM_INVALIDOPERAND;
  918|  2.39k|          return true;
  919|  2.39k|      }
  920|  3.49k|      Lexer.Lex(); // eat )
  921|  3.49k|      Split = std::make_pair(Identifier, VName);
  922|  3.49k|    }
  923|       |
  924|   263k|    EndLoc = SMLoc::getFromPointer(Identifier.end());
  925|       |
  926|       |    // This is a symbol reference.
  927|   263k|    StringRef SymbolName = Identifier;
  928|   263k|    MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
  929|       |
  930|       |    // Lookup the symbol variant if used.
  931|   263k|    if (Split.second.size()) {
  ------------------
  |  Branch (931:9): [True: 3.08k, False: 260k]
  ------------------
  932|  3.08k|      Variant = MCSymbolRefExpr::getVariantKindForName(Split.second);
  933|  3.08k|      if (Variant != MCSymbolRefExpr::VK_Invalid) {
  ------------------
  |  Branch (933:11): [True: 1.44k, False: 1.63k]
  ------------------
  934|  1.44k|        SymbolName = Split.first;
  935|  1.63k|      } else if (MAI.doesAllowAtInName() && !MAI.useParensForSymbolVariant()) {
  ------------------
  |  Branch (935:18): [True: 0, False: 1.63k]
  |  Branch (935:45): [True: 0, False: 0]
  ------------------
  936|      0|        Variant = MCSymbolRefExpr::VK_None;
  937|  1.63k|      } else {
  938|       |        //return Error(SMLoc::getFromPointer(Split.second.begin()),
  939|       |        //             "invalid variant '" + Split.second + "'");
  940|  1.63k|        KsError = KS_ERR_ASM_INVALIDOPERAND;
  941|  1.63k|        return true;
  942|  1.63k|      }
  943|  3.08k|    }
  944|       |
  945|   262k|    if (SymbolName.empty()) {
  ------------------
  |  Branch (945:9): [True: 216, False: 262k]
  ------------------
  946|    216|        return true;
  947|    216|    }
  948|   262k|    MCSymbol *Sym = getContext().getOrCreateSymbol(SymbolName);
  949|       |
  950|       |    // If this is an absolute variable reference, substitute it now to preserve
  951|       |    // semantics in the face of reassignment.
  952|   262k|    if (Sym->isVariable() &&
  ------------------
  |  Branch (952:9): [True: 6.23k, False: 255k]
  |  Branch (952:9): [True: 868, False: 261k]
  ------------------
  953|  6.23k|        isa<MCConstantExpr>(Sym->getVariableValue(/*SetUsed*/ false))) {
  ------------------
  |  Branch (953:9): [True: 868, False: 5.36k]
  ------------------
  954|    868|      if (Variant) {
  ------------------
  |  Branch (954:11): [True: 10, False: 858]
  ------------------
  955|       |        //return Error(EndLoc, "unexpected modifier on variable reference");
  956|     10|        KsError = KS_ERR_ASM_INVALIDOPERAND;
  957|     10|        return true;
  958|     10|      }
  959|       |
  960|    858|      Res = Sym->getVariableValue(/*SetUsed*/ false);
  961|    858|      return false;
  962|    868|    }
  963|       |
  964|       |    // Otherwise create a symbol ref.
  965|   261k|    Res = MCSymbolRefExpr::create(Sym, Variant, getContext());
  966|   261k|    return false;
  967|   262k|  }
  968|  1.45k|  case AsmToken::BigNum:
  ------------------
  |  Branch (968:3): [True: 1.45k, False: 1.37M]
  ------------------
  969|       |    // return TokError("literal value out of range for directive");
  970|  1.45k|    KsError = KS_ERR_ASM_DIRECTIVE_VALUE_RANGE;
  971|  1.45k|    return true;
  972|   301k|  case AsmToken::Integer: {
  ------------------
  |  Branch (972:3): [True: 301k, False: 1.07M]
  ------------------
  973|       |    //SMLoc Loc = getTok().getLoc();
  974|   301k|    bool valid;
  975|   301k|    int64_t IntVal = getTok().getIntVal(valid);
  976|   301k|    if (!valid) {
  ------------------
  |  Branch (976:9): [True: 0, False: 301k]
  ------------------
  977|      0|        return true;
  978|      0|    }
  979|   301k|    Res = MCConstantExpr::create(IntVal, getContext());
  980|   301k|    EndLoc = Lexer.getTok().getEndLoc();
  981|   301k|    Lex(); // Eat token.
  982|       |    // Look for 'b' or 'f' following an Integer as a directional label
  983|   301k|    if (Lexer.getKind() == AsmToken::Identifier) {
  ------------------
  |  Branch (983:9): [True: 8.09k, False: 293k]
  ------------------
  984|  8.09k|      StringRef IDVal = getTok().getString();
  985|       |      // Lookup the symbol variant if used.
  986|  8.09k|      std::pair<StringRef, StringRef> Split = IDVal.split('@');
  987|  8.09k|      MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
  988|  8.09k|      if (Split.first.size() != IDVal.size()) {
  ------------------
  |  Branch (988:11): [True: 0, False: 8.09k]
  ------------------
  989|      0|        Variant = MCSymbolRefExpr::getVariantKindForName(Split.second);
  990|      0|        if (Variant == MCSymbolRefExpr::VK_Invalid) {
  ------------------
  |  Branch (990:13): [True: 0, False: 0]
  ------------------
  991|       |          // return TokError("invalid variant '" + Split.second + "'");
  992|      0|          KsError = KS_ERR_ASM_VARIANT_INVALID;
  993|      0|          return true;
  994|      0|        }
  995|      0|        IDVal = Split.first;
  996|      0|      }
  997|  8.09k|      if (IDVal == "f" || IDVal == "b") {
  ------------------
  |  Branch (997:11): [True: 480, False: 7.61k]
  |  Branch (997:11): [True: 652, False: 7.44k]
  |  Branch (997:27): [True: 172, False: 7.44k]
  ------------------
  998|    652|        bool valid;
  999|    652|        MCSymbol *Sym =
 1000|    652|            Ctx.getDirectionalLocalSymbol(IntVal, IDVal == "b", valid);
 1001|    652|        if (!valid)
  ------------------
  |  Branch (1001:13): [True: 652, False: 0]
  ------------------
 1002|    652|            return true;
 1003|      0|        Res = MCSymbolRefExpr::create(Sym, Variant, getContext());
 1004|      0|        if (IDVal == "b" && Sym->isUndefined()) {
  ------------------
  |  Branch (1004:13): [True: 0, False: 0]
  |  Branch (1004:13): [True: 0, False: 0]
  |  Branch (1004:29): [True: 0, False: 0]
  ------------------
 1005|       |          //return Error(Loc, "invalid reference to undefined symbol");
 1006|      0|          KsError = KS_ERR_ASM_INVALIDOPERAND;
 1007|      0|          return true;
 1008|      0|        }
 1009|      0|        EndLoc = Lexer.getTok().getEndLoc();
 1010|      0|        Lex(); // Eat identifier.
 1011|      0|      }
 1012|  8.09k|    }
 1013|   300k|    return false;
 1014|   301k|  }
 1015|  61.1k|  case AsmToken::Real: {
  ------------------
  |  Branch (1015:3): [True: 61.1k, False: 1.31M]
  ------------------
 1016|  61.1k|    APFloat RealVal(APFloat::IEEEdouble, getTok().getString());
 1017|  61.1k|    uint64_t IntVal = RealVal.bitcastToAPInt().getZExtValue();
 1018|  61.1k|    Res = MCConstantExpr::create(IntVal, getContext());
 1019|  61.1k|    EndLoc = Lexer.getTok().getEndLoc();
 1020|  61.1k|    Lex(); // Eat token.
 1021|  61.1k|    return false;
 1022|   301k|  }
 1023|   116k|  case AsmToken::Dot: {
  ------------------
  |  Branch (1023:3): [True: 116k, False: 1.26M]
  ------------------
 1024|       |    // This is a '.' reference, which references the current PC.  Emit a
 1025|       |    // temporary label to the streamer and refer to it.
 1026|   116k|    MCSymbol *Sym = Ctx.createTempSymbol();
 1027|   116k|    Out.EmitLabel(Sym);
 1028|   116k|    Res = MCSymbolRefExpr::create(Sym, MCSymbolRefExpr::VK_None, getContext());
 1029|   116k|    EndLoc = Lexer.getTok().getEndLoc();
 1030|   116k|    Lex(); // Eat identifier.
 1031|   116k|    return false;
 1032|   301k|  }
 1033|  63.6k|  case AsmToken::LParen:
  ------------------
  |  Branch (1033:3): [True: 63.6k, False: 1.31M]
  ------------------
 1034|  63.6k|    Lex(); // Eat the '('.
 1035|  63.6k|    return parseParenExpr(Res, EndLoc);
 1036|    294|  case AsmToken::LBrac:
  ------------------
  |  Branch (1036:3): [True: 294, False: 1.37M]
  ------------------
 1037|    294|    if (!PlatformParser->HasBracketExpressions()) {
  ------------------
  |  Branch (1037:9): [True: 294, False: 0]
  ------------------
 1038|       |      // return TokError("brackets expression not supported on this target");
 1039|    294|      KsError = KS_ERR_ASM_EXPR_BRACKET;
 1040|    294|      return true;
 1041|    294|    }
 1042|      0|    Lex(); // Eat the '['.
 1043|      0|    return parseBracketExpr(Res, EndLoc);
 1044|   167k|  case AsmToken::Minus:
  ------------------
  |  Branch (1044:3): [True: 167k, False: 1.21M]
  ------------------
 1045|   167k|    Lex(); // Eat the operator.
 1046|   167k|    if (parsePrimaryExprAux(Res, EndLoc, depth+1))
  ------------------
  |  Branch (1046:9): [True: 4.44k, False: 162k]
  ------------------
 1047|  4.44k|      return true;
 1048|   162k|    Res = MCUnaryExpr::createMinus(Res, getContext());
 1049|   162k|    return false;
 1050|  22.0k|  case AsmToken::Plus:
  ------------------
  |  Branch (1050:3): [True: 22.0k, False: 1.35M]
  ------------------
 1051|  22.0k|    Lex(); // Eat the operator.
 1052|  22.0k|    if (parsePrimaryExprAux(Res, EndLoc, depth+1))
  ------------------
  |  Branch (1052:9): [True: 2.10k, False: 19.9k]
  ------------------
 1053|  2.10k|      return true;
 1054|  19.9k|    Res = MCUnaryExpr::createPlus(Res, getContext());
 1055|  19.9k|    return false;
 1056|  76.5k|  case AsmToken::Tilde:
  ------------------
  |  Branch (1056:3): [True: 76.5k, False: 1.30M]
  ------------------
 1057|  76.5k|    Lex(); // Eat the operator.
 1058|  76.5k|    if (parsePrimaryExprAux(Res, EndLoc, depth+1))
  ------------------
  |  Branch (1058:9): [True: 418, False: 76.1k]
  ------------------
 1059|    418|      return true;
 1060|  76.1k|    Res = MCUnaryExpr::createNot(Res, getContext());
 1061|  76.1k|    return false;
 1062|  1.38M|  }
 1063|  1.38M|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser14parseParenExprERPKN7llvm_ks6MCExprERNS1_5SMLocE:
  818|  63.6k|bool AsmParser::parseParenExpr(const MCExpr *&Res, SMLoc &EndLoc) {
  819|  63.6k|  if (parseExpression(Res))
  ------------------
  |  Branch (819:7): [True: 59.9k, False: 3.74k]
  ------------------
  820|  59.9k|    return true;
  821|  3.74k|  if (Lexer.isNot(AsmToken::RParen))
  ------------------
  |  Branch (821:7): [True: 3.31k, False: 435]
  ------------------
  822|       |    //return TokError("expected ')' in parentheses expression");
  823|  3.31k|    return true;
  824|    435|  EndLoc = Lexer.getTok().getEndLoc();
  825|    435|  Lex();
  826|    435|  return false;
  827|  3.74k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser23parseAbsoluteExpressionERl:
 1220|  96.9k|bool AsmParser::parseAbsoluteExpression(int64_t &Res) {
 1221|  96.9k|  const MCExpr *Expr;
 1222|       |
 1223|       |  //SMLoc StartLoc = Lexer.getLoc();
 1224|  96.9k|  if (parseExpression(Expr))
  ------------------
  |  Branch (1224:7): [True: 3.10k, False: 93.8k]
  ------------------
 1225|  3.10k|    return true;
 1226|       |
 1227|  93.8k|  if (!Expr->evaluateAsAbsolute(Res)) {
  ------------------
  |  Branch (1227:7): [True: 9.74k, False: 84.0k]
  ------------------
 1228|       |    //return Error(StartLoc, "expected absolute expression");
 1229|  9.74k|    KsError = KS_ERR_ASM_INVALIDOPERAND;
 1230|  9.74k|    return true;
 1231|  9.74k|  }
 1232|       |
 1233|  84.0k|  return false;
 1234|  93.8k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser20checkForValidSectionEv:
  772|  99.3k|{
  773|       |#if 0
  774|       |  if (!ParsingInlineAsm && !getStreamer().getCurrentSection().first) {
  775|       |    TokError("expected section directive before assembly directive");
  776|       |    Out.InitSections(false);
  777|       |  }
  778|       |#endif
  779|  99.3k|}
AsmParser.cpp:_ZN12_GLOBAL__N_19AsmParser26initializeDirectiveKindMapEi:
 5356|  20.9k|{
 5357|  20.9k|    KsSyntax = syntax;
 5358|  20.9k|    if (syntax == KS_OPT_SYNTAX_NASM) {
  ------------------
  |  Branch (5358:9): [True: 0, False: 20.9k]
  ------------------
 5359|       |        // NASM syntax
 5360|      0|        DirectiveKindMap.clear();
 5361|      0|        DirectiveKindMap["db"] = DK_BYTE;
 5362|      0|        DirectiveKindMap["dw"] = DK_SHORT;
 5363|      0|        DirectiveKindMap["dd"] = DK_INT;
 5364|      0|        DirectiveKindMap["dq"] = DK_QUAD;
 5365|      0|        DirectiveKindMap["use16"] = DK_CODE16;
 5366|      0|        DirectiveKindMap["use32"] = DK_NASM_USE32;
 5367|      0|        DirectiveKindMap["global"] = DK_GLOBAL;
 5368|      0|        DirectiveKindMap["bits"] = DK_NASM_BITS;
 5369|      0|        DirectiveKindMap["default"] = DK_NASM_DEFAULT;
 5370|  20.9k|    } else {
 5371|       |        // default LLVM syntax
 5372|  20.9k|        DirectiveKindMap.clear();
 5373|  20.9k|        DirectiveKindMap[".set"] = DK_SET;
 5374|  20.9k|        DirectiveKindMap[".equ"] = DK_EQU;
 5375|  20.9k|        DirectiveKindMap[".equiv"] = DK_EQUIV;
 5376|  20.9k|        DirectiveKindMap[".ascii"] = DK_ASCII;
 5377|  20.9k|        DirectiveKindMap[".asciz"] = DK_ASCIZ;
 5378|  20.9k|        DirectiveKindMap[".string"] = DK_STRING;
 5379|  20.9k|        DirectiveKindMap[".byte"] = DK_BYTE;
 5380|  20.9k|        DirectiveKindMap[".short"] = DK_SHORT;
 5381|  20.9k|        DirectiveKindMap[".value"] = DK_VALUE;
 5382|  20.9k|        DirectiveKindMap[".2byte"] = DK_2BYTE;
 5383|  20.9k|        DirectiveKindMap[".long"] = DK_LONG;
 5384|  20.9k|        DirectiveKindMap[".int"] = DK_INT;
 5385|  20.9k|        DirectiveKindMap[".4byte"] = DK_4BYTE;
 5386|  20.9k|        DirectiveKindMap[".quad"] = DK_QUAD;
 5387|  20.9k|        DirectiveKindMap[".8byte"] = DK_8BYTE;
 5388|  20.9k|        DirectiveKindMap[".octa"] = DK_OCTA;
 5389|  20.9k|        DirectiveKindMap[".single"] = DK_SINGLE;
 5390|  20.9k|        DirectiveKindMap[".float"] = DK_FLOAT;
 5391|  20.9k|        DirectiveKindMap[".double"] = DK_DOUBLE;
 5392|  20.9k|        DirectiveKindMap[".align"] = DK_ALIGN;
 5393|  20.9k|        DirectiveKindMap[".align32"] = DK_ALIGN32;
 5394|  20.9k|        DirectiveKindMap[".balign"] = DK_BALIGN;
 5395|  20.9k|        DirectiveKindMap[".balignw"] = DK_BALIGNW;
 5396|  20.9k|        DirectiveKindMap[".balignl"] = DK_BALIGNL;
 5397|  20.9k|        DirectiveKindMap[".p2align"] = DK_P2ALIGN;
 5398|  20.9k|        DirectiveKindMap[".p2alignw"] = DK_P2ALIGNW;
 5399|  20.9k|        DirectiveKindMap[".p2alignl"] = DK_P2ALIGNL;
 5400|  20.9k|        DirectiveKindMap[".org"] = DK_ORG;
 5401|  20.9k|        DirectiveKindMap[".fill"] = DK_FILL;
 5402|  20.9k|        DirectiveKindMap[".zero"] = DK_ZERO;
 5403|  20.9k|        DirectiveKindMap[".extern"] = DK_EXTERN;
 5404|  20.9k|        DirectiveKindMap[".globl"] = DK_GLOBL;
 5405|  20.9k|        DirectiveKindMap[".global"] = DK_GLOBAL;
 5406|  20.9k|        DirectiveKindMap[".lazy_reference"] = DK_LAZY_REFERENCE;
 5407|  20.9k|        DirectiveKindMap[".no_dead_strip"] = DK_NO_DEAD_STRIP;
 5408|  20.9k|        DirectiveKindMap[".symbol_resolver"] = DK_SYMBOL_RESOLVER;
 5409|  20.9k|        DirectiveKindMap[".private_extern"] = DK_PRIVATE_EXTERN;
 5410|  20.9k|        DirectiveKindMap[".reference"] = DK_REFERENCE;
 5411|  20.9k|        DirectiveKindMap[".weak_definition"] = DK_WEAK_DEFINITION;
 5412|  20.9k|        DirectiveKindMap[".weak_reference"] = DK_WEAK_REFERENCE;
 5413|  20.9k|        DirectiveKindMap[".weak_def_can_be_hidden"] = DK_WEAK_DEF_CAN_BE_HIDDEN;
 5414|  20.9k|        DirectiveKindMap[".comm"] = DK_COMM;
 5415|  20.9k|        DirectiveKindMap[".common"] = DK_COMMON;
 5416|  20.9k|        DirectiveKindMap[".lcomm"] = DK_LCOMM;
 5417|  20.9k|        DirectiveKindMap[".abort"] = DK_ABORT;
 5418|  20.9k|        DirectiveKindMap[".include"] = DK_INCLUDE;
 5419|  20.9k|        DirectiveKindMap[".incbin"] = DK_INCBIN;
 5420|  20.9k|        DirectiveKindMap[".code16"] = DK_CODE16;
 5421|  20.9k|        DirectiveKindMap[".code16gcc"] = DK_CODE16GCC;
 5422|  20.9k|        DirectiveKindMap[".rept"] = DK_REPT;
 5423|  20.9k|        DirectiveKindMap[".rep"] = DK_REPT;
 5424|  20.9k|        DirectiveKindMap[".irp"] = DK_IRP;
 5425|  20.9k|        DirectiveKindMap[".irpc"] = DK_IRPC;
 5426|  20.9k|        DirectiveKindMap[".endr"] = DK_ENDR;
 5427|  20.9k|        DirectiveKindMap[".bundle_align_mode"] = DK_BUNDLE_ALIGN_MODE;
 5428|  20.9k|        DirectiveKindMap[".bundle_lock"] = DK_BUNDLE_LOCK;
 5429|  20.9k|        DirectiveKindMap[".bundle_unlock"] = DK_BUNDLE_UNLOCK;
 5430|  20.9k|        DirectiveKindMap[".if"] = DK_IF;
 5431|  20.9k|        DirectiveKindMap[".ifeq"] = DK_IFEQ;
 5432|  20.9k|        DirectiveKindMap[".ifge"] = DK_IFGE;
 5433|  20.9k|        DirectiveKindMap[".ifgt"] = DK_IFGT;
 5434|  20.9k|        DirectiveKindMap[".ifle"] = DK_IFLE;
 5435|  20.9k|        DirectiveKindMap[".iflt"] = DK_IFLT;
 5436|  20.9k|        DirectiveKindMap[".ifne"] = DK_IFNE;
 5437|  20.9k|        DirectiveKindMap[".ifb"] = DK_IFB;
 5438|  20.9k|        DirectiveKindMap[".ifnb"] = DK_IFNB;
 5439|  20.9k|        DirectiveKindMap[".ifc"] = DK_IFC;
 5440|  20.9k|        DirectiveKindMap[".ifeqs"] = DK_IFEQS;
 5441|  20.9k|        DirectiveKindMap[".ifnc"] = DK_IFNC;
 5442|  20.9k|        DirectiveKindMap[".ifnes"] = DK_IFNES;
 5443|  20.9k|        DirectiveKindMap[".ifdef"] = DK_IFDEF;
 5444|  20.9k|        DirectiveKindMap[".ifndef"] = DK_IFNDEF;
 5445|  20.9k|        DirectiveKindMap[".ifnotdef"] = DK_IFNOTDEF;
 5446|  20.9k|        DirectiveKindMap[".elseif"] = DK_ELSEIF;
 5447|  20.9k|        DirectiveKindMap[".else"] = DK_ELSE;
 5448|  20.9k|        DirectiveKindMap[".end"] = DK_END;
 5449|  20.9k|        DirectiveKindMap[".endif"] = DK_ENDIF;
 5450|  20.9k|        DirectiveKindMap[".skip"] = DK_SKIP;
 5451|  20.9k|        DirectiveKindMap[".space"] = DK_SPACE;
 5452|  20.9k|        DirectiveKindMap[".file"] = DK_FILE;
 5453|  20.9k|        DirectiveKindMap[".line"] = DK_LINE;
 5454|  20.9k|        DirectiveKindMap[".loc"] = DK_LOC;
 5455|  20.9k|        DirectiveKindMap[".stabs"] = DK_STABS;
 5456|  20.9k|        DirectiveKindMap[".cv_file"] = DK_CV_FILE;
 5457|  20.9k|        DirectiveKindMap[".cv_loc"] = DK_CV_LOC;
 5458|  20.9k|        DirectiveKindMap[".cv_linetable"] = DK_CV_LINETABLE;
 5459|  20.9k|        DirectiveKindMap[".cv_inline_linetable"] = DK_CV_INLINE_LINETABLE;
 5460|  20.9k|        DirectiveKindMap[".cv_stringtable"] = DK_CV_STRINGTABLE;
 5461|  20.9k|        DirectiveKindMap[".cv_filechecksums"] = DK_CV_FILECHECKSUMS;
 5462|  20.9k|        DirectiveKindMap[".sleb128"] = DK_SLEB128;
 5463|  20.9k|        DirectiveKindMap[".uleb128"] = DK_ULEB128;
 5464|  20.9k|        DirectiveKindMap[".cfi_sections"] = DK_CFI_SECTIONS;
 5465|  20.9k|        DirectiveKindMap[".cfi_startproc"] = DK_CFI_STARTPROC;
 5466|  20.9k|        DirectiveKindMap[".cfi_endproc"] = DK_CFI_ENDPROC;
 5467|  20.9k|        DirectiveKindMap[".cfi_def_cfa"] = DK_CFI_DEF_CFA;
 5468|  20.9k|        DirectiveKindMap[".cfi_def_cfa_offset"] = DK_CFI_DEF_CFA_OFFSET;
 5469|  20.9k|        DirectiveKindMap[".cfi_adjust_cfa_offset"] = DK_CFI_ADJUST_CFA_OFFSET;
 5470|  20.9k|        DirectiveKindMap[".cfi_def_cfa_register"] = DK_CFI_DEF_CFA_REGISTER;
 5471|  20.9k|        DirectiveKindMap[".cfi_offset"] = DK_CFI_OFFSET;
 5472|  20.9k|        DirectiveKindMap[".cfi_rel_offset"] = DK_CFI_REL_OFFSET;
 5473|  20.9k|        DirectiveKindMap[".cfi_personality"] = DK_CFI_PERSONALITY;
 5474|  20.9k|        DirectiveKindMap[".cfi_lsda"] = DK_CFI_LSDA;
 5475|  20.9k|        DirectiveKindMap[".cfi_remember_state"] = DK_CFI_REMEMBER_STATE;
 5476|  20.9k|        DirectiveKindMap[".cfi_restore_state"] = DK_CFI_RESTORE_STATE;
 5477|  20.9k|        DirectiveKindMap[".cfi_same_value"] = DK_CFI_SAME_VALUE;
 5478|  20.9k|        DirectiveKindMap[".cfi_restore"] = DK_CFI_RESTORE;
 5479|  20.9k|        DirectiveKindMap[".cfi_escape"] = DK_CFI_ESCAPE;
 5480|  20.9k|        DirectiveKindMap[".cfi_signal_frame"] = DK_CFI_SIGNAL_FRAME;
 5481|  20.9k|        DirectiveKindMap[".cfi_undefined"] = DK_CFI_UNDEFINED;
 5482|  20.9k|        DirectiveKindMap[".cfi_register"] = DK_CFI_REGISTER;
 5483|  20.9k|        DirectiveKindMap[".cfi_window_save"] = DK_CFI_WINDOW_SAVE;
 5484|  20.9k|        DirectiveKindMap[".macros_on"] = DK_MACROS_ON;
 5485|  20.9k|        DirectiveKindMap[".macros_off"] = DK_MACROS_OFF;
 5486|  20.9k|        DirectiveKindMap[".macro"] = DK_MACRO;
 5487|  20.9k|        DirectiveKindMap[".exitm"] = DK_EXITM;
 5488|  20.9k|        DirectiveKindMap[".endm"] = DK_ENDM;
 5489|  20.9k|        DirectiveKindMap[".endmacro"] = DK_ENDMACRO;
 5490|  20.9k|        DirectiveKindMap[".purgem"] = DK_PURGEM;
 5491|  20.9k|        DirectiveKindMap[".err"] = DK_ERR;
 5492|  20.9k|        DirectiveKindMap[".error"] = DK_ERROR;
 5493|  20.9k|        DirectiveKindMap[".warning"] = DK_WARNING;
 5494|  20.9k|        DirectiveKindMap[".reloc"] = DK_RELOC;
 5495|  20.9k|    }
 5496|  20.9k|}

_ZN7llvm_ks21createDarwinAsmParserEv:
  964|  20.9k|MCAsmParserExtension *createDarwinAsmParser() {
  965|  20.9k|  return new DarwinAsmParser;
  966|  20.9k|}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParserC2Ev:
   47|  20.9k|  DarwinAsmParser() {}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser10InitializeERN7llvm_ks11MCAsmParserE:
   49|  20.9k|  void Initialize(MCAsmParser &Parser) override {
   50|       |    // Call the base implementation.
   51|  20.9k|    this->MCAsmParserExtension::Initialize(Parser);
   52|       |
   53|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveDesc>(".desc");
   54|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveIndirectSymbol>(
   55|  20.9k|      ".indirect_symbol");
   56|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveLsym>(".lsym");
   57|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveSubsectionsViaSymbols>(
   58|  20.9k|      ".subsections_via_symbols");
   59|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveDumpOrLoad>(".dump");
   60|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveDumpOrLoad>(".load");
   61|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveSection>(".section");
   62|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectivePushSection>(
   63|  20.9k|      ".pushsection");
   64|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectivePopSection>(
   65|  20.9k|      ".popsection");
   66|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectivePrevious>(".previous");
   67|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveSecureLogUnique>(
   68|  20.9k|      ".secure_log_unique");
   69|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveSecureLogReset>(
   70|  20.9k|      ".secure_log_reset");
   71|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveTBSS>(".tbss");
   72|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveZerofill>(".zerofill");
   73|       |
   74|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveDataRegion>(
   75|  20.9k|      ".data_region");
   76|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveDataRegionEnd>(
   77|  20.9k|      ".end_data_region");
   78|       |
   79|       |    // Special section directives.
   80|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveBss>(".bss");
   81|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveConst>(".const");
   82|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveConstData>(
   83|  20.9k|      ".const_data");
   84|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveConstructor>(
   85|  20.9k|      ".constructor");
   86|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveCString>(
   87|  20.9k|      ".cstring");
   88|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveData>(".data");
   89|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveDestructor>(
   90|  20.9k|      ".destructor");
   91|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveDyld>(".dyld");
   92|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveFVMLibInit0>(
   93|  20.9k|      ".fvmlib_init0");
   94|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveFVMLibInit1>(
   95|  20.9k|      ".fvmlib_init1");
   96|  20.9k|    addDirectiveHandler<
   97|  20.9k|      &DarwinAsmParser::parseSectionDirectiveLazySymbolPointers>(
   98|  20.9k|        ".lazy_symbol_pointer");
   99|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseDirectiveLinkerOption>(
  100|  20.9k|      ".linker_option");
  101|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveLiteral16>(
  102|  20.9k|      ".literal16");
  103|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveLiteral4>(
  104|  20.9k|      ".literal4");
  105|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveLiteral8>(
  106|  20.9k|      ".literal8");
  107|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveModInitFunc>(
  108|  20.9k|      ".mod_init_func");
  109|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveModTermFunc>(
  110|  20.9k|      ".mod_term_func");
  111|  20.9k|    addDirectiveHandler<
  112|  20.9k|      &DarwinAsmParser::parseSectionDirectiveNonLazySymbolPointers>(
  113|  20.9k|        ".non_lazy_symbol_pointer");
  114|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCCatClsMeth>(
  115|  20.9k|      ".objc_cat_cls_meth");
  116|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCCatInstMeth>(
  117|  20.9k|      ".objc_cat_inst_meth");
  118|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCCategory>(
  119|  20.9k|      ".objc_category");
  120|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCClass>(
  121|  20.9k|      ".objc_class");
  122|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCClassNames>(
  123|  20.9k|      ".objc_class_names");
  124|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCClassVars>(
  125|  20.9k|      ".objc_class_vars");
  126|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCClsMeth>(
  127|  20.9k|      ".objc_cls_meth");
  128|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCClsRefs>(
  129|  20.9k|      ".objc_cls_refs");
  130|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCInstMeth>(
  131|  20.9k|      ".objc_inst_meth");
  132|  20.9k|    addDirectiveHandler<
  133|  20.9k|      &DarwinAsmParser::parseSectionDirectiveObjCInstanceVars>(
  134|  20.9k|        ".objc_instance_vars");
  135|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCMessageRefs>(
  136|  20.9k|      ".objc_message_refs");
  137|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCMetaClass>(
  138|  20.9k|      ".objc_meta_class");
  139|  20.9k|    addDirectiveHandler<
  140|  20.9k|      &DarwinAsmParser::parseSectionDirectiveObjCMethVarNames>(
  141|  20.9k|        ".objc_meth_var_names");
  142|  20.9k|    addDirectiveHandler<
  143|  20.9k|      &DarwinAsmParser::parseSectionDirectiveObjCMethVarTypes>(
  144|  20.9k|        ".objc_meth_var_types");
  145|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCModuleInfo>(
  146|  20.9k|      ".objc_module_info");
  147|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCProtocol>(
  148|  20.9k|      ".objc_protocol");
  149|  20.9k|    addDirectiveHandler<
  150|  20.9k|      &DarwinAsmParser::parseSectionDirectiveObjCSelectorStrs>(
  151|  20.9k|        ".objc_selector_strs");
  152|  20.9k|    addDirectiveHandler<
  153|  20.9k|      &DarwinAsmParser::parseSectionDirectiveObjCStringObject>(
  154|  20.9k|        ".objc_string_object");
  155|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveObjCSymbols>(
  156|  20.9k|      ".objc_symbols");
  157|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectivePICSymbolStub>(
  158|  20.9k|      ".picsymbol_stub");
  159|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveStaticConst>(
  160|  20.9k|      ".static_const");
  161|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveStaticData>(
  162|  20.9k|      ".static_data");
  163|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveSymbolStub>(
  164|  20.9k|      ".symbol_stub");
  165|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveTData>(".tdata");
  166|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveText>(".text");
  167|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveThreadInitFunc>(
  168|  20.9k|      ".thread_init_func");
  169|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveTLV>(".tlv");
  170|       |
  171|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseSectionDirectiveIdent>(".ident");
  172|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseVersionMin>(
  173|  20.9k|      ".watchos_version_min");
  174|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseVersionMin>(".tvos_version_min");
  175|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseVersionMin>(".ios_version_min");
  176|  20.9k|    addDirectiveHandler<&DarwinAsmParser::parseVersionMin>(
  177|  20.9k|      ".macosx_version_min");
  178|       |
  179|  20.9k|    LastVersionMinDirective = SMLoc();
  180|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_18parseDirectiveDescEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser18parseDirectiveDescEN7llvm_ks9StringRefENS1_5SMLocE:
  413|     70|bool DarwinAsmParser::parseDirectiveDesc(StringRef, SMLoc) {
  414|     70|  StringRef Name;
  415|     70|  if (getParser().parseIdentifier(Name))
  ------------------
  |  Branch (415:7): [True: 55, False: 15]
  ------------------
  416|     55|    return TokError("expected identifier in directive");
  417|       |
  418|       |  // Handle the identifier as the key symbol.
  419|     15|  MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
  420|       |
  421|     15|  if (getLexer().isNot(AsmToken::Comma))
  ------------------
  |  Branch (421:7): [True: 1, False: 14]
  ------------------
  422|      1|    return TokError("unexpected token in '.desc' directive");
  423|     14|  Lex();
  424|       |
  425|     14|  int64_t DescValue;
  426|     14|  if (getParser().parseAbsoluteExpression(DescValue))
  ------------------
  |  Branch (426:7): [True: 13, False: 1]
  ------------------
  427|     13|    return true;
  428|       |
  429|      1|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (429:7): [True: 1, False: 0]
  ------------------
  430|      1|    return TokError("unexpected token in '.desc' directive");
  431|       |
  432|      0|  Lex();
  433|       |
  434|       |  // Set the n_desc field of this Symbol to this DescValue
  435|      0|  getStreamer().EmitSymbolDesc(Sym, DescValue);
  436|       |
  437|      0|  return false;
  438|      1|}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_28parseDirectiveIndirectSymbolEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_18parseDirectiveLsymEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser18parseDirectiveLsymEN7llvm_ks9StringRefENS1_5SMLocE:
  525|     57|bool DarwinAsmParser::parseDirectiveLsym(StringRef, SMLoc) {
  526|     57|  StringRef Name;
  527|     57|  if (getParser().parseIdentifier(Name))
  ------------------
  |  Branch (527:7): [True: 12, False: 45]
  ------------------
  528|     12|    return TokError("expected identifier in directive");
  529|       |
  530|       |  // Handle the identifier as the key symbol.
  531|     45|  MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
  532|       |
  533|     45|  if (getLexer().isNot(AsmToken::Comma))
  ------------------
  |  Branch (533:7): [True: 5, False: 40]
  ------------------
  534|      5|    return TokError("unexpected token in '.lsym' directive");
  535|     40|  Lex();
  536|       |
  537|     40|  const MCExpr *Value;
  538|     40|  if (getParser().parseExpression(Value))
  ------------------
  |  Branch (538:7): [True: 37, False: 3]
  ------------------
  539|     37|    return true;
  540|       |
  541|      3|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (541:7): [True: 1, False: 2]
  ------------------
  542|      1|    return TokError("unexpected token in '.lsym' directive");
  543|       |
  544|      2|  Lex();
  545|       |
  546|       |  // We don't currently support this directive.
  547|       |  //
  548|       |  // FIXME: Diagnostic location!
  549|      2|  (void) Sym;
  550|      2|  return TokError("directive '.lsym' is unsupported");
  551|      3|}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_35parseDirectiveSubsectionsViaSymbolsEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_24parseDirectiveDumpOrLoadEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  41.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  41.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  41.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  41.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  41.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser24parseDirectiveDumpOrLoadEN7llvm_ks9StringRefENS1_5SMLocE:
  476|    673|                                               SMLoc IDLoc) {
  477|    673|  bool IsDump = Directive == ".dump";
  478|    673|  if (getLexer().isNot(AsmToken::String))
  ------------------
  |  Branch (478:7): [True: 6, False: 667]
  ------------------
  479|      6|    return TokError("expected string in '.dump' or '.load' directive");
  480|       |
  481|    667|  Lex();
  482|       |
  483|    667|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (483:7): [True: 4, False: 663]
  ------------------
  484|      4|    return TokError("unexpected token in '.dump' or '.load' directive");
  485|       |
  486|    663|  Lex();
  487|       |
  488|       |  // FIXME: If/when .dump and .load are implemented they will be done in the
  489|       |  // the assembly parser and not have any need for an MCStreamer API.
  490|    663|  if (IsDump)
  ------------------
  |  Branch (490:7): [True: 396, False: 267]
  ------------------
  491|    396|    return Warning(IDLoc, "ignoring directive .dump for now");
  492|    267|  else
  493|    267|    return Warning(IDLoc, "ignoring directive .load for now");
  494|    663|}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_21parseDirectiveSectionEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser21parseDirectiveSectionEN7llvm_ks9StringRefENS1_5SMLocE:
  555|  1.57k|bool DarwinAsmParser::parseDirectiveSection(StringRef, SMLoc) {
  556|  1.57k|  SMLoc Loc = getLexer().getLoc();
  557|       |
  558|  1.57k|  StringRef SectionName;
  559|  1.57k|  if (getParser().parseIdentifier(SectionName))
  ------------------
  |  Branch (559:7): [True: 14, False: 1.55k]
  ------------------
  560|     14|    return Error(Loc, "expected identifier after '.section' directive");
  561|       |
  562|       |  // Verify there is a following comma.
  563|  1.55k|  if (!getLexer().is(AsmToken::Comma))
  ------------------
  |  Branch (563:7): [True: 4, False: 1.55k]
  ------------------
  564|      4|    return TokError("unexpected token in '.section' directive");
  565|       |
  566|  1.55k|  std::string SectionSpec = SectionName;
  567|  1.55k|  SectionSpec += ",";
  568|       |
  569|       |  // Add all the tokens until the end of the line, ParseSectionSpecifier will
  570|       |  // handle this.
  571|  1.55k|  StringRef EOL = getLexer().LexUntilEndOfStatement();
  572|  1.55k|  SectionSpec.append(EOL.begin(), EOL.end());
  573|       |
  574|  1.55k|  Lex();
  575|  1.55k|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (575:7): [True: 2, False: 1.55k]
  ------------------
  576|      2|    return TokError("unexpected token in '.section' directive");
  577|  1.55k|  Lex();
  578|       |
  579|       |
  580|  1.55k|  StringRef Segment, Section;
  581|  1.55k|  unsigned StubSize;
  582|  1.55k|  unsigned TAA;
  583|  1.55k|  bool TAAParsed;
  584|  1.55k|  std::string ErrorStr =
  585|  1.55k|    MCSectionMachO::ParseSectionSpecifier(SectionSpec, Segment, Section,
  586|  1.55k|                                          TAA, TAAParsed, StubSize);
  587|       |
  588|  1.55k|  if (!ErrorStr.empty())
  ------------------
  |  Branch (588:7): [True: 76, False: 1.47k]
  ------------------
  589|     76|    return Error(Loc, ErrorStr.c_str());
  590|       |
  591|       |  // Issue a warning if the target is not powerpc and Section is a *coal* section.
  592|  1.47k|  Triple TT = getParser().getContext().getObjectFileInfo()->getTargetTriple();
  593|  1.47k|  Triple::ArchType ArchTy = TT.getArch();
  594|       |
  595|  1.47k|  if (ArchTy != Triple::ppc && ArchTy != Triple::ppc64) {
  ------------------
  |  Branch (595:7): [True: 1.47k, False: 0]
  |  Branch (595:32): [True: 1.47k, False: 0]
  ------------------
  596|  1.47k|    StringRef NonCoalSection = StringSwitch<StringRef>(Section)
  597|  1.47k|                                   .Case("__textcoal_nt", "__text")
  598|  1.47k|                                   .Case("__const_coal", "__const")
  599|  1.47k|                                   .Case("__datacoal_nt", "__data")
  600|  1.47k|                                   .Default(Section);
  601|       |
  602|  1.47k|    if (!Section.equals(NonCoalSection)) {
  ------------------
  |  Branch (602:9): [True: 5, False: 1.46k]
  ------------------
  603|      5|      StringRef SectionVal(Loc.getPointer());
  604|      5|      size_t B = SectionVal.find(',') + 1, E = SectionVal.find(',', B);
  605|      5|      SMLoc BLoc = SMLoc::getFromPointer(SectionVal.data() + B);
  606|      5|      SMLoc ELoc = SMLoc::getFromPointer(SectionVal.data() + E);
  607|      5|      getParser().Warning(Loc, "section \"" + Section + "\" is deprecated",
  608|      5|                          SMRange(BLoc, ELoc));
  609|      5|      getParser().Note(Loc, "change section name to \"" + NonCoalSection +
  610|      5|                       "\"", SMRange(BLoc, ELoc));
  611|      5|    }
  612|  1.47k|  }
  613|       |
  614|       |  // FIXME: Arch specific.
  615|  1.47k|  bool isText = Segment == "__TEXT";  // FIXME: Hack.
  616|  1.47k|  getStreamer().SwitchSection(getContext().getMachOSection(
  617|  1.47k|      Segment, Section, TAA, StubSize,
  618|  1.47k|      isText ? SectionKind::getText() : SectionKind::getData()));
  ------------------
  |  Branch (618:7): [True: 0, False: 1.47k]
  ------------------
  619|  1.47k|  return false;
  620|  1.55k|}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_25parseDirectivePushSectionEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_24parseDirectivePopSectionEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_22parseDirectivePreviousEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_29parseDirectiveSecureLogUniqueEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_28parseDirectiveSecureLogResetEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_18parseDirectiveTBSSEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser18parseDirectiveTBSSEN7llvm_ks9StringRefENS1_5SMLocE:
  721|    902|bool DarwinAsmParser::parseDirectiveTBSS(StringRef, SMLoc) {
  722|    902|  SMLoc IDLoc = getLexer().getLoc();
  723|    902|  StringRef Name;
  724|    902|  if (getParser().parseIdentifier(Name))
  ------------------
  |  Branch (724:7): [True: 699, False: 203]
  ------------------
  725|    699|    return TokError("expected identifier in directive");
  726|       |
  727|       |  // Handle the identifier as the key symbol.
  728|    203|  MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
  729|       |
  730|    203|  if (getLexer().isNot(AsmToken::Comma))
  ------------------
  |  Branch (730:7): [True: 14, False: 189]
  ------------------
  731|     14|    return TokError("unexpected token in directive");
  732|    189|  Lex();
  733|       |
  734|    189|  int64_t Size;
  735|    189|  SMLoc SizeLoc = getLexer().getLoc();
  736|    189|  if (getParser().parseAbsoluteExpression(Size))
  ------------------
  |  Branch (736:7): [True: 66, False: 123]
  ------------------
  737|     66|    return true;
  738|       |
  739|    123|  int64_t Pow2Alignment = 0;
  740|    123|  SMLoc Pow2AlignmentLoc;
  741|    123|  if (getLexer().is(AsmToken::Comma)) {
  ------------------
  |  Branch (741:7): [True: 64, False: 59]
  ------------------
  742|     64|    Lex();
  743|     64|    Pow2AlignmentLoc = getLexer().getLoc();
  744|     64|    if (getParser().parseAbsoluteExpression(Pow2Alignment))
  ------------------
  |  Branch (744:9): [True: 6, False: 58]
  ------------------
  745|      6|      return true;
  746|     64|  }
  747|       |
  748|    117|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (748:7): [True: 1, False: 116]
  ------------------
  749|      1|    return TokError("unexpected token in '.tbss' directive");
  750|       |
  751|    116|  Lex();
  752|       |
  753|    116|  if (Size < 0)
  ------------------
  |  Branch (753:7): [True: 59, False: 57]
  ------------------
  754|     59|    return Error(SizeLoc, "invalid '.tbss' directive size, can't be less than"
  755|     59|                 "zero");
  756|       |
  757|       |  // FIXME: Diagnose overflow.
  758|     57|  if (Pow2Alignment < 0)
  ------------------
  |  Branch (758:7): [True: 57, False: 0]
  ------------------
  759|     57|    return Error(Pow2AlignmentLoc, "invalid '.tbss' alignment, can't be less"
  760|     57|                 "than zero");
  761|       |
  762|      0|  if (!Sym->isUndefined())
  ------------------
  |  Branch (762:7): [True: 0, False: 0]
  ------------------
  763|      0|    return Error(IDLoc, "invalid symbol redefinition");
  764|       |
  765|      0|  getStreamer().EmitTBSSSymbol(getContext().getMachOSection(
  766|      0|                                 "__DATA", "__thread_bss",
  767|      0|                                 MachO::S_THREAD_LOCAL_ZEROFILL,
  768|      0|                                 0, SectionKind::getThreadBSS()),
  769|      0|                               Sym, Size, 1 << Pow2Alignment);
  770|       |
  771|      0|  return false;
  772|      0|}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_22parseDirectiveZerofillEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_24parseDirectiveDataRegionEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_27parseDirectiveDataRegionEndEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_24parseSectionDirectiveBssEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser24parseSectionDirectiveBssEN7llvm_ks9StringRefENS1_5SMLocE:
  200|    416|  bool parseSectionDirectiveBss(StringRef, SMLoc) {
  201|    416|    return parseSectionSwitch("__DATA", "__bss");
  202|    416|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser18parseSectionSwitchEPKcS2_jjj:
  386|  1.26k|                                         unsigned StubSize) {
  387|  1.26k|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (387:7): [True: 13, False: 1.25k]
  ------------------
  388|     13|    return TokError("unexpected token in section switching directive");
  389|  1.25k|  Lex();
  390|       |
  391|       |  // FIXME: Arch specific.
  392|  1.25k|  bool isText = TAA & MachO::S_ATTR_PURE_INSTRUCTIONS;
  393|  1.25k|  getStreamer().SwitchSection(getContext().getMachOSection(
  394|  1.25k|      Segment, Section, TAA, StubSize,
  395|  1.25k|      isText ? SectionKind::getText() : SectionKind::getData()));
  ------------------
  |  Branch (395:7): [True: 0, False: 1.25k]
  ------------------
  396|       |
  397|       |  // Set the implicit alignment, if any.
  398|       |  //
  399|       |  // FIXME: This isn't really what 'as' does; I think it just uses the implicit
  400|       |  // alignment on the section (e.g., if one manually inserts bytes into the
  401|       |  // section, then just issuing the section switch directive will not realign
  402|       |  // the section. However, this is arguably more reasonable behavior, and there
  403|       |  // is no good reason for someone to intentionally emit incorrectly sized
  404|       |  // values into the implicitly aligned sections.
  405|  1.25k|  if (Align)
  ------------------
  |  Branch (405:7): [True: 0, False: 1.25k]
  ------------------
  406|      0|    getStreamer().EmitValueToAlignment(Align);
  407|       |
  408|  1.25k|  return false;
  409|  1.26k|}
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_26parseSectionDirectiveConstEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser26parseSectionDirectiveConstEN7llvm_ks9StringRefENS1_5SMLocE:
  204|    277|  bool parseSectionDirectiveConst(StringRef, SMLoc) {
  205|    277|    return parseSectionSwitch("__TEXT", "__const");
  206|    277|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_30parseSectionDirectiveConstDataEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveConstructorEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_28parseSectionDirectiveCStringEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_25parseSectionDirectiveDataEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser25parseSectionDirectiveDataEN7llvm_ks9StringRefENS1_5SMLocE:
  250|    556|  bool parseSectionDirectiveData(StringRef, SMLoc) {
  251|    556|    return parseSectionSwitch("__DATA", "__data");
  252|    556|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_31parseSectionDirectiveDestructorEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_25parseSectionDirectiveDyldEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser25parseSectionDirectiveDyldEN7llvm_ks9StringRefENS1_5SMLocE:
  264|     11|  bool parseSectionDirectiveDyld(StringRef, SMLoc) {
  265|     11|    return parseSectionSwitch("__DATA", "__dyld");
  266|     11|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveFVMLibInit0EN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveFVMLibInit1EN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_39parseSectionDirectiveLazySymbolPointersEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_26parseDirectiveLinkerOptionEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_30parseSectionDirectiveLiteral16EN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_29parseSectionDirectiveLiteral4EN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_29parseSectionDirectiveLiteral8EN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveModInitFuncEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveModTermFuncEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_42parseSectionDirectiveNonLazySymbolPointersEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_35parseSectionDirectiveObjCCatClsMethEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_36parseSectionDirectiveObjCCatInstMethEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_33parseSectionDirectiveObjCCategoryEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_30parseSectionDirectiveObjCClassEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_35parseSectionDirectiveObjCClassNamesEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_34parseSectionDirectiveObjCClassVarsEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveObjCClsMethEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveObjCClsRefsEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_33parseSectionDirectiveObjCInstMethEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_37parseSectionDirectiveObjCInstanceVarsEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_36parseSectionDirectiveObjCMessageRefsEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_34parseSectionDirectiveObjCMetaClassEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_37parseSectionDirectiveObjCMethVarNamesEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_37parseSectionDirectiveObjCMethVarTypesEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_35parseSectionDirectiveObjCModuleInfoEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_33parseSectionDirectiveObjCProtocolEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_37parseSectionDirectiveObjCSelectorStrsEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_37parseSectionDirectiveObjCStringObjectEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveObjCSymbolsEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_34parseSectionDirectivePICSymbolStubEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_32parseSectionDirectiveStaticConstEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_31parseSectionDirectiveStaticDataEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_31parseSectionDirectiveSymbolStubEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_26parseSectionDirectiveTDataEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser26parseSectionDirectiveTDataEN7llvm_ks9StringRefENS1_5SMLocE:
  356|      1|  bool parseSectionDirectiveTData(StringRef, SMLoc) {
  357|      1|    return parseSectionSwitch("__DATA", "__thread_data",
  358|      1|                              MachO::S_THREAD_LOCAL_REGULAR);
  359|      1|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_25parseSectionDirectiveTextEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser25parseSectionDirectiveTextEN7llvm_ks9StringRefENS1_5SMLocE:
  360|      1|  bool parseSectionDirectiveText(StringRef, SMLoc) {
  361|      1|    return parseSectionSwitch("__TEXT", "__text",
  362|      1|                              MachO::S_ATTR_PURE_INSTRUCTIONS);
  363|      1|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_35parseSectionDirectiveThreadInitFuncEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_24parseSectionDirectiveTLVEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser24parseSectionDirectiveTLVEN7llvm_ks9StringRefENS1_5SMLocE:
  364|      2|  bool parseSectionDirectiveTLV(StringRef, SMLoc) {
  365|      2|    return parseSectionSwitch("__DATA", "__thread_vars",
  366|      2|                              MachO::S_THREAD_LOCAL_VARIABLES);
  367|      2|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_26parseSectionDirectiveIdentEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  20.9k|  void addDirectiveHandler(StringRef Directive) {
   35|  20.9k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  20.9k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  20.9k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  20.9k|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser26parseSectionDirectiveIdentEN7llvm_ks9StringRefENS1_5SMLocE:
  368|    211|  bool parseSectionDirectiveIdent(StringRef, SMLoc) {
  369|       |    // Darwin silently ignores the .ident directive.
  370|    211|    getParser().eatToEndOfStatement();
  371|    211|    return false;
  372|    211|  }
DarwinAsmParser.cpp:_ZN12_GLOBAL__N_115DarwinAsmParser19addDirectiveHandlerIXadL_ZNS0_15parseVersionMinEN7llvm_ks9StringRefENS2_5SMLocEEEEEvS3_:
   34|  83.8k|  void addDirectiveHandler(StringRef Directive) {
   35|  83.8k|    MCAsmParser::ExtensionDirectiveHandler Handler = std::make_pair(
   36|  83.8k|        this, HandleDirective<DarwinAsmParser, HandlerMethod>);
   37|  83.8k|    getParser().addDirectiveHandler(Directive, Handler);
   38|  83.8k|  }

_ZN7llvm_ks10MCAsmLexerC2Ev:
   15|  20.9k|MCAsmLexer::MCAsmLexer() : TokStart(nullptr), SkipSpace(true) {
   16|  20.9k|  CurTok.emplace_back(AsmToken::Error, StringRef());
   17|  20.9k|}
_ZN7llvm_ks10MCAsmLexerD2Ev:
   19|  20.9k|MCAsmLexer::~MCAsmLexer() {
   20|  20.9k|}
_ZNK7llvm_ks10MCAsmLexer6getLocEv:
   22|  1.53M|SMLoc MCAsmLexer::getLoc() const {
   23|  1.53M|  return SMLoc::getFromPointer(TokStart);
   24|  1.53M|}
_ZNK7llvm_ks8AsmToken6getLocEv:
   26|  48.2M|SMLoc AsmToken::getLoc() const {
   27|  48.2M|  return SMLoc::getFromPointer(Str.data());
   28|  48.2M|}
_ZNK7llvm_ks8AsmToken9getEndLocEv:
   30|   527k|SMLoc AsmToken::getEndLoc() const {
   31|   527k|  return SMLoc::getFromPointer(Str.data() + Str.size());
   32|   527k|}

_ZN7llvm_ks11MCAsmParserC2Ev:
   20|  20.9k|MCAsmParser::MCAsmParser() : TargetParser(nullptr), KsError(0) {
   21|  20.9k|}
_ZN7llvm_ks11MCAsmParserD2Ev:
   23|  20.9k|MCAsmParser::~MCAsmParser() {
   24|  20.9k|}
_ZN7llvm_ks11MCAsmParser15setTargetParserERNS_17MCTargetAsmParserE:
   26|  20.9k|void MCAsmParser::setTargetParser(MCTargetAsmParser &P) {
   27|  20.9k|  assert(!TargetParser && "Target parser is already initialized!");
  ------------------
  |  Branch (27:3): [True: 20.9k, False: 0]
  |  Branch (27:3): [True: 20.9k, Folded]
  |  Branch (27:3): [True: 20.9k, False: 0]
  ------------------
   28|  20.9k|  TargetParser = &P;
   29|  20.9k|  TargetParser->Initialize(*this);
   30|  20.9k|}
_ZNK7llvm_ks11MCAsmParser6getTokEv:
   32|  50.5M|const AsmToken &MCAsmParser::getTok() const {
   33|  50.5M|  return getLexer().getTok();
   34|  50.5M|}
_ZN7llvm_ks11MCAsmParser8TokErrorERKNS_5TwineENS_8ArrayRefINS_7SMRangeEEE:
   36|    820|bool MCAsmParser::TokError(const Twine &Msg, ArrayRef<SMRange> Ranges) {
   37|    820|  Error(getLexer().getLoc(), Msg, Ranges);
   38|    820|  return true;
   39|    820|}
_ZN7llvm_ks11MCAsmParser15parseExpressionERPKNS_6MCExprE:
   41|   539k|bool MCAsmParser::parseExpression(const MCExpr *&Res) {
   42|   539k|  SMLoc L;
   43|   539k|  return parseExpression(Res, L);
   44|   539k|}

_ZN7llvm_ks20MCAsmParserExtensionC2Ev:
   14|  41.9k|  BracketExpressionsSupported(false) {
   15|  41.9k|}
_ZN7llvm_ks20MCAsmParserExtensionD2Ev:
   17|  41.9k|MCAsmParserExtension::~MCAsmParserExtension() {
   18|  41.9k|}
_ZN7llvm_ks20MCAsmParserExtension10InitializeERNS_11MCAsmParserE:
   20|  62.9k|void MCAsmParserExtension::Initialize(MCAsmParser &Parser) {
   21|  62.9k|  this->Parser = &Parser;
   22|  62.9k|}

_ZN7llvm_ks17MCTargetAsmParserC2ERKNS_15MCTargetOptionsERKNS_15MCSubtargetInfoE:
   16|  20.9k|  : AvailableFeatures(0),AvailableFeaturesFB(), ParsingInlineAsm(false), MCOptions(MCOptions),
   17|  20.9k|    STI(&STI)
   18|  20.9k|{
   19|  20.9k|}
_ZN7llvm_ks17MCTargetAsmParserD2Ev:
   21|  20.9k|MCTargetAsmParser::~MCTargetAsmParser() {
   22|  20.9k|}
_ZN7llvm_ks17MCTargetAsmParser7copySTIEv:
   24|  27.6k|MCSubtargetInfo &MCTargetAsmParser::copySTI() {
   25|  27.6k|  MCSubtargetInfo &STICopy = getContext().getSubtargetCopy(getSTI());
   26|  27.6k|  STI = &STICopy;
   27|  27.6k|  return STICopy;
   28|  27.6k|}
_ZNK7llvm_ks17MCTargetAsmParser6getSTIEv:
   30|   805k|const MCSubtargetInfo &MCTargetAsmParser::getSTI() const {
   31|   805k|  return *STI;
   32|   805k|}

_ZNK7llvm_ks14MCRegisterInfo19getMatchingSuperRegEjjPKNS_15MCRegisterClassE:
   19|     45|                                             const MCRegisterClass *RC) const {
   20|     46|  for (MCSuperRegIterator Supers(Reg, this); Supers.isValid(); ++Supers)
  ------------------
  |  Branch (20:46): [True: 44, False: 2]
  ------------------
   21|     44|    if (RC->contains(*Supers) && Reg == getSubReg(*Supers, SubIdx))
  ------------------
  |  Branch (21:9): [True: 43, False: 1]
  |  Branch (21:34): [True: 43, False: 0]
  ------------------
   22|     43|      return *Supers;
   23|      2|  return 0;
   24|     45|}
_ZNK7llvm_ks14MCRegisterInfo9getSubRegEjj:
   26|     70|unsigned MCRegisterInfo::getSubReg(unsigned Reg, unsigned Idx) const {
   27|     70|  assert(Idx && Idx < getNumSubRegIndices() &&
  ------------------
  |  Branch (27:3): [True: 70, False: 0]
  |  Branch (27:3): [True: 70, False: 0]
  |  Branch (27:3): [True: 70, Folded]
  |  Branch (27:3): [True: 70, False: 0]
  ------------------
   28|     70|         "This is not a subregister index");
   29|       |  // Get a pointer to the corresponding SubRegIndices list. This list has the
   30|       |  // name of each sub-register in the same order as MCSubRegIterator.
   31|     70|  const uint16_t *SRI = SubRegIndices + get(Reg).SubRegIndices;
   32|     97|  for (MCSubRegIterator Subs(Reg, this); Subs.isValid(); ++Subs, ++SRI)
  ------------------
  |  Branch (32:42): [True: 97, False: 0]
  ------------------
   33|     97|    if (*SRI == Idx)
  ------------------
  |  Branch (33:9): [True: 70, False: 27]
  ------------------
   34|     70|      return *Subs;
   35|      0|  return 0;
   36|     70|}

_ZN7llvm_ks9MCSectionC2ENS0_14SectionVariantENS_11SectionKindEPNS_8MCSymbolE:
   23|   910k|    : Begin(Begin), BundleGroupBeforeFirstInst(false), HasInstructions(false),
   24|   910k|      IsRegistered(false), DummyFragment(this), Variant(V), Kind(K) {}
_ZNK7llvm_ks9MCSection8hasEndedEv:
   32|  21.8k|bool MCSection::hasEnded() const { return End && End->isInSection(); }
  ------------------
  |  Branch (32:43): [True: 0, False: 21.8k]
  |  Branch (32:50): [True: 0, False: 0]
  ------------------
_ZN7llvm_ks9MCSectionD2Ev:
   34|   910k|MCSection::~MCSection() {
   35|   910k|}
_ZN7llvm_ks9MCSection27getSubsectionInsertionPointEj:
   57|  21.8k|MCSection::getSubsectionInsertionPoint(unsigned Subsection) {
   58|  21.8k|  if (Subsection == 0 && SubsectionFragmentMap.empty())
  ------------------
  |  Branch (58:7): [True: 21.8k, False: 0]
  |  Branch (58:26): [True: 21.8k, False: 0]
  ------------------
   59|  21.8k|    return end();
   60|       |
   61|      0|  SmallVectorImpl<std::pair<unsigned, MCFragment *>>::iterator MI =
   62|      0|      std::lower_bound(SubsectionFragmentMap.begin(),
   63|      0|                       SubsectionFragmentMap.end(),
   64|      0|                       std::make_pair(Subsection, (MCFragment *)nullptr));
   65|      0|  bool ExactMatch = false;
   66|      0|  if (MI != SubsectionFragmentMap.end()) {
  ------------------
  |  Branch (66:7): [True: 0, False: 0]
  ------------------
   67|      0|    ExactMatch = MI->first == Subsection;
   68|      0|    if (ExactMatch)
  ------------------
  |  Branch (68:9): [True: 0, False: 0]
  ------------------
   69|      0|      ++MI;
   70|      0|  }
   71|      0|  iterator IP;
   72|      0|  if (MI == SubsectionFragmentMap.end())
  ------------------
  |  Branch (72:7): [True: 0, False: 0]
  ------------------
   73|      0|    IP = end();
   74|      0|  else
   75|      0|    IP = MI->second->getIterator();
   76|      0|  if (!ExactMatch && Subsection != 0) {
  ------------------
  |  Branch (76:7): [True: 0, False: 0]
  |  Branch (76:22): [True: 0, False: 0]
  ------------------
   77|       |    // The GNU as documentation claims that subsections have an alignment of 4,
   78|       |    // although this appears not to be the case.
   79|      0|    MCFragment *F = new MCDataFragment();
   80|      0|    SubsectionFragmentMap.insert(MI, std::make_pair(Subsection, F));
   81|      0|    getFragmentList().insert(IP, F);
   82|      0|    F->setParent(this);
   83|      0|  }
   84|       |
   85|      0|  return IP;
   86|  21.8k|}
_ZN7llvm_ks9MCSection5beginEv:
  103|  45.8k|MCSection::iterator MCSection::begin() { return Fragments.begin(); }
_ZN7llvm_ks9MCSection3endEv:
  105|   115k|MCSection::iterator MCSection::end() { return Fragments.end(); }
_ZN7llvm_ks9MCSection6rbeginEv:
  107|  9.30k|MCSection::reverse_iterator MCSection::rbegin() { return Fragments.rbegin(); }

_ZN7llvm_ks12MCSectionELFD2Ev:
   20|   910k|MCSectionELF::~MCSectionELF() {} // anchor.
_ZNK7llvm_ks12MCSectionELF12UseCodeAlignEv:
  162|  9.38k|bool MCSectionELF::UseCodeAlign() const {
  163|  9.38k|  return getFlags() & ELF::SHF_EXECINSTR;
  164|  9.38k|}
_ZNK7llvm_ks12MCSectionELF16isVirtualSectionEv:
  166|  26.2k|bool MCSectionELF::isVirtualSection() const {
  167|  26.2k|  return getType() == ELF::SHT_NOBITS;
  168|  26.2k|}

_ZN7llvm_ks14MCSectionMachOC2ENS_9StringRefES1_jjNS_11SectionKindEPNS_8MCSymbolE:
   75|    373|    : MCSection(SV_MachO, K, Begin), TypeAndAttributes(TAA),
   76|    373|      Reserved2(reserved2) {
   77|    373|  assert(Segment.size() <= 16 && Section.size() <= 16 &&
  ------------------
  |  Branch (77:3): [True: 373, False: 0]
  |  Branch (77:3): [True: 373, False: 0]
  |  Branch (77:3): [True: 373, Folded]
  |  Branch (77:3): [True: 373, False: 0]
  ------------------
   78|    373|         "Segment or section string too long");
   79|  6.34k|  for (unsigned i = 0; i != 16; ++i) {
  ------------------
  |  Branch (79:24): [True: 5.96k, False: 373]
  ------------------
   80|  5.96k|    if (i < Segment.size())
  ------------------
  |  Branch (80:9): [True: 1.37k, False: 4.59k]
  ------------------
   81|  1.37k|      SegmentName[i] = Segment[i];
   82|  4.59k|    else
   83|  4.59k|      SegmentName[i] = 0;
   84|       |
   85|  5.96k|    if (i < Section.size())
  ------------------
  |  Branch (85:9): [True: 2.81k, False: 3.15k]
  ------------------
   86|  2.81k|      SectionName[i] = Section[i];
   87|  3.15k|    else
   88|  3.15k|      SectionName[i] = 0;
   89|  5.96k|  }
   90|    373|}
_ZNK7llvm_ks14MCSectionMachO12UseCodeAlignEv:
  156|    174|bool MCSectionMachO::UseCodeAlign() const {
  157|    174|  return hasAttribute(MachO::S_ATTR_PURE_INSTRUCTIONS);
  158|    174|}
_ZNK7llvm_ks14MCSectionMachO16isVirtualSectionEv:
  160|    866|bool MCSectionMachO::isVirtualSection() const {
  161|    866|  return (getType() == MachO::S_ZEROFILL ||
  ------------------
  |  Branch (161:11): [True: 0, False: 866]
  ------------------
  162|    866|          getType() == MachO::S_GB_ZEROFILL ||
  ------------------
  |  Branch (162:11): [True: 0, False: 866]
  ------------------
  163|    866|          getType() == MachO::S_THREAD_LOCAL_ZEROFILL);
  ------------------
  |  Branch (163:11): [True: 0, False: 866]
  ------------------
  164|    866|}
_ZN7llvm_ks14MCSectionMachO21ParseSectionSpecifierENS_9StringRefERS1_S2_RjRbS3_:
  176|  1.55k|                                                  unsigned  &StubSize) { // Out.
  177|  1.55k|  TAAParsed = false;
  178|       |
  179|  1.55k|  SmallVector<StringRef, 5> SplitSpec;
  180|  1.55k|  Spec.split(SplitSpec, ',');
  181|       |  // Remove leading and trailing whitespace.
  182|  1.55k|  auto GetEmptyOrTrim = [&SplitSpec](size_t Idx) -> StringRef {
  183|  1.55k|    return SplitSpec.size() > Idx ? SplitSpec[Idx].trim() : StringRef();
  184|  1.55k|  };
  185|  1.55k|  Segment = GetEmptyOrTrim(0);
  186|  1.55k|  Section = GetEmptyOrTrim(1);
  187|  1.55k|  StringRef SectionType = GetEmptyOrTrim(2);
  188|  1.55k|  StringRef Attrs = GetEmptyOrTrim(3);
  189|  1.55k|  StringRef StubSizeStr = GetEmptyOrTrim(4);
  190|       |
  191|       |  // Verify that the segment is present and not too long.
  192|  1.55k|  if (Segment.empty() || Segment.size() > 16)
  ------------------
  |  Branch (192:7): [True: 1, False: 1.54k]
  |  Branch (192:26): [True: 3, False: 1.54k]
  ------------------
  193|      4|    return "mach-o section specifier requires a segment whose length is "
  194|      4|           "between 1 and 16 characters";
  195|       |
  196|       |  // Verify that the section is present and not too long.
  197|  1.54k|  if (Section.empty())
  ------------------
  |  Branch (197:7): [True: 21, False: 1.52k]
  ------------------
  198|     21|    return "mach-o section specifier requires a segment and section "
  199|     21|           "separated by a comma";
  200|       |
  201|  1.52k|  if (Section.size() > 16)
  ------------------
  |  Branch (201:7): [True: 10, False: 1.51k]
  ------------------
  202|     10|    return "mach-o section specifier requires a section whose length is "
  203|     10|           "between 1 and 16 characters";
  204|       |
  205|       |  // If there is no comma after the section, we're done.
  206|  1.51k|  TAA = 0;
  207|  1.51k|  StubSize = 0;
  208|  1.51k|  if (SectionType.empty())
  ------------------
  |  Branch (208:7): [True: 1.47k, False: 43]
  ------------------
  209|  1.47k|    return "";
  210|       |
  211|       |  // Figure out which section type it is.
  212|     43|  auto TypeDescriptor = std::find_if(
  213|     43|      std::begin(SectionTypeDescriptors), std::end(SectionTypeDescriptors),
  214|     43|      [&](decltype(*SectionTypeDescriptors) &Descriptor) {
  215|     43|        return Descriptor.AssemblerName &&
  216|     43|               SectionType == Descriptor.AssemblerName;
  217|     43|      });
  218|       |
  219|       |  // If we didn't find the section type, reject it.
  220|     43|  if (TypeDescriptor == std::end(SectionTypeDescriptors))
  ------------------
  |  Branch (220:7): [True: 24, False: 19]
  ------------------
  221|     24|    return "mach-o section specifier uses an unknown section type";
  222|       |
  223|       |  // Remember the TypeID.
  224|     19|  TAA = TypeDescriptor - std::begin(SectionTypeDescriptors);
  225|     19|  TAAParsed = true;
  226|       |
  227|       |  // If we have no comma after the section type, there are no attributes.
  228|     19|  if (Attrs.empty()) {
  ------------------
  |  Branch (228:7): [True: 1, False: 18]
  ------------------
  229|       |    // S_SYMBOL_STUBS always require a symbol stub size specifier.
  230|      1|    if (TAA == MachO::S_SYMBOL_STUBS)
  ------------------
  |  Branch (230:9): [True: 0, False: 1]
  ------------------
  231|      0|      return "mach-o section specifier of type 'symbol_stubs' requires a size "
  232|      0|             "specifier";
  233|      1|    return "";
  234|      1|  }
  235|       |
  236|       |  // The attribute list is a '+' separated list of attributes.
  237|     18|  SmallVector<StringRef, 1> SectionAttrs;
  238|     18|  Attrs.split(SectionAttrs, '+', /*MaxSplit=*/-1, /*KeepEmpty=*/false);
  239|       |
  240|     18|  for (StringRef &SectionAttr : SectionAttrs) {
  ------------------
  |  Branch (240:31): [True: 16, False: 2]
  ------------------
  241|     16|    auto AttrDescriptorI = std::find_if(
  242|     16|        std::begin(SectionAttrDescriptors), std::end(SectionAttrDescriptors),
  243|     16|        [&](decltype(*SectionAttrDescriptors) &Descriptor) {
  244|     16|          return Descriptor.AssemblerName &&
  245|     16|                 SectionAttr.trim() == Descriptor.AssemblerName;
  246|     16|        });
  247|     16|    if (AttrDescriptorI == std::end(SectionAttrDescriptors))
  ------------------
  |  Branch (247:9): [True: 16, False: 0]
  ------------------
  248|     16|      return "mach-o section specifier has invalid attribute";
  249|       |
  250|      0|    TAA |= AttrDescriptorI->AttrFlag;
  251|      0|  }
  252|       |
  253|       |  // Okay, we've parsed the section attributes, see if we have a stub size spec.
  254|      2|  if (StubSizeStr.empty()) {
  ------------------
  |  Branch (254:7): [True: 1, False: 1]
  ------------------
  255|       |    // S_SYMBOL_STUBS always require a symbol stub size specifier.
  256|      1|    if (TAA == MachO::S_SYMBOL_STUBS)
  ------------------
  |  Branch (256:9): [True: 0, False: 1]
  ------------------
  257|      0|      return "mach-o section specifier of type 'symbol_stubs' requires a size "
  258|      0|      "specifier";
  259|      1|    return "";
  260|      1|  }
  261|       |
  262|       |  // If we have a stub size spec, we must have a sectiontype of S_SYMBOL_STUBS.
  263|      1|  if ((TAA & MachO::SECTION_TYPE) != MachO::S_SYMBOL_STUBS)
  ------------------
  |  Branch (263:7): [True: 1, False: 0]
  ------------------
  264|      1|    return "mach-o section specifier cannot have a stub size specified because "
  265|      1|           "it does not have type 'symbol_stubs'";
  266|       |
  267|       |  // Convert the stub size from a string to an integer.
  268|      0|  if (StubSizeStr.getAsInteger(0, StubSize))
  ------------------
  |  Branch (268:7): [True: 0, False: 0]
  ------------------
  269|      0|    return "mach-o section specifier has a malformed stub size";
  270|       |
  271|      0|  return "";
  272|      0|}
MCSectionMachO.cpp:_ZZN7llvm_ks14MCSectionMachO21ParseSectionSpecifierENS_9StringRefERS1_S2_RjRbS3_ENK3$_0clEm:
  182|  7.75k|  auto GetEmptyOrTrim = [&SplitSpec](size_t Idx) -> StringRef {
  183|  7.75k|    return SplitSpec.size() > Idx ? SplitSpec[Idx].trim() : StringRef();
  ------------------
  |  Branch (183:12): [True: 6.85k, False: 894]
  ------------------
  184|  7.75k|  };
MCSectionMachO.cpp:_ZZN7llvm_ks14MCSectionMachO21ParseSectionSpecifierENS_9StringRefERS1_S2_RjRbS3_ENK3$_1clERK3$_0:
  214|    593|      [&](decltype(*SectionTypeDescriptors) &Descriptor) {
  215|    593|        return Descriptor.AssemblerName &&
  ------------------
  |  Branch (215:16): [True: 488, False: 105]
  ------------------
  216|    488|               SectionType == Descriptor.AssemblerName;
  ------------------
  |  Branch (216:16): [True: 19, False: 469]
  ------------------
  217|    593|      });
MCSectionMachO.cpp:_ZZN7llvm_ks14MCSectionMachO21ParseSectionSpecifierENS_9StringRefERS1_S2_RjRbS3_ENK3$_2clERK3$_1:
  243|    176|        [&](decltype(*SectionAttrDescriptors) &Descriptor) {
  244|    176|          return Descriptor.AssemblerName &&
  ------------------
  |  Branch (244:18): [True: 128, False: 48]
  ------------------
  245|    128|                 SectionAttr.trim() == Descriptor.AssemblerName;
  ------------------
  |  Branch (245:18): [True: 0, False: 128]
  ------------------
  246|    176|        });

_ZN7llvm_ks16MCTargetStreamerD2Ev:
   33|  20.9k|MCTargetStreamer::~MCTargetStreamer() {}
_ZN7llvm_ks16MCTargetStreamerC2ERNS_10MCStreamerE:
   35|  20.9k|MCTargetStreamer::MCTargetStreamer(MCStreamer &S) : Streamer(S) {
   36|  20.9k|  S.setTargetStreamer(this);
   37|  20.9k|}
_ZN7llvm_ks16MCTargetStreamer9emitLabelEPNS_8MCSymbolE:
   39|   139k|void MCTargetStreamer::emitLabel(MCSymbol *Symbol) {}
_ZN7llvm_ks16MCTargetStreamer14emitAssignmentEPNS_8MCSymbolEPKNS_6MCExprE:
   43|  98.2k|void MCTargetStreamer::emitAssignment(MCSymbol *Symbol, const MCExpr *Value) {}
_ZN7llvm_ks10MCStreamerC2ERNS_9MCContextE:
   46|  20.9k|    : Context(Ctx), CurrentWinFrameInfo(nullptr) {
   47|  20.9k|  SectionStack.push_back(std::pair<MCSectionSubPair, MCSectionSubPair>());
   48|  20.9k|}
_ZN7llvm_ks10MCStreamerD2Ev:
   50|  20.9k|MCStreamer::~MCStreamer() {
   51|  20.9k|  for (unsigned i = 0; i < getNumWinFrameInfos(); ++i)
  ------------------
  |  Branch (51:24): [True: 0, False: 20.9k]
  ------------------
   52|      0|    delete WinFrameInfos[i];
   53|  20.9k|}
_ZN7llvm_ks10MCStreamer12EmitIntValueEmjRb:
   82|  76.7M|{
   83|  76.7M|  Error = false;
   84|       |  //assert(1 <= Size && Size <= 8 && "Invalid size");
   85|  76.7M|  if (1 > Size || Size > 8) {
  ------------------
  |  Branch (85:7): [True: 93, False: 76.7M]
  |  Branch (85:19): [True: 0, False: 76.7M]
  ------------------
   86|     93|      Error = true;
   87|     93|      return;
   88|     93|  }
   89|       |  //assert((isUIntN(8 * Size, Value) || isIntN(8 * Size, Value)) &&
   90|       |  //       "Invalid size");
   91|  76.7M|  if (!isUIntN(8 * Size, Value) && !isIntN(8 * Size, Value)) {
  ------------------
  |  Branch (91:7): [True: 13.9k, False: 76.7M]
  |  Branch (91:36): [True: 8.67k, False: 5.25k]
  ------------------
   92|  8.67k|      Error = true;
   93|  8.67k|      return;
   94|  8.67k|  }
   95|  76.7M|  char buf[8];
   96|  76.7M|  const bool isLittleEndian = Context.getAsmInfo()->isLittleEndian();
   97|   188M|  for (unsigned i = 0; i != Size; ++i) {
  ------------------
  |  Branch (97:24): [True: 111M, False: 76.7M]
  ------------------
   98|   111M|    unsigned index = isLittleEndian ? i : (Size - i - 1);
  ------------------
  |  Branch (98:22): [True: 111M, False: 0]
  ------------------
   99|   111M|    buf[i] = uint8_t(Value >> (index * 8));
  100|   111M|  }
  101|  76.7M|  EmitBytes(StringRef(buf, Size));
  102|  76.7M|}
_ZN7llvm_ks10MCStreamer9EmitValueEPKNS_6MCExprEjNS_5SMLocE:
  122|   148k|void MCStreamer::EmitValue(const MCExpr *Value, unsigned Size, SMLoc Loc) {
  123|   148k|  EmitValueImpl(Value, Size, Loc);
  124|   148k|}
_ZN7llvm_ks10MCStreamer9EmitZerosEm:
  154|     45|void MCStreamer::EmitZeros(uint64_t NumBytes) {
  155|     45|  EmitFill(NumBytes, 0);
  156|     45|}
_ZN7llvm_ks10MCStreamer22EmitDwarfFileDirectiveEjNS_9StringRefES1_j:
  160|     49|                                            StringRef Filename, unsigned CUID) {
  161|     49|  return getContext().getDwarfFile(Directory, Filename, FileNo, CUID);
  162|     49|}
_ZN7llvm_ks10MCStreamer9EmitLabelEPNS_8MCSymbolE:
  232|   139k|void MCStreamer::EmitLabel(MCSymbol *Symbol) {
  233|   139k|  assert(!Symbol->isVariable() && "Cannot emit a variable symbol!");
  ------------------
  |  Branch (233:3): [True: 139k, False: 0]
  |  Branch (233:3): [True: 139k, Folded]
  |  Branch (233:3): [True: 139k, False: 0]
  ------------------
  234|   139k|  assert(getCurrentSection().first && "Cannot emit before setting section!");
  ------------------
  |  Branch (234:3): [True: 139k, False: 0]
  |  Branch (234:3): [True: 139k, Folded]
  |  Branch (234:3): [True: 139k, False: 0]
  ------------------
  235|   139k|  assert(!Symbol->getFragment() && "Unexpected fragment on symbol data!");
  ------------------
  |  Branch (235:3): [True: 139k, False: 0]
  |  Branch (235:3): [True: 139k, Folded]
  |  Branch (235:3): [True: 139k, False: 0]
  ------------------
  236|   139k|  Symbol->setFragment(&getCurrentSectionOnly()->getDummyFragment());
  237|       |
  238|   139k|  MCTargetStreamer *TS = getTargetStreamer();
  239|   139k|  if (TS)
  ------------------
  |  Branch (239:7): [True: 139k, False: 0]
  ------------------
  240|   139k|    TS->emitLabel(Symbol);
  241|   139k|}
_ZN7llvm_ks10MCStreamer6FinishEv:
  625|  8.98k|unsigned int MCStreamer::Finish() {
  626|  8.98k|  if (!DwarfFrameInfos.empty() && !DwarfFrameInfos.back().End)
  ------------------
  |  Branch (626:7): [True: 0, False: 8.98k]
  |  Branch (626:35): [True: 0, False: 0]
  ------------------
  627|      0|    report_fatal_error("Unfinished frame!");
  628|       |
  629|  8.98k|  MCTargetStreamer *TS = getTargetStreamer();
  630|  8.98k|  if (TS)
  ------------------
  |  Branch (630:7): [True: 8.98k, False: 0]
  ------------------
  631|  8.98k|    TS->finish();
  632|       |
  633|  8.98k|  return FinishImpl();
  634|  8.98k|}
_ZN7llvm_ks10MCStreamer14EmitAssignmentEPNS_8MCSymbolEPKNS_6MCExprE:
  636|  99.0k|bool MCStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
  637|  99.0k|  visitUsedExpr(*Value);
  638|  99.0k|  bool valid;
  639|  99.0k|  Symbol->setVariableValue(Value, valid);
  640|  99.0k|  if (!valid)
  ------------------
  |  Branch (640:7): [True: 845, False: 98.2k]
  ------------------
  641|    845|      return false;
  642|       |
  643|  98.2k|  MCTargetStreamer *TS = getTargetStreamer();
  644|  98.2k|  if (TS)
  ------------------
  |  Branch (644:7): [True: 98.2k, False: 0]
  ------------------
  645|  98.2k|    TS->emitAssignment(Symbol, Value);
  646|       |
  647|  98.2k|  return true;
  648|  99.0k|}
_ZN7llvm_ks10MCStreamer13visitUsedExprERKNS_6MCExprE:
  653|   573k|void MCStreamer::visitUsedExpr(const MCExpr &Expr) {
  654|   573k|  switch (Expr.getKind()) {
  ------------------
  |  Branch (654:11): [True: 573k, False: 0]
  ------------------
  655|      0|  case MCExpr::Target:
  ------------------
  |  Branch (655:3): [True: 0, False: 573k]
  ------------------
  656|      0|    cast<MCTargetExpr>(Expr).visitUsedExpr(*this);
  657|      0|    break;
  658|       |
  659|  90.2k|  case MCExpr::Constant:
  ------------------
  |  Branch (659:3): [True: 90.2k, False: 483k]
  ------------------
  660|  90.2k|    break;
  661|       |
  662|   125k|  case MCExpr::Binary: {
  ------------------
  |  Branch (662:3): [True: 125k, False: 448k]
  ------------------
  663|   125k|    const MCBinaryExpr &BE = cast<MCBinaryExpr>(Expr);
  664|   125k|    visitUsedExpr(*BE.getLHS());
  665|   125k|    visitUsedExpr(*BE.getRHS());
  666|   125k|    break;
  667|      0|  }
  668|       |
  669|   295k|  case MCExpr::SymbolRef:
  ------------------
  |  Branch (669:3): [True: 295k, False: 277k]
  ------------------
  670|   295k|    visitUsedSymbol(cast<MCSymbolRefExpr>(Expr).getSymbol());
  671|   295k|    break;
  672|       |
  673|  62.4k|  case MCExpr::Unary:
  ------------------
  |  Branch (673:3): [True: 62.4k, False: 511k]
  ------------------
  674|  62.4k|    visitUsedExpr(*cast<MCUnaryExpr>(Expr).getSubExpr());
  675|  62.4k|    break;
  676|   573k|  }
  677|   573k|}
_ZN7llvm_ks10MCStreamer15EmitInstructionERNS_6MCInstERKNS_15MCSubtargetInfoERj:
  681|  29.3k|                                 unsigned int &KsError) {
  682|       |  // Scan for values.
  683|   150k|  for (unsigned i = Inst.getNumOperands(); i--;)
  ------------------
  |  Branch (683:44): [True: 121k, False: 29.3k]
  ------------------
  684|   121k|    if (Inst.getOperand(i).isExpr())
  ------------------
  |  Branch (684:9): [True: 13.0k, False: 107k]
  ------------------
  685|  13.0k|      visitUsedExpr(*Inst.getOperand(i).getExpr());
  686|  29.3k|}
_ZN7llvm_ks10MCStreamer13EmitValueImplEPKNS_6MCExprEjNS_5SMLocE:
  723|   148k|void MCStreamer::EmitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc) {
  724|   148k|  visitUsedExpr(*Value);
  725|   148k|}
_ZN7llvm_ks10MCStreamer13SwitchSectionEPNS_9MCSectionEPKNS_6MCExprE:
  739|  23.8k|void MCStreamer::SwitchSection(MCSection *Section, const MCExpr *Subsection) {
  740|  23.8k|  assert(Section && "Cannot switch to a null section!");
  ------------------
  |  Branch (740:3): [True: 23.8k, False: 0]
  |  Branch (740:3): [True: 23.8k, Folded]
  |  Branch (740:3): [True: 23.8k, False: 0]
  ------------------
  741|  23.8k|  MCSectionSubPair curSection = SectionStack.back().first;
  742|  23.8k|  SectionStack.back().second = curSection;
  743|  23.8k|  if (MCSectionSubPair(Section, Subsection) != curSection) {
  ------------------
  |  Branch (743:7): [True: 21.8k, False: 2.02k]
  ------------------
  744|  21.8k|    ChangeSection(Section, Subsection);
  745|  21.8k|    SectionStack.back().first = MCSectionSubPair(Section, Subsection);
  746|  21.8k|    assert(!Section->hasEnded() && "Section already ended");
  ------------------
  |  Branch (746:5): [True: 21.8k, False: 0]
  |  Branch (746:5): [True: 21.8k, Folded]
  |  Branch (746:5): [True: 21.8k, False: 0]
  ------------------
  747|  21.8k|    MCSymbol *Sym = Section->getBeginSymbol();
  748|  21.8k|    if (Sym && !Sym->isInSection())
  ------------------
  |  Branch (748:9): [True: 21.8k, False: 0]
  |  Branch (748:16): [True: 21.3k, False: 468]
  ------------------
  749|  21.3k|      EmitLabel(Sym);
  750|  21.8k|  }
  751|  23.8k|}

_ZN7llvm_ks15MCSubtargetInfo19InitMCProcessorInfoENS_9StringRefES1_:
   26|  41.9k|void MCSubtargetInfo::InitMCProcessorInfo(StringRef CPU, StringRef FS) {
   27|  41.9k|  FeatureBits = getFeatures(CPU, FS, ProcDesc, ProcFeatures);
   28|  41.9k|  if (!CPU.empty() && ProcSchedModels)
  ------------------
  |  Branch (28:7): [True: 0, False: 41.9k]
  |  Branch (28:23): [True: 0, False: 0]
  ------------------
   29|      0|      CPUSchedModel = &getSchedModelForCPU(CPU);
   30|  41.9k|}
_ZN7llvm_ks15MCSubtargetInfo18setDefaultFeaturesENS_9StringRefES1_:
   32|  23.0k|void MCSubtargetInfo::setDefaultFeatures(StringRef CPU, StringRef FS) {
   33|  23.0k|  FeatureBits = getFeatures(CPU, FS, ProcDesc, ProcFeatures);
   34|  23.0k|}
_ZN7llvm_ks15MCSubtargetInfoC2ERKNS_6TripleENS_9StringRefES4_NS_8ArrayRefINS_18SubtargetFeatureKVEEES7_PKNS_15SubtargetInfoKVE:
   40|  41.9k|    : TargetTriple(TT), CPU(C), ProcFeatures(PF), ProcDesc(PD),
   41|  41.9k|    ProcSchedModels(ProcSched) {
   42|  41.9k|  InitMCProcessorInfo(CPU, FS);
   43|  41.9k|}
_ZN7llvm_ks15MCSubtargetInfo13ToggleFeatureEm:
   47|  1.61k|FeatureBitset MCSubtargetInfo::ToggleFeature(uint64_t FB) {
   48|  1.61k|  FeatureBits.flip(FB);
   49|  1.61k|  return FeatureBits;
   50|  1.61k|}
_ZN7llvm_ks15MCSubtargetInfo13ToggleFeatureERKNS_13FeatureBitsetE:
   52|    107|FeatureBitset MCSubtargetInfo::ToggleFeature(const FeatureBitset &FB) {
   53|    107|  FeatureBits ^= FB;
   54|    107|  return FeatureBits;
   55|    107|}
_ZN7llvm_ks15MCSubtargetInfo16ApplyFeatureFlagENS_9StringRefE:
   64|  20.9k|FeatureBitset MCSubtargetInfo::ApplyFeatureFlag(StringRef FS) {
   65|  20.9k|  SubtargetFeatures::ApplyFeatureFlag(FeatureBits, FS, ProcFeatures);
   66|  20.9k|  return FeatureBits;
   67|  20.9k|}
MCSubtargetInfo.cpp:_ZL11getFeaturesN7llvm_ks9StringRefES0_NS_8ArrayRefINS_18SubtargetFeatureKVEEES3_:
   21|  64.9k|                                 ArrayRef<SubtargetFeatureKV> ProcFeatures) {
   22|  64.9k|  SubtargetFeatures Features(FS);
   23|  64.9k|  return Features.getFeatureBits(CPU, ProcDesc, ProcFeatures);
   24|  64.9k|}

_ZN7llvm_ks8MCSymbolnwEmPKNS_14StringMapEntryIbEERNS_9MCContextE:
   26|   365k|                             MCContext &Ctx) {
   27|       |  // We may need more space for a Name to account for alignment.  So allocate
   28|       |  // space for the storage type and not the name pointer.
   29|   365k|  size_t Size = s + (Name ? sizeof(NameEntryStorageTy) : 0);
  ------------------
  |  Branch (29:22): [True: 365k, False: 0]
  ------------------
   30|       |
   31|       |  // For safety, ensure that the alignment of a pointer is enough for an
   32|       |  // MCSymbol.  This also ensures we don't need padding between the name and
   33|       |  // symbol.
   34|   365k|  static_assert((unsigned)AlignOf<MCSymbol>::Alignment <=
   35|   365k|                AlignOf<NameEntryStorageTy>::Alignment,
   36|   365k|                "Bad alignment of MCSymbol");
   37|   365k|  void *Storage = Ctx.allocate(Size, alignOf<NameEntryStorageTy>());
   38|   365k|  NameEntryStorageTy *Start = static_cast<NameEntryStorageTy*>(Storage);
   39|   365k|  NameEntryStorageTy *End = Start + (Name ? 1 : 0);
  ------------------
  |  Branch (39:38): [True: 365k, False: 0]
  ------------------
   40|   365k|  return End;
   41|   365k|}
_ZN7llvm_ks8MCSymbol16setVariableValueEPKNS_6MCExprERb:
   43|  99.0k|void MCSymbol::setVariableValue(const MCExpr *Value, bool &valid) {
   44|  99.0k|  valid = true;
   45|       |  //assert(!IsUsed && "Cannot set a variable that has already been used.");
   46|       |  //assert(Value && "Invalid variable value!");
   47|       |  //assert((SymbolContents == SymContentsUnset ||
   48|       |  //        SymbolContents == SymContentsVariable) &&
   49|       |  //       "Cannot give common/offset symbol a variable value");
   50|  99.0k|  if (IsUsed || !Value || (SymbolContents != SymContentsUnset &&
  ------------------
  |  Branch (50:7): [True: 778, False: 98.2k]
  |  Branch (50:17): [True: 0, False: 98.2k]
  |  Branch (50:28): [True: 96.3k, False: 1.91k]
  ------------------
   51|  96.3k|              SymbolContents != SymContentsVariable)) {
  ------------------
  |  Branch (51:15): [True: 67, False: 96.3k]
  ------------------
   52|    845|      valid = false;
   53|    845|      return;
   54|    845|  }
   55|  98.2k|  this->Value = Value;
   56|  98.2k|  SymbolContents = SymContentsVariable;
   57|  98.2k|  setUndefined();
   58|  98.2k|}

_ZNK7llvm_ks11MCSymbolELF10setBindingEj:
   43|    452|void MCSymbolELF::setBinding(unsigned Binding) const {
   44|    452|  setIsBindingSet();
   45|    452|  unsigned Val;
   46|    452|  switch (Binding) {
   47|      0|  default:
  ------------------
  |  Branch (47:3): [True: 0, False: 452]
  ------------------
   48|      0|    llvm_unreachable("Unsupported Binding");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
   49|     86|  case ELF::STB_LOCAL:
  ------------------
  |  Branch (49:3): [True: 86, False: 366]
  ------------------
   50|     86|    Val = 0;
   51|     86|    break;
   52|    366|  case ELF::STB_GLOBAL:
  ------------------
  |  Branch (52:3): [True: 366, False: 86]
  ------------------
   53|    366|    Val = 1;
   54|    366|    break;
   55|      0|  case ELF::STB_WEAK:
  ------------------
  |  Branch (55:3): [True: 0, False: 452]
  ------------------
   56|      0|    Val = 2;
   57|      0|    break;
   58|      0|  case ELF::STB_GNU_UNIQUE:
  ------------------
  |  Branch (58:3): [True: 0, False: 452]
  ------------------
   59|      0|    Val = 3;
   60|      0|    break;
   61|    452|  }
   62|    452|  uint32_t OtherFlags = getFlags() & ~(0x3 << ELF_STB_Shift);
   63|    452|  setFlags(OtherFlags | (Val << ELF_STB_Shift));
   64|    452|}
_ZNK7llvm_ks11MCSymbolELF10getBindingEv:
   66|  17.8k|unsigned MCSymbolELF::getBinding() const {
   67|  17.8k|  if (isBindingSet()) {
  ------------------
  |  Branch (67:7): [True: 771, False: 17.0k]
  ------------------
   68|    771|    uint32_t Val = (getFlags() & (0x3 << ELF_STB_Shift)) >> ELF_STB_Shift;
   69|    771|    switch (Val) {
   70|      0|    default:
  ------------------
  |  Branch (70:5): [True: 0, False: 771]
  ------------------
   71|      0|      llvm_unreachable("Invalid value");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
   72|     45|    case 0:
  ------------------
  |  Branch (72:5): [True: 45, False: 726]
  ------------------
   73|     45|      return ELF::STB_LOCAL;
   74|    726|    case 1:
  ------------------
  |  Branch (74:5): [True: 726, False: 45]
  ------------------
   75|    726|      return ELF::STB_GLOBAL;
   76|      0|    case 2:
  ------------------
  |  Branch (76:5): [True: 0, False: 771]
  ------------------
   77|      0|      return ELF::STB_WEAK;
   78|      0|    case 3:
  ------------------
  |  Branch (78:5): [True: 0, False: 771]
  ------------------
   79|      0|      return ELF::STB_GNU_UNIQUE;
   80|    771|    }
   81|    771|  }
   82|       |
   83|  17.0k|  if (isDefined())
  ------------------
  |  Branch (83:7): [True: 16.9k, False: 156]
  ------------------
   84|  16.9k|    return ELF::STB_LOCAL;
   85|    156|  if (isUsedInReloc())
  ------------------
  |  Branch (85:7): [True: 0, False: 156]
  ------------------
   86|      0|    return ELF::STB_GLOBAL;
   87|    156|  if (isWeakrefUsedInReloc())
  ------------------
  |  Branch (87:7): [True: 0, False: 156]
  ------------------
   88|      0|    return ELF::STB_WEAK;
   89|    156|  if (isSignature())
  ------------------
  |  Branch (89:7): [True: 0, False: 156]
  ------------------
   90|      0|    return ELF::STB_LOCAL;
   91|    156|  return ELF::STB_GLOBAL;
   92|    156|}
_ZNK7llvm_ks11MCSymbolELF7setTypeEj:
   94|  22.7k|void MCSymbolELF::setType(unsigned Type) const {
   95|  22.7k|  unsigned Val;
   96|  22.7k|  switch (Type) {
   97|      0|  default:
  ------------------
  |  Branch (97:3): [True: 0, False: 22.7k]
  ------------------
   98|      0|    llvm_unreachable("Unsupported Binding");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
   99|      0|  case ELF::STT_NOTYPE:
  ------------------
  |  Branch (99:3): [True: 0, False: 22.7k]
  ------------------
  100|      0|    Val = 0;
  101|      0|    break;
  102|    771|  case ELF::STT_OBJECT:
  ------------------
  |  Branch (102:3): [True: 771, False: 21.9k]
  ------------------
  103|    771|    Val = 1;
  104|    771|    break;
  105|      0|  case ELF::STT_FUNC:
  ------------------
  |  Branch (105:3): [True: 0, False: 22.7k]
  ------------------
  106|      0|    Val = 2;
  107|      0|    break;
  108|  21.3k|  case ELF::STT_SECTION:
  ------------------
  |  Branch (108:3): [True: 21.3k, False: 1.33k]
  ------------------
  109|  21.3k|    Val = 3;
  110|  21.3k|    break;
  111|      0|  case ELF::STT_COMMON:
  ------------------
  |  Branch (111:3): [True: 0, False: 22.7k]
  ------------------
  112|      0|    Val = 4;
  113|      0|    break;
  114|    561|  case ELF::STT_TLS:
  ------------------
  |  Branch (114:3): [True: 561, False: 22.1k]
  ------------------
  115|    561|    Val = 5;
  116|    561|    break;
  117|      0|  case ELF::STT_GNU_IFUNC:
  ------------------
  |  Branch (117:3): [True: 0, False: 22.7k]
  ------------------
  118|      0|    Val = 6;
  119|      0|    break;
  120|  22.7k|  }
  121|  22.7k|  uint32_t OtherFlags = getFlags() & ~(0x7 << ELF_STT_Shift);
  122|  22.7k|  setFlags(OtherFlags | (Val << ELF_STT_Shift));
  123|  22.7k|}
_ZNK7llvm_ks11MCSymbolELF7getTypeEv:
  125|  3.57k|unsigned MCSymbolELF::getType() const {
  126|  3.57k|  uint32_t Val = (getFlags() & (0x7 << ELF_STT_Shift)) >> ELF_STT_Shift;
  127|  3.57k|  switch (Val) {
  128|      0|  default:
  ------------------
  |  Branch (128:3): [True: 0, False: 3.57k]
  ------------------
  129|      0|    llvm_unreachable("Invalid value");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  130|  3.52k|  case 0:
  ------------------
  |  Branch (130:3): [True: 3.52k, False: 45]
  ------------------
  131|  3.52k|    return ELF::STT_NOTYPE;
  132|      0|  case 1:
  ------------------
  |  Branch (132:3): [True: 0, False: 3.57k]
  ------------------
  133|      0|    return ELF::STT_OBJECT;
  134|      0|  case 2:
  ------------------
  |  Branch (134:3): [True: 0, False: 3.57k]
  ------------------
  135|      0|    return ELF::STT_FUNC;
  136|      3|  case 3:
  ------------------
  |  Branch (136:3): [True: 3, False: 3.56k]
  ------------------
  137|      3|    return ELF::STT_SECTION;
  138|      0|  case 4:
  ------------------
  |  Branch (138:3): [True: 0, False: 3.57k]
  ------------------
  139|      0|    return ELF::STT_COMMON;
  140|     42|  case 5:
  ------------------
  |  Branch (140:3): [True: 42, False: 3.52k]
  ------------------
  141|     42|    return ELF::STT_TLS;
  142|      0|  case 6:
  ------------------
  |  Branch (142:3): [True: 0, False: 3.57k]
  ------------------
  143|      0|    return ELF::STT_GNU_IFUNC;
  144|  3.57k|  }
  145|  3.57k|}
_ZNK7llvm_ks11MCSymbolELF20isWeakrefUsedInRelocEv:
  180|    156|bool MCSymbolELF::isWeakrefUsedInReloc() const {
  181|    156|  return getFlags() & (0x1 << ELF_WeakrefUsedInReloc_Shift);
  182|    156|}
_ZNK7llvm_ks11MCSymbolELF11isSignatureEv:
  189|    156|bool MCSymbolELF::isSignature() const {
  190|    156|  return getFlags() & (0x1 << ELF_IsSignature_Shift);
  191|    156|}
_ZNK7llvm_ks11MCSymbolELF15setIsBindingSetEv:
  193|    452|void MCSymbolELF::setIsBindingSet() const {
  194|    452|  uint32_t OtherFlags = getFlags() & ~(0x1 << ELF_BindingSet_Shift);
  195|    452|  setFlags(OtherFlags | (1 << ELF_BindingSet_Shift));
  196|    452|}
_ZNK7llvm_ks11MCSymbolELF12isBindingSetEv:
  198|  18.6k|bool MCSymbolELF::isBindingSet() const {
  199|  18.6k|  return getFlags() & (0x1 << ELF_BindingSet_Shift);
  200|  18.6k|}

_ZN7llvm_ks15MCTargetOptionsC2Ev:
   16|  41.9k|    : MCRelaxAll(false),
   17|  41.9k|      MCFatalWarnings(false), MCNoWarn(false),
   18|  41.9k|      DwarfVersion(0), ABIName() {}

_ZNK7llvm_ks7MCValue16getAccessVariantEv:
   45|  14.5k|MCSymbolRefExpr::VariantKind MCValue::getAccessVariant() const {
   46|  14.5k|  const MCSymbolRefExpr *B = getSymB();
   47|  14.5k|  if (B) {
  ------------------
  |  Branch (47:7): [True: 833, False: 13.7k]
  ------------------
   48|    833|    if (B->getKind() != MCSymbolRefExpr::VK_None)
  ------------------
  |  Branch (48:9): [True: 0, False: 833]
  ------------------
   49|      0|      llvm_unreachable("unsupported");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
   50|    833|  }
   51|       |
   52|  14.5k|  const MCSymbolRefExpr *A = getSymA();
   53|  14.5k|  if (!A)
  ------------------
  |  Branch (53:7): [True: 1.25k, False: 13.3k]
  ------------------
   54|  1.25k|    return MCSymbolRefExpr::VK_None;
   55|       |
   56|  13.3k|  MCSymbolRefExpr::VariantKind Kind = A->getKind();
   57|  13.3k|  if (Kind == MCSymbolRefExpr::VK_WEAKREF)
  ------------------
  |  Branch (57:7): [True: 0, False: 13.3k]
  ------------------
   58|      0|    return MCSymbolRefExpr::VK_None;
   59|  13.3k|  return Kind;
   60|  13.3k|}

_ZN7llvm_ks18StringTableBuilderC2ENS0_4KindE:
   19|  20.9k|StringTableBuilder::StringTableBuilder(Kind K) : K(K) {
   20|       |  // Account for leading bytes in table so that offsets returned from add are
   21|       |  // correct.
   22|  20.9k|  switch (K) {
  ------------------
  |  Branch (22:11): [True: 20.9k, False: 0]
  ------------------
   23|      0|  case RAW:
  ------------------
  |  Branch (23:3): [True: 0, False: 20.9k]
  ------------------
   24|      0|    Size = 0;
   25|      0|    break;
   26|      0|  case MachO:
  ------------------
  |  Branch (26:3): [True: 0, False: 20.9k]
  ------------------
   27|  20.9k|  case ELF:
  ------------------
  |  Branch (27:3): [True: 20.9k, False: 0]
  ------------------
   28|  20.9k|    Size = 1;
   29|  20.9k|    break;
   30|      0|  case WinCOFF:
  ------------------
  |  Branch (30:3): [True: 0, False: 20.9k]
  ------------------
   31|      0|    Size = 4;
   32|      0|    break;
   33|  20.9k|  }
   34|  20.9k|}
_ZN7llvm_ks18StringTableBuilder3addENS_9StringRefE:
  177|  16.5k|size_t StringTableBuilder::add(StringRef S) {
  178|  16.5k|  assert(!isFinalized());
  ------------------
  |  Branch (178:3): [True: 16.5k, False: 0]
  ------------------
  179|  16.5k|  auto P = StringIndexMap.insert(std::make_pair(S, Size));
  180|  16.5k|  if (P.second)
  ------------------
  |  Branch (180:7): [True: 16.4k, False: 132]
  ------------------
  181|  16.4k|    Size += S.size() + (K != RAW);
  182|  16.5k|  return P.first->second;
  183|  16.5k|}

_ZN7llvm_ks17SubtargetFeaturesC2ENS_9StringRefE:
  120|  64.9k|SubtargetFeatures::SubtargetFeatures(StringRef Initial) {
  121|       |  // Break up string into separate features
  122|  64.9k|  Split(Features, Initial);
  123|  64.9k|}
_ZN7llvm_ks17SubtargetFeatures16ApplyFeatureFlagERNS_13FeatureBitsetENS_9StringRefENS_8ArrayRefINS_18SubtargetFeatureKVEEE:
  191|  85.8k|                                    ArrayRef<SubtargetFeatureKV> FeatureTable) {
  192|       |
  193|  85.8k|  assert(hasFlag(Feature));
  ------------------
  |  Branch (193:3): [True: 85.8k, False: 0]
  ------------------
  194|       |
  195|       |  // Find feature in table.
  196|  85.8k|  const SubtargetFeatureKV *FeatureEntry =
  197|  85.8k|      Find(StripFlag(Feature), FeatureTable);
  198|       |  // If there is a match
  199|  85.8k|  if (FeatureEntry) {
  ------------------
  |  Branch (199:7): [True: 85.8k, False: 0]
  ------------------
  200|       |    // Enable/disable feature in bits
  201|  85.8k|    if (isEnabled(Feature)) {
  ------------------
  |  Branch (201:9): [True: 69.0k, False: 16.8k]
  ------------------
  202|  69.0k|      Bits |= FeatureEntry->Value;
  203|       |
  204|       |      // For each feature that this implies, set it.
  205|  69.0k|      SetImpliedBits(Bits, FeatureEntry, FeatureTable);
  206|  69.0k|    } else {
  207|  16.8k|      Bits &= ~FeatureEntry->Value;
  208|       |
  209|       |      // For each feature that implies this, clear it.
  210|  16.8k|      ClearImpliedBits(Bits, FeatureEntry, FeatureTable);
  211|  16.8k|    }
  212|  85.8k|  } else {
  213|      0|    errs() << "'" << Feature
  214|      0|           << "' is not a recognized feature for this target"
  215|      0|           << " (ignoring feature)\n";
  216|      0|  }
  217|  85.8k|}
_ZN7llvm_ks17SubtargetFeatures14getFeatureBitsENS_9StringRefENS_8ArrayRefINS_18SubtargetFeatureKVEEES4_:
  225|  64.9k|                                  ArrayRef<SubtargetFeatureKV> FeatureTable) {
  226|       |
  227|  64.9k|  if (CPUTable.empty() || FeatureTable.empty())
  ------------------
  |  Branch (227:7): [True: 0, False: 64.9k]
  |  Branch (227:27): [True: 0, False: 64.9k]
  ------------------
  228|      0|    return FeatureBitset();
  229|       |
  230|  64.9k|#ifndef NDEBUG
  231|  64.9k|  assert(std::is_sorted(std::begin(CPUTable), std::end(CPUTable)) &&
  ------------------
  |  Branch (231:3): [True: 64.9k, False: 0]
  |  Branch (231:3): [True: 64.9k, Folded]
  |  Branch (231:3): [True: 64.9k, False: 0]
  ------------------
  232|  64.9k|         "CPU table is not sorted");
  233|  64.9k|  assert(std::is_sorted(std::begin(FeatureTable), std::end(FeatureTable)) &&
  ------------------
  |  Branch (233:3): [True: 64.9k, False: 0]
  |  Branch (233:3): [True: 64.9k, Folded]
  |  Branch (233:3): [True: 64.9k, False: 0]
  ------------------
  234|  64.9k|         "CPU features table is not sorted");
  235|  64.9k|#endif
  236|       |  // Resulting bits
  237|  64.9k|  FeatureBitset Bits;
  238|       |
  239|       |  // Check if help is needed
  240|  64.9k|  if (CPU == "help")
  ------------------
  |  Branch (240:7): [True: 0, False: 64.9k]
  ------------------
  241|      0|    Help(CPUTable, FeatureTable);
  242|       |
  243|       |  // Find CPU entry if CPU name is specified.
  244|  64.9k|  else if (!CPU.empty()) {
  ------------------
  |  Branch (244:12): [True: 93, False: 64.9k]
  ------------------
  245|     93|    const SubtargetFeatureKV *CPUEntry = Find(CPU, CPUTable);
  246|       |
  247|       |    // If there is a match
  248|     93|    if (CPUEntry) {
  ------------------
  |  Branch (248:9): [True: 93, False: 0]
  ------------------
  249|       |      // Set base feature bits
  250|     93|      Bits = CPUEntry->Value;
  251|       |
  252|       |      // Set the feature implied by this CPU feature, if any.
  253|  9.67k|      for (auto &FE : FeatureTable) {
  ------------------
  |  Branch (253:21): [True: 9.67k, False: 93]
  ------------------
  254|  9.67k|        if ((CPUEntry->Value & FE.Value).any())
  ------------------
  |  Branch (254:13): [True: 655, False: 9.01k]
  ------------------
  255|    655|          SetImpliedBits(Bits, &FE, FeatureTable);
  256|  9.67k|      }
  257|     93|    } else {
  258|      0|      errs() << "'" << CPU
  259|      0|             << "' is not a recognized processor for this target"
  260|      0|             << " (ignoring processor)\n";
  261|      0|    }
  262|     93|  }
  263|       |
  264|       |  // Iterate through each feature
  265|  64.9k|  for (auto &Feature : Features) {
  ------------------
  |  Branch (265:22): [True: 64.9k, False: 64.9k]
  ------------------
  266|       |    // Check for help
  267|  64.9k|    if (Feature == "+help")
  ------------------
  |  Branch (267:9): [True: 0, False: 64.9k]
  ------------------
  268|      0|      Help(CPUTable, FeatureTable);
  269|       |
  270|  64.9k|    ApplyFeatureFlag(Bits, Feature, FeatureTable);
  271|  64.9k|  }
  272|       |
  273|  64.9k|  return Bits;
  274|  64.9k|}
SubtargetFeature.cpp:_ZL7hasFlagN7llvm_ks9StringRefE:
   31|   171k|static inline bool hasFlag(StringRef Feature) {
   32|   171k|  assert(!Feature.empty() && "Empty string");
  ------------------
  |  Branch (32:3): [True: 171k, False: 0]
  |  Branch (32:3): [True: 171k, Folded]
  |  Branch (32:3): [True: 171k, False: 0]
  ------------------
   33|       |  // Get first character
   34|   171k|  char Ch = Feature[0];
   35|       |  // Check if first character is '+' or '-' flag
   36|   171k|  return Ch == '+' || Ch =='-';
  ------------------
  |  Branch (36:10): [True: 138k, False: 33.6k]
  |  Branch (36:23): [True: 33.6k, False: 0]
  ------------------
   37|   171k|}
SubtargetFeature.cpp:_ZL5SplitRNSt3__16vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEEEN7llvm_ks9StringRefE:
   57|  64.9k|static void Split(std::vector<std::string> &V, StringRef S) {
   58|  64.9k|  SmallVector<StringRef, 3> Tmp;
   59|  64.9k|  S.split(Tmp, ',', -1, false /* KeepEmpty */);
   60|  64.9k|  V.assign(Tmp.begin(), Tmp.end());
   61|  64.9k|}
SubtargetFeature.cpp:_ZL4FindN7llvm_ks9StringRefENS_8ArrayRefINS_18SubtargetFeatureKVEEE:
   74|  85.9k|                                      ArrayRef<SubtargetFeatureKV> A) {
   75|       |  // Binary search the array
   76|  85.9k|  auto F = std::lower_bound(A.begin(), A.end(), S);
   77|       |  // If not found then return NULL
   78|  85.9k|  if (F == A.end() || StringRef(F->Key) != S) return nullptr;
  ------------------
  |  Branch (78:7): [True: 0, False: 85.9k]
  |  Branch (78:7): [True: 0, False: 85.9k]
  |  Branch (78:23): [True: 0, False: 85.9k]
  ------------------
   79|       |  // Return the found array item
   80|  85.9k|  return F;
   81|  85.9k|}
SubtargetFeature.cpp:_ZL9StripFlagN7llvm_ks9StringRefE:
   41|  85.8k|static inline std::string StripFlag(StringRef Feature) {
   42|  85.8k|  return hasFlag(Feature) ? Feature.substr(1) : Feature;
  ------------------
  |  Branch (42:10): [True: 85.8k, False: 0]
  ------------------
   43|  85.8k|}
SubtargetFeature.cpp:_ZL16ClearImpliedBitsRN7llvm_ks13FeatureBitsetEPKNS_18SubtargetFeatureKVENS_8ArrayRefIS2_EE:
  152|  94.8k|                      ArrayRef<SubtargetFeatureKV> FeatureTable) {
  153|  9.86M|  for (auto &FE : FeatureTable) {
  ------------------
  |  Branch (153:17): [True: 9.86M, False: 94.8k]
  ------------------
  154|  9.86M|    if (FeatureEntry->Value == FE.Value) continue;
  ------------------
  |  Branch (154:9): [True: 94.8k, False: 9.76M]
  ------------------
  155|       |
  156|  9.76M|    if ((FE.Implies & FeatureEntry->Value).any()) {
  ------------------
  |  Branch (156:9): [True: 77.9k, False: 9.68M]
  ------------------
  157|  77.9k|      Bits &= ~FE.Value;
  158|  77.9k|      ClearImpliedBits(Bits, &FE, FeatureTable);
  159|  77.9k|    }
  160|  9.76M|  }
  161|  94.8k|}
SubtargetFeature.cpp:_ZL14SetImpliedBitsRN7llvm_ks13FeatureBitsetEPKNS_18SubtargetFeatureKVENS_8ArrayRefIS2_EE:
  135|  1.31M|                    ArrayRef<SubtargetFeatureKV> FeatureTable) {
  136|   137M|  for (auto &FE : FeatureTable) {
  ------------------
  |  Branch (136:17): [True: 137M, False: 1.31M]
  ------------------
  137|   137M|    if (FeatureEntry->Value == FE.Value) continue;
  ------------------
  |  Branch (137:9): [True: 1.31M, False: 135M]
  ------------------
  138|       |
  139|   135M|    if ((FeatureEntry->Implies & FE.Value).any()) {
  ------------------
  |  Branch (139:9): [True: 1.24M, False: 134M]
  ------------------
  140|  1.24M|      Bits |= FE.Value;
  141|  1.24M|      SetImpliedBits(Bits, &FE, FeatureTable);
  142|  1.24M|    }
  143|   135M|  }
  144|  1.31M|}
SubtargetFeature.cpp:_ZL9isEnabledN7llvm_ks9StringRefE:
   47|  85.8k|static inline bool isEnabled(StringRef Feature) {
   48|  85.8k|  assert(!Feature.empty() && "Empty string");
  ------------------
  |  Branch (48:3): [True: 85.8k, False: 0]
  |  Branch (48:3): [True: 85.8k, Folded]
  |  Branch (48:3): [True: 85.8k, False: 0]
  ------------------
   49|       |  // Get first character
   50|  85.8k|  char Ch = Feature[0];
   51|       |  // Check if first character is '+' for enabled
   52|  85.8k|  return Ch == '+';
   53|  85.8k|}

_Z16interpretDecimalPKcS0_P11decimalInfo:
  277|  63.5k|{
  278|  63.5k|  StringRef::iterator dot = end;
  279|  63.5k|  StringRef::iterator p = skipLeadingZeroesAndAnyDot (begin, end, &dot);
  280|  63.5k|  APFloat::opStatus fp;
  281|       |
  282|  63.5k|  D->firstSigDigit = p;
  283|  63.5k|  D->exponent = 0;
  284|  63.5k|  D->normalizedExponent = 0;
  285|       |
  286|   319k|  for (; p != end; ++p) {
  ------------------
  |  Branch (286:10): [True: 261k, False: 58.0k]
  ------------------
  287|   261k|    if (*p == '.') {
  ------------------
  |  Branch (287:9): [True: 0, False: 261k]
  ------------------
  288|       |      //assert(dot == end && "String contains multiple dots");
  289|      0|      if (dot != end)
  ------------------
  |  Branch (289:11): [True: 0, False: 0]
  ------------------
  290|      0|          return APFloat::opInvalidOp;
  291|      0|      dot = p++;
  292|      0|      if (p == end)
  ------------------
  |  Branch (292:11): [True: 0, False: 0]
  ------------------
  293|      0|        break;
  294|      0|    }
  295|   261k|    if (decDigitValue(*p) >= 10U)
  ------------------
  |  Branch (295:9): [True: 5.51k, False: 256k]
  ------------------
  296|  5.51k|      break;
  297|   261k|  }
  298|       |
  299|  63.5k|  if (p != end) {
  ------------------
  |  Branch (299:7): [True: 5.51k, False: 58.0k]
  ------------------
  300|       |    //assert((*p == 'e' || *p == 'E') && "Invalid character in significand");
  301|  5.51k|    if (*p != 'e' && *p != 'E')
  ------------------
  |  Branch (301:9): [True: 3.83k, False: 1.67k]
  |  Branch (301:22): [True: 2, False: 3.82k]
  ------------------
  302|      2|        return APFloat::opInvalidOp;
  303|       |    //assert(p != begin && "Significand has no digits");
  304|  5.50k|    if (p == begin)
  ------------------
  |  Branch (304:9): [True: 0, False: 5.50k]
  ------------------
  305|      0|        return APFloat::opInvalidOp;
  306|       |    //assert((dot == end || p - begin != 1) && "Significand has no digits");
  307|  5.50k|    if (dot != end && p - begin == 1)
  ------------------
  |  Branch (307:9): [True: 5.50k, False: 6]
  |  Branch (307:23): [True: 0, False: 5.50k]
  ------------------
  308|      0|        return APFloat::opInvalidOp;
  309|       |
  310|       |    /* p points to the first non-digit in the string */
  311|  5.50k|    D->exponent = readExponent(p + 1, end, fp); // qq
  312|  5.50k|    if (fp)
  ------------------
  |  Branch (312:9): [True: 694, False: 4.81k]
  ------------------
  313|    694|        return fp;
  314|       |
  315|       |    /* Implied decimal point?  */
  316|  4.81k|    if (dot == end)
  ------------------
  |  Branch (316:9): [True: 4, False: 4.81k]
  ------------------
  317|      4|      dot = p;
  318|  4.81k|  }
  319|       |
  320|       |  /* If number is all zeroes accept any exponent.  */
  321|  62.8k|  if (p != D->firstSigDigit) {
  ------------------
  |  Branch (321:7): [True: 60.2k, False: 2.61k]
  ------------------
  322|       |    /* Drop insignificant trailing zeroes.  */
  323|  60.2k|    if (p != begin) {
  ------------------
  |  Branch (323:9): [True: 60.2k, False: 0]
  ------------------
  324|  60.2k|      do
  325|  60.2k|        do
  326|  70.1k|          p--;
  327|  70.1k|        while (p != begin && *p == '0');
  ------------------
  |  Branch (327:16): [True: 68.4k, False: 1.79k]
  |  Branch (327:30): [True: 9.96k, False: 58.4k]
  ------------------
  328|  60.2k|      while (p != begin && *p == '.');
  ------------------
  |  Branch (328:14): [True: 58.4k, False: 1.79k]
  |  Branch (328:28): [True: 0, False: 58.4k]
  ------------------
  329|  60.2k|    }
  330|       |
  331|       |    /* Adjust the exponents for any decimal point.  */
  332|  60.2k|    D->exponent += static_cast<APFloat::ExponentType>((dot - p) - (dot > p));
  333|  60.2k|    D->normalizedExponent = (D->exponent +
  334|  60.2k|              static_cast<APFloat::ExponentType>((p - D->firstSigDigit)
  335|  60.2k|                                      - (dot > D->firstSigDigit && dot < p)));
  ------------------
  |  Branch (335:42): [True: 3.00k, False: 57.2k]
  |  Branch (335:68): [True: 0, False: 3.00k]
  ------------------
  336|  60.2k|  }
  337|       |
  338|  62.8k|  D->lastSigDigit = p;
  339|       |
  340|  62.8k|  return APFloat::opOK;
  341|  63.5k|}
_ZN7llvm_ks7APFloat10initializeEPKNS_12fltSemanticsE:
  614|   193k|{
  615|   193k|  unsigned int count;
  616|       |
  617|   193k|  semantics = ourSemantics;
  618|   193k|  count = partCount();
  619|   193k|  if (count > 1)
  ------------------
  |  Branch (619:7): [True: 3.60k, False: 190k]
  ------------------
  620|  3.60k|    significand.parts = new integerPart[count];
  621|   193k|}
_ZN7llvm_ks7APFloat15freeSignificandEv:
  625|   194k|{
  626|   194k|  if (needsCleanup())
  ------------------
  |  Branch (626:7): [True: 3.60k, False: 191k]
  ------------------
  627|  3.60k|    delete [] significand.parts;
  628|   194k|}
_ZN7llvm_ks7APFloat7makeNaNEbbPKNS_5APIntE:
  656|    286|{
  657|    286|  category = fcNaN;
  658|    286|  sign = Negative;
  659|       |
  660|    286|  integerPart *significand = significandParts();
  661|    286|  unsigned numParts = partCount();
  662|       |
  663|       |  // Set the significand bits to the fill.
  664|    286|  if (!fill || fill->getNumWords() < numParts)
  ------------------
  |  Branch (664:7): [True: 0, False: 286]
  |  Branch (664:16): [True: 0, False: 286]
  ------------------
  665|      0|    APInt::tcSet(significand, 0, numParts);
  666|    286|  if (fill) {
  ------------------
  |  Branch (666:7): [True: 286, False: 0]
  ------------------
  667|    286|    APInt::tcAssign(significand, fill->getRawData(),
  668|    286|                    std::min(fill->getNumWords(), numParts));
  669|       |
  670|       |    // Zero out the excess bits of the significand.
  671|    286|    unsigned bitsToPreserve = semantics->precision - 1;
  672|    286|    unsigned part = bitsToPreserve / 64;
  673|    286|    bitsToPreserve %= 64;
  674|    286|    significand[part] &= ((1ULL << bitsToPreserve) - 1);
  675|    286|    for (part++; part != numParts; ++part)
  ------------------
  |  Branch (675:18): [True: 0, False: 286]
  ------------------
  676|      0|      significand[part] = 0;
  677|    286|  }
  678|       |
  679|    286|  unsigned QNaNBit = semantics->precision - 2;
  680|       |
  681|    286|  if (SNaN) {
  ------------------
  |  Branch (681:7): [True: 0, False: 286]
  ------------------
  682|       |    // We always have to clear the QNaN bit to make it an SNaN.
  683|      0|    APInt::tcClearBit(significand, QNaNBit);
  684|       |
  685|       |    // If there are no bits set in the payload, we have to set
  686|       |    // *something* to make it a NaN instead of an infinity;
  687|       |    // conventionally, this is the next bit down from the QNaN bit.
  688|      0|    if (APInt::tcIsZero(significand, numParts))
  ------------------
  |  Branch (688:9): [True: 0, False: 0]
  ------------------
  689|      0|      APInt::tcSetBit(significand, QNaNBit - 1);
  690|    286|  } else {
  691|       |    // We always have to set the QNaN bit to make it a QNaN.
  692|    286|    APInt::tcSetBit(significand, QNaNBit);
  693|    286|  }
  694|       |
  695|       |  // For x87 extended precision, we want to make a NaN, not a
  696|       |  // pseudo-NaN.  Maybe we should expose the ability to make
  697|       |  // pseudo-NaNs?
  698|    286|  if (semantics == &APFloat::x87DoubleExtended)
  ------------------
  |  Branch (698:7): [True: 0, False: 286]
  ------------------
  699|      0|    APInt::tcSetBit(significand, QNaNBit + 1);
  700|    286|}
_ZN7llvm_ks7APFloat7makeNaNERKNS_12fltSemanticsEbbPKNS_5APIntE:
  703|    286|                         const APInt *fill) {
  704|    286|  APFloat value(Sem, uninitialized);
  705|    286|  value.makeNaN(SNaN, Negative, fill);
  706|    286|  return value;
  707|    286|}
_ZN7llvm_ks7APFloataSEOS0_:
  724|    888|APFloat::operator=(APFloat &&rhs) {
  725|    888|  freeSignificand();
  726|       |
  727|    888|  semantics = rhs.semantics;
  728|    888|  significand = rhs.significand;
  729|    888|  exponent = rhs.exponent;
  730|    888|  category = rhs.category;
  731|    888|  sign = rhs.sign;
  732|       |
  733|    888|  rhs.semantics = &Bogus;
  734|    888|  return *this;
  735|    888|}
_ZN7llvm_ks7APFloatC2ERKNS_12fltSemanticsE:
  842|  70.9k|APFloat::APFloat(const fltSemantics &ourSemantics) {
  843|  70.9k|  initialize(&ourSemantics);
  844|  70.9k|  category = fcZero;
  845|  70.9k|  sign = false;
  846|  70.9k|}
_ZN7llvm_ks7APFloatC2ERKNS_12fltSemanticsENS0_16uninitializedTagE:
  848|  61.5k|APFloat::APFloat(const fltSemantics &ourSemantics, uninitializedTag tag) {
  849|       |  // Allocates storage if necessary but does not initialize it.
  850|  61.5k|  initialize(&ourSemantics);
  851|  61.5k|}
_ZN7llvm_ks7APFloatC2ERKNS_12fltSemanticsENS_9StringRefE:
  853|  61.2k|APFloat::APFloat(const fltSemantics &ourSemantics, StringRef text) {
  854|  61.2k|  initialize(&ourSemantics);
  855|  61.2k|  convertFromString(text, rmNearestTiesToEven);
  856|  61.2k|}
_ZN7llvm_ks7APFloatD2Ev:
  868|   193k|{
  869|   193k|  freeSignificand();
  870|   193k|}
_ZNK7llvm_ks7APFloat9partCountEv:
  879|  2.39M|{
  880|  2.39M|  return partCountForBits(semantics->precision + 1);
  881|  2.39M|}
_ZNK7llvm_ks7APFloat16significandPartsEv:
  906|   351k|{
  907|   351k|  return const_cast<APFloat *>(this)->significandParts();
  908|   351k|}
_ZN7llvm_ks7APFloat16significandPartsEv:
  912|  1.17M|{
  913|  1.17M|  if (partCount() > 1)
  ------------------
  |  Branch (913:7): [True: 25.1k, False: 1.15M]
  ------------------
  914|  25.1k|    return significand.parts;
  915|  1.15M|  else
  916|  1.15M|    return &significand.part;
  917|  1.17M|}
_ZN7llvm_ks7APFloat15zeroSignificandEv:
  921|  6.01k|{
  922|  6.01k|  APInt::tcSet(significandParts(), 0, partCount());
  923|  6.01k|}
_ZN7llvm_ks7APFloat20incrementSignificandEv:
  928|  41.3k|{
  929|  41.3k|  integerPart carry;
  930|       |
  931|  41.3k|  carry = APInt::tcIncrement(significandParts(), partCount());
  932|       |
  933|       |  /* Our callers should never cause us to overflow.  */
  934|  41.3k|  assert(carry == 0);
  ------------------
  |  Branch (934:3): [True: 41.3k, False: 0]
  ------------------
  935|  41.3k|  (void)carry;
  936|  41.3k|}
_ZN7llvm_ks7APFloat19multiplySignificandERKS0_PS1_:
  973|  5.57k|{
  974|  5.57k|  unsigned int omsb;        // One, not zero, based MSB.
  975|  5.57k|  unsigned int partsCount, newPartsCount, precision;
  976|  5.57k|  integerPart *lhsSignificand;
  977|  5.57k|  integerPart scratch[4];
  978|  5.57k|  integerPart *fullSignificand;
  979|  5.57k|  lostFraction lost_fraction;
  980|  5.57k|  bool ignored;
  981|       |
  982|  5.57k|  assert(semantics == rhs.semantics);
  ------------------
  |  Branch (982:3): [True: 5.57k, False: 0]
  ------------------
  983|       |
  984|  5.57k|  precision = semantics->precision;
  985|       |
  986|       |  // Allocate space for twice as many bits as the original significand, plus one
  987|       |  // extra bit for the addition to overflow into.
  988|  5.57k|  newPartsCount = partCountForBits(precision * 2 + 1);
  989|       |
  990|  5.57k|  if (newPartsCount > 4)
  ------------------
  |  Branch (990:7): [True: 0, False: 5.57k]
  ------------------
  991|      0|    fullSignificand = new integerPart[newPartsCount];
  992|  5.57k|  else
  993|  5.57k|    fullSignificand = scratch;
  994|       |
  995|  5.57k|  lhsSignificand = significandParts();
  996|  5.57k|  partsCount = partCount();
  997|       |
  998|  5.57k|  APInt::tcFullMultiply(fullSignificand, lhsSignificand,
  999|  5.57k|                        rhs.significandParts(), partsCount, partsCount);
 1000|       |
 1001|  5.57k|  lost_fraction = lfExactlyZero;
 1002|  5.57k|  omsb = APInt::tcMSB(fullSignificand, newPartsCount) + 1;
 1003|  5.57k|  exponent += rhs.exponent;
 1004|       |
 1005|       |  // Assume the operands involved in the multiplication are single-precision
 1006|       |  // FP, and the two multiplicants are:
 1007|       |  //   *this = a23 . a22 ... a0 * 2^e1
 1008|       |  //     rhs = b23 . b22 ... b0 * 2^e2
 1009|       |  // the result of multiplication is:
 1010|       |  //   *this = c48 c47 c46 . c45 ... c0 * 2^(e1+e2)
 1011|       |  // Note that there are three significant bits at the left-hand side of the 
 1012|       |  // radix point: two for the multiplication, and an overflow bit for the
 1013|       |  // addition (that will always be zero at this point). Move the radix point
 1014|       |  // toward left by two bits, and adjust exponent accordingly.
 1015|  5.57k|  exponent += 2;
 1016|       |
 1017|  5.57k|  if (addend && addend->isNonZero()) {
  ------------------
  |  Branch (1017:7): [True: 0, False: 5.57k]
  |  Branch (1017:17): [True: 0, False: 0]
  ------------------
 1018|       |    // The intermediate result of the multiplication has "2 * precision" 
 1019|       |    // signicant bit; adjust the addend to be consistent with mul result.
 1020|       |    //
 1021|      0|    Significand savedSignificand = significand;
 1022|      0|    const fltSemantics *savedSemantics = semantics;
 1023|      0|    fltSemantics extendedSemantics;
 1024|      0|    opStatus status;
 1025|      0|    unsigned int extendedPrecision;
 1026|       |
 1027|       |    // Normalize our MSB to one below the top bit to allow for overflow.
 1028|      0|    extendedPrecision = 2 * precision + 1;
 1029|      0|    if (omsb != extendedPrecision - 1) {
  ------------------
  |  Branch (1029:9): [True: 0, False: 0]
  ------------------
 1030|      0|      assert(extendedPrecision > omsb);
  ------------------
  |  Branch (1030:7): [True: 0, False: 0]
  ------------------
 1031|      0|      APInt::tcShiftLeft(fullSignificand, newPartsCount,
 1032|      0|                         (extendedPrecision - 1) - omsb);
 1033|      0|      exponent -= (extendedPrecision - 1) - omsb;
 1034|      0|    }
 1035|       |
 1036|       |    /* Create new semantics.  */
 1037|      0|    extendedSemantics = *semantics;
 1038|      0|    extendedSemantics.precision = extendedPrecision;
 1039|       |
 1040|      0|    if (newPartsCount == 1)
  ------------------
  |  Branch (1040:9): [True: 0, False: 0]
  ------------------
 1041|      0|      significand.part = fullSignificand[0];
 1042|      0|    else
 1043|      0|      significand.parts = fullSignificand;
 1044|      0|    semantics = &extendedSemantics;
 1045|       |
 1046|      0|    APFloat extendedAddend(*addend);
 1047|      0|    status = extendedAddend.convert(extendedSemantics, rmTowardZero, &ignored);
 1048|      0|    assert(status == opOK);
  ------------------
  |  Branch (1048:5): [True: 0, False: 0]
  ------------------
 1049|      0|    (void)status;
 1050|       |
 1051|       |    // Shift the significand of the addend right by one bit. This guarantees
 1052|       |    // that the high bit of the significand is zero (same as fullSignificand),
 1053|       |    // so the addition will overflow (if it does overflow at all) into the top bit.
 1054|      0|    lost_fraction = extendedAddend.shiftSignificandRight(1);
 1055|      0|    assert(lost_fraction == lfExactlyZero &&
  ------------------
  |  Branch (1055:5): [True: 0, False: 0]
  |  Branch (1055:5): [True: 0, Folded]
  |  Branch (1055:5): [True: 0, False: 0]
  ------------------
 1056|      0|           "Lost precision while shifting addend for fused-multiply-add.");
 1057|       |
 1058|      0|    lost_fraction = addOrSubtractSignificand(extendedAddend, false);
 1059|       |
 1060|       |    /* Restore our state.  */
 1061|      0|    if (newPartsCount == 1)
  ------------------
  |  Branch (1061:9): [True: 0, False: 0]
  ------------------
 1062|      0|      fullSignificand[0] = significand.part;
 1063|      0|    significand = savedSignificand;
 1064|      0|    semantics = savedSemantics;
 1065|       |
 1066|      0|    omsb = APInt::tcMSB(fullSignificand, newPartsCount) + 1;
 1067|      0|  }
 1068|       |
 1069|       |  // Convert the result having "2 * precision" significant-bits back to the one
 1070|       |  // having "precision" significant-bits. First, move the radix point from 
 1071|       |  // poision "2*precision - 1" to "precision - 1". The exponent need to be
 1072|       |  // adjusted by "2*precision - 1" - "precision - 1" = "precision".
 1073|  5.57k|  exponent -= precision + 1;
 1074|       |
 1075|       |  // In case MSB resides at the left-hand side of radix point, shift the
 1076|       |  // mantissa right by some amount to make sure the MSB reside right before
 1077|       |  // the radix point (i.e. "MSB . rest-significant-bits").
 1078|       |  //
 1079|       |  // Note that the result is not normalized when "omsb < precision". So, the
 1080|       |  // caller needs to call APFloat::normalize() if normalized value is expected.
 1081|  5.57k|  if (omsb > precision) {
  ------------------
  |  Branch (1081:7): [True: 5.57k, False: 0]
  ------------------
 1082|  5.57k|    unsigned int bits, significantParts;
 1083|  5.57k|    lostFraction lf;
 1084|       |
 1085|  5.57k|    bits = omsb - precision;
 1086|  5.57k|    significantParts = partCountForBits(omsb);
 1087|  5.57k|    lf = shiftRight(fullSignificand, significantParts, bits);
 1088|  5.57k|    lost_fraction = combineLostFractions(lf, lost_fraction);
 1089|  5.57k|    exponent += bits;
 1090|  5.57k|  }
 1091|       |
 1092|  5.57k|  APInt::tcAssign(lhsSignificand, fullSignificand, partsCount);
 1093|       |
 1094|  5.57k|  if (newPartsCount > 4)
  ------------------
  |  Branch (1094:7): [True: 0, False: 5.57k]
  ------------------
 1095|      0|    delete [] fullSignificand;
 1096|       |
 1097|  5.57k|  return lost_fraction;
 1098|  5.57k|}
_ZN7llvm_ks7APFloat17divideSignificandERKS0_:
 1103|  55.0k|{
 1104|  55.0k|  unsigned int bit, i, partsCount;
 1105|  55.0k|  const integerPart *rhsSignificand;
 1106|  55.0k|  integerPart *lhsSignificand, *dividend, *divisor;
 1107|  55.0k|  integerPart scratch[4];
 1108|  55.0k|  lostFraction lost_fraction;
 1109|       |
 1110|  55.0k|  assert(semantics == rhs.semantics);
  ------------------
  |  Branch (1110:3): [True: 55.0k, False: 0]
  ------------------
 1111|       |
 1112|  55.0k|  lhsSignificand = significandParts();
 1113|  55.0k|  rhsSignificand = rhs.significandParts();
 1114|  55.0k|  partsCount = partCount();
 1115|       |
 1116|  55.0k|  if (partsCount > 2)
  ------------------
  |  Branch (1116:7): [True: 422, False: 54.6k]
  ------------------
 1117|    422|    dividend = new integerPart[partsCount * 2];
 1118|  54.6k|  else
 1119|  54.6k|    dividend = scratch;
 1120|       |
 1121|  55.0k|  divisor = dividend + partsCount;
 1122|       |
 1123|       |  /* Copy the dividend and divisor as they will be modified in-place.  */
 1124|   118k|  for (i = 0; i < partsCount; i++) {
  ------------------
  |  Branch (1124:15): [True: 63.9k, False: 55.0k]
  ------------------
 1125|  63.9k|    dividend[i] = lhsSignificand[i];
 1126|  63.9k|    divisor[i] = rhsSignificand[i];
 1127|  63.9k|    lhsSignificand[i] = 0;
 1128|  63.9k|  }
 1129|       |
 1130|  55.0k|  exponent -= rhs.exponent;
 1131|       |
 1132|  55.0k|  unsigned int precision = semantics->precision;
 1133|       |
 1134|       |  /* Normalize the divisor.  */
 1135|  55.0k|  bit = precision - APInt::tcMSB(divisor, partsCount) - 1;
 1136|  55.0k|  if (bit) {
  ------------------
  |  Branch (1136:7): [True: 0, False: 55.0k]
  ------------------
 1137|      0|    exponent += bit;
 1138|      0|    APInt::tcShiftLeft(divisor, partsCount, bit);
 1139|      0|  }
 1140|       |
 1141|       |  /* Normalize the dividend.  */
 1142|  55.0k|  bit = precision - APInt::tcMSB(dividend, partsCount) - 1;
 1143|  55.0k|  if (bit) {
  ------------------
  |  Branch (1143:7): [True: 0, False: 55.0k]
  ------------------
 1144|      0|    exponent -= bit;
 1145|      0|    APInt::tcShiftLeft(dividend, partsCount, bit);
 1146|      0|  }
 1147|       |
 1148|       |  /* Ensure the dividend >= divisor initially for the loop below.
 1149|       |     Incidentally, this means that the division loop below is
 1150|       |     guaranteed to set the integer bit to one.  */
 1151|  55.0k|  if (APInt::tcCompare(dividend, divisor, partsCount) < 0) {
  ------------------
  |  Branch (1151:7): [True: 41.9k, False: 13.1k]
  ------------------
 1152|  41.9k|    exponent--;
 1153|  41.9k|    APInt::tcShiftLeft(dividend, partsCount, 1);
 1154|  41.9k|    assert(APInt::tcCompare(dividend, divisor, partsCount) >= 0);
  ------------------
  |  Branch (1154:5): [True: 41.9k, False: 0]
  ------------------
 1155|  41.9k|  }
 1156|       |
 1157|       |  /* Long division.  */
 1158|  4.09M|  for (bit = precision; bit; bit -= 1) {
  ------------------
  |  Branch (1158:25): [True: 4.03M, False: 55.0k]
  ------------------
 1159|  4.03M|    if (APInt::tcCompare(dividend, divisor, partsCount) >= 0) {
  ------------------
  |  Branch (1159:9): [True: 1.96M, False: 2.07M]
  ------------------
 1160|  1.96M|      APInt::tcSubtract(dividend, divisor, 0, partsCount);
 1161|  1.96M|      APInt::tcSetBit(lhsSignificand, bit - 1);
 1162|  1.96M|    }
 1163|       |
 1164|  4.03M|    APInt::tcShiftLeft(dividend, partsCount, 1);
 1165|  4.03M|  }
 1166|       |
 1167|       |  /* Figure out the lost fraction.  */
 1168|  55.0k|  int cmp = APInt::tcCompare(dividend, divisor, partsCount);
 1169|       |
 1170|  55.0k|  if (cmp > 0)
  ------------------
  |  Branch (1170:7): [True: 14.9k, False: 40.1k]
  ------------------
 1171|  14.9k|    lost_fraction = lfMoreThanHalf;
 1172|  40.1k|  else if (cmp == 0)
  ------------------
  |  Branch (1172:12): [True: 0, False: 40.1k]
  ------------------
 1173|      0|    lost_fraction = lfExactlyHalf;
 1174|  40.1k|  else if (APInt::tcIsZero(dividend, partsCount))
  ------------------
  |  Branch (1174:12): [True: 2.43k, False: 37.6k]
  ------------------
 1175|  2.43k|    lost_fraction = lfExactlyZero;
 1176|  37.6k|  else
 1177|  37.6k|    lost_fraction = lfLessThanHalf;
 1178|       |
 1179|  55.0k|  if (partsCount > 2)
  ------------------
  |  Branch (1179:7): [True: 422, False: 54.6k]
  ------------------
 1180|    422|    delete [] dividend;
 1181|       |
 1182|  55.0k|  return lost_fraction;
 1183|  55.0k|}
_ZNK7llvm_ks7APFloat14significandMSBEv:
 1187|   227k|{
 1188|   227k|  return APInt::tcMSB(significandParts(), partCount());
 1189|   227k|}
_ZN7llvm_ks7APFloat21shiftSignificandRightEj:
 1200|  4.61k|{
 1201|       |  /* Our exponent should not overflow.  */
 1202|  4.61k|  assert((ExponentType) (exponent + bits) >= exponent);
  ------------------
  |  Branch (1202:3): [True: 4.61k, False: 0]
  ------------------
 1203|       |
 1204|  4.61k|  exponent += bits;
 1205|       |
 1206|  4.61k|  return shiftRight(significandParts(), partCount(), bits);
 1207|  4.61k|}
_ZN7llvm_ks7APFloat20shiftSignificandLeftEj:
 1212|   112k|{
 1213|   112k|  assert(bits < semantics->precision);
  ------------------
  |  Branch (1213:3): [True: 112k, False: 0]
  ------------------
 1214|       |
 1215|   112k|  if (bits) {
  ------------------
  |  Branch (1215:7): [True: 112k, False: 0]
  ------------------
 1216|   112k|    unsigned int partsCount = partCount();
 1217|       |
 1218|   112k|    APInt::tcShiftLeft(significandParts(), partsCount, bits);
 1219|   112k|    exponent -= bits;
 1220|       |
 1221|       |    assert(!APInt::tcIsZero(significandParts(), partsCount));
  ------------------
  |  Branch (1221:5): [True: 112k, False: 0]
  ------------------
 1222|   112k|  }
 1223|   112k|}
_ZN7llvm_ks7APFloat14handleOverflowENS0_12roundingModeE:
 1254|  1.47k|{
 1255|       |  /* Infinity?  */
 1256|  1.47k|  if (rounding_mode == rmNearestTiesToEven ||
  ------------------
  |  Branch (1256:7): [True: 1.47k, False: 0]
  ------------------
 1257|      0|      rounding_mode == rmNearestTiesToAway ||
  ------------------
  |  Branch (1257:7): [True: 0, False: 0]
  ------------------
 1258|      0|      (rounding_mode == rmTowardPositive && !sign) ||
  ------------------
  |  Branch (1258:8): [True: 0, False: 0]
  |  Branch (1258:45): [True: 0, False: 0]
  ------------------
 1259|  1.47k|      (rounding_mode == rmTowardNegative && sign)) {
  ------------------
  |  Branch (1259:8): [True: 0, False: 0]
  |  Branch (1259:45): [True: 0, False: 0]
  ------------------
 1260|  1.47k|    category = fcInfinity;
 1261|  1.47k|    return (opStatus) (opOverflow | opInexact);
 1262|  1.47k|  }
 1263|       |
 1264|       |  /* Otherwise we become the largest finite number.  */
 1265|      0|  category = fcNormal;
 1266|      0|  exponent = semantics->maxExponent;
 1267|      0|  APInt::tcSetLeastSignificantBits(significandParts(), partCount(),
 1268|      0|                                   semantics->precision);
 1269|       |
 1270|      0|  return opInexact;
 1271|  1.47k|}
_ZNK7llvm_ks7APFloat17roundAwayFromZeroENS0_12roundingModeENS_12lostFractionEj:
 1282|  63.6k|{
 1283|       |  /* NaNs and infinities should not have lost fractions.  */
 1284|  63.6k|  assert(isFiniteNonZero() || category == fcZero);
  ------------------
  |  Branch (1284:3): [True: 63.6k, False: 0]
  |  Branch (1284:3): [True: 0, False: 0]
  |  Branch (1284:3): [True: 63.6k, False: 0]
  ------------------
 1285|       |
 1286|       |  /* Current callers never pass this so we don't handle it.  */
 1287|  63.6k|  assert(lost_fraction != lfExactlyZero);
  ------------------
  |  Branch (1287:3): [True: 63.6k, False: 0]
  ------------------
 1288|       |
 1289|  63.6k|  switch (rounding_mode) {
  ------------------
  |  Branch (1289:11): [True: 63.6k, False: 0]
  ------------------
 1290|      0|  case rmNearestTiesToAway:
  ------------------
  |  Branch (1290:3): [True: 0, False: 63.6k]
  ------------------
 1291|      0|    return lost_fraction == lfExactlyHalf || lost_fraction == lfMoreThanHalf;
  ------------------
  |  Branch (1291:12): [True: 0, False: 0]
  |  Branch (1291:46): [True: 0, False: 0]
  ------------------
 1292|       |
 1293|  63.6k|  case rmNearestTiesToEven:
  ------------------
  |  Branch (1293:3): [True: 63.6k, False: 0]
  ------------------
 1294|  63.6k|    if (lost_fraction == lfMoreThanHalf)
  ------------------
  |  Branch (1294:9): [True: 41.1k, False: 22.4k]
  ------------------
 1295|  41.1k|      return true;
 1296|       |
 1297|       |    /* Our zeroes don't have a significand to test.  */
 1298|  22.4k|    if (lost_fraction == lfExactlyHalf && category != fcZero)
  ------------------
  |  Branch (1298:9): [True: 250, False: 22.2k]
  |  Branch (1298:43): [True: 250, False: 0]
  ------------------
 1299|    250|      return APInt::tcExtractBit(significandParts(), bit);
 1300|       |
 1301|  22.2k|    return false;
 1302|       |
 1303|      0|  case rmTowardZero:
  ------------------
  |  Branch (1303:3): [True: 0, False: 63.6k]
  ------------------
 1304|      0|    return false;
 1305|       |
 1306|      0|  case rmTowardPositive:
  ------------------
  |  Branch (1306:3): [True: 0, False: 63.6k]
  ------------------
 1307|      0|    return !sign;
 1308|       |
 1309|      0|  case rmTowardNegative:
  ------------------
  |  Branch (1309:3): [True: 0, False: 63.6k]
  ------------------
 1310|      0|    return sign;
 1311|  63.6k|  }
 1312|      0|  llvm_unreachable("Invalid rounding mode found");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 1313|  63.6k|}
_ZN7llvm_ks7APFloat9normalizeENS0_12roundingModeENS_12lostFractionE:
 1318|   186k|{
 1319|   186k|  unsigned int omsb;                /* One, not zero, based MSB.  */
 1320|   186k|  int exponentChange;
 1321|       |
 1322|   186k|  if (!isFiniteNonZero())
  ------------------
  |  Branch (1322:7): [True: 0, False: 186k]
  ------------------
 1323|      0|    return opOK;
 1324|       |
 1325|       |  /* Before rounding normalize the exponent of fcNormal numbers.  */
 1326|   186k|  omsb = significandMSB() + 1;
 1327|       |
 1328|   186k|  if (omsb) {
  ------------------
  |  Branch (1328:7): [True: 185k, False: 1.13k]
  ------------------
 1329|       |    /* OMSB is numbered from 1.  We want to place it in the integer
 1330|       |       bit numbered PRECISION if possible, with a compensating change in
 1331|       |       the exponent.  */
 1332|   185k|    exponentChange = omsb - semantics->precision;
 1333|       |
 1334|       |    /* If the resulting exponent is too high, overflow according to
 1335|       |       the rounding mode.  */
 1336|   185k|    if (exponent + exponentChange > semantics->maxExponent)
  ------------------
  |  Branch (1336:9): [True: 682, False: 184k]
  ------------------
 1337|    682|      return handleOverflow(rounding_mode);
 1338|       |
 1339|       |    /* Subnormal numbers have exponent minExponent, and their MSB
 1340|       |       is forced based on that.  */
 1341|   184k|    if (exponent + exponentChange < semantics->minExponent)
  ------------------
  |  Branch (1341:9): [True: 1.65k, False: 182k]
  ------------------
 1342|  1.65k|      exponentChange = semantics->minExponent - exponent;
 1343|       |
 1344|       |    /* Shifting left is easy as we don't lose precision.  */
 1345|   184k|    if (exponentChange < 0) {
  ------------------
  |  Branch (1345:9): [True: 112k, False: 71.5k]
  ------------------
 1346|   112k|      assert(lost_fraction == lfExactlyZero);
  ------------------
  |  Branch (1346:7): [True: 112k, False: 0]
  ------------------
 1347|       |
 1348|   112k|      shiftSignificandLeft(-exponentChange);
 1349|       |
 1350|   112k|      return opOK;
 1351|   112k|    }
 1352|       |
 1353|  71.5k|    if (exponentChange > 0) {
  ------------------
  |  Branch (1353:9): [True: 4.45k, False: 67.0k]
  ------------------
 1354|  4.45k|      lostFraction lf;
 1355|       |
 1356|       |      /* Shift right and capture any new lost fraction.  */
 1357|  4.45k|      lf = shiftSignificandRight(exponentChange);
 1358|       |
 1359|  4.45k|      lost_fraction = combineLostFractions(lf, lost_fraction);
 1360|       |
 1361|       |      /* Keep OMSB up-to-date.  */
 1362|  4.45k|      if (omsb > (unsigned) exponentChange)
  ------------------
  |  Branch (1362:11): [True: 3.47k, False: 986]
  ------------------
 1363|  3.47k|        omsb -= exponentChange;
 1364|    986|      else
 1365|    986|        omsb = 0;
 1366|  4.45k|    }
 1367|  71.5k|  }
 1368|       |
 1369|       |  /* Now round the number according to rounding_mode given the lost
 1370|       |     fraction.  */
 1371|       |
 1372|       |  /* As specified in IEEE 754, since we do not trap we do not report
 1373|       |     underflow for exact results.  */
 1374|  72.6k|  if (lost_fraction == lfExactlyZero) {
  ------------------
  |  Branch (1374:7): [True: 9.01k, False: 63.6k]
  ------------------
 1375|       |    /* Canonicalize zeroes.  */
 1376|  9.01k|    if (omsb == 0)
  ------------------
  |  Branch (1376:9): [True: 289, False: 8.72k]
  ------------------
 1377|    289|      category = fcZero;
 1378|       |
 1379|  9.01k|    return opOK;
 1380|  9.01k|  }
 1381|       |
 1382|       |  /* Increment the significand if we're rounding away from zero.  */
 1383|  63.6k|  if (roundAwayFromZero(rounding_mode, lost_fraction, 0)) {
  ------------------
  |  Branch (1383:7): [True: 41.3k, False: 22.2k]
  ------------------
 1384|  41.3k|    if (omsb == 0)
  ------------------
  |  Branch (1384:9): [True: 220, False: 41.1k]
  ------------------
 1385|    220|      exponent = semantics->minExponent;
 1386|       |
 1387|  41.3k|    incrementSignificand();
 1388|  41.3k|    omsb = significandMSB() + 1;
 1389|       |
 1390|       |    /* Did the significand increment overflow?  */
 1391|  41.3k|    if (omsb == (unsigned) semantics->precision + 1) {
  ------------------
  |  Branch (1391:9): [True: 161, False: 41.1k]
  ------------------
 1392|       |      /* Renormalize by incrementing the exponent and shifting our
 1393|       |         significand right one.  However if we already have the
 1394|       |         maximum exponent we overflow to infinity.  */
 1395|    161|      if (exponent == semantics->maxExponent) {
  ------------------
  |  Branch (1395:11): [True: 1, False: 160]
  ------------------
 1396|      1|        category = fcInfinity;
 1397|       |
 1398|      1|        return (opStatus) (opOverflow | opInexact);
 1399|      1|      }
 1400|       |
 1401|    160|      shiftSignificandRight(1);
 1402|       |
 1403|    160|      return opInexact;
 1404|    161|    }
 1405|  41.3k|  }
 1406|       |
 1407|       |  /* The normal case - we were and are not denormal, and any
 1408|       |     significand increment above didn't overflow.  */
 1409|  63.4k|  if (omsb == semantics->precision)
  ------------------
  |  Branch (1409:7): [True: 60.9k, False: 2.49k]
  ------------------
 1410|  60.9k|    return opInexact;
 1411|       |
 1412|       |  /* We have a non-zero denormal.  */
 1413|  63.4k|  assert(omsb < semantics->precision);
  ------------------
  |  Branch (1413:3): [True: 2.49k, False: 0]
  ------------------
 1414|       |
 1415|       |  /* Canonicalize zeroes.  */
 1416|  2.49k|  if (omsb == 0)
  ------------------
  |  Branch (1416:7): [True: 1.60k, False: 887]
  ------------------
 1417|  1.60k|    category = fcZero;
 1418|       |
 1419|       |  /* The fcZero case is a denormal that underflowed to zero.  */
 1420|  2.49k|  return (opStatus) (opUnderflow | opInexact);
 1421|  2.49k|}
_ZN7llvm_ks7APFloat10changeSignEv:
 1677|    915|{
 1678|       |  /* Look mummy, this one's easy.  */
 1679|    915|  sign = !sign;
 1680|    915|}
_ZN7llvm_ks7APFloat24convertFromUnsignedPartsEPKmjNS0_12roundingModeE:
 2297|   121k|{
 2298|   121k|  unsigned int omsb, precision, dstCount;
 2299|   121k|  integerPart *dst;
 2300|   121k|  lostFraction lost_fraction;
 2301|       |
 2302|   121k|  category = fcNormal;
 2303|   121k|  omsb = APInt::tcMSB(src, srcCount) + 1;
 2304|   121k|  dst = significandParts();
 2305|   121k|  dstCount = partCount();
 2306|   121k|  precision = semantics->precision;
 2307|       |
 2308|       |  /* We want the most significant PRECISION bits of SRC.  There may not
 2309|       |     be that many; extract what we can.  */
 2310|   121k|  if (precision <= omsb) {
  ------------------
  |  Branch (2310:7): [True: 8.44k, False: 112k]
  ------------------
 2311|  8.44k|    exponent = omsb - 1;
 2312|  8.44k|    lost_fraction = lostFractionThroughTruncation(src, srcCount,
 2313|  8.44k|                                                  omsb - precision);
 2314|  8.44k|    APInt::tcExtract(dst, dstCount, src, precision, omsb - precision);
 2315|   112k|  } else {
 2316|   112k|    exponent = precision - 1;
 2317|   112k|    lost_fraction = lfExactlyZero;
 2318|   112k|    APInt::tcExtract(dst, dstCount, src, omsb, 0);
 2319|   112k|  }
 2320|       |
 2321|   121k|  return normalize(rounding_mode, lost_fraction);
 2322|   121k|}
_ZN7llvm_ks7APFloat28convertFromHexadecimalStringENS_9StringRefENS0_12roundingModeE:
 2391|  5.42k|{
 2392|  5.42k|  lostFraction lost_fraction = lfExactlyZero;
 2393|       |
 2394|  5.42k|  category = fcNormal;
 2395|  5.42k|  zeroSignificand();
 2396|  5.42k|  exponent = 0;
 2397|       |
 2398|  5.42k|  integerPart *significand = significandParts();
 2399|  5.42k|  unsigned partsCount = partCount();
 2400|  5.42k|  unsigned bitPos = partsCount * integerPartWidth;
 2401|  5.42k|  bool computedTrailingFraction = false;
 2402|       |
 2403|       |  // Skip leading zeroes and any (hexa)decimal point.
 2404|  5.42k|  StringRef::iterator begin = s.begin();
 2405|  5.42k|  StringRef::iterator end = s.end();
 2406|  5.42k|  StringRef::iterator dot;
 2407|  5.42k|  StringRef::iterator p = skipLeadingZeroesAndAnyDot(begin, end, &dot);
 2408|  5.42k|  StringRef::iterator firstSignificantDigit = p;
 2409|       |
 2410|  43.7k|  while (p != end) {
  ------------------
  |  Branch (2410:10): [True: 43.7k, False: 0]
  ------------------
 2411|  43.7k|    integerPart hex_value;
 2412|       |
 2413|  43.7k|    if (*p == '.') {
  ------------------
  |  Branch (2413:9): [True: 204, False: 43.5k]
  ------------------
 2414|    204|      assert(dot == end && "String contains multiple dots");
  ------------------
  |  Branch (2414:7): [True: 204, False: 0]
  |  Branch (2414:7): [True: 204, Folded]
  |  Branch (2414:7): [True: 204, False: 0]
  ------------------
 2415|    204|      dot = p++;
 2416|    204|      continue;
 2417|    204|    }
 2418|       |
 2419|  43.5k|    hex_value = hexDigitValue(*p);
 2420|  43.5k|    if (hex_value == -1U)
  ------------------
  |  Branch (2420:9): [True: 5.42k, False: 38.1k]
  ------------------
 2421|  5.42k|      break;
 2422|       |
 2423|  38.1k|    p++;
 2424|       |
 2425|       |    // Store the number while we have space.
 2426|  38.1k|    if (bitPos) {
  ------------------
  |  Branch (2426:9): [True: 24.0k, False: 14.0k]
  ------------------
 2427|  24.0k|      bitPos -= 4;
 2428|  24.0k|      hex_value <<= bitPos % integerPartWidth;
 2429|  24.0k|      significand[bitPos / integerPartWidth] |= hex_value;
 2430|  24.0k|    } else if (!computedTrailingFraction) {
  ------------------
  |  Branch (2430:16): [True: 956, False: 13.0k]
  ------------------
 2431|    956|      lost_fraction = trailingHexadecimalFraction(p, end, hex_value);
 2432|    956|      computedTrailingFraction = true;
 2433|    956|    }
 2434|  38.1k|  }
 2435|       |
 2436|       |  /* Hex floats require an exponent but not a hexadecimal point.  */
 2437|  5.42k|  assert(p != end && "Hex strings require an exponent");
  ------------------
  |  Branch (2437:3): [True: 5.42k, False: 0]
  |  Branch (2437:3): [True: 5.42k, Folded]
  |  Branch (2437:3): [True: 5.42k, False: 0]
  ------------------
 2438|  5.42k|  assert((*p == 'p' || *p == 'P') && "Invalid character in significand");
  ------------------
  |  Branch (2438:3): [True: 2.55k, False: 2.86k]
  |  Branch (2438:3): [True: 2.86k, False: 0]
  |  Branch (2438:3): [True: 5.42k, Folded]
  |  Branch (2438:3): [True: 5.42k, False: 0]
  ------------------
 2439|  5.42k|  assert(p != begin && "Significand has no digits");
  ------------------
  |  Branch (2439:3): [True: 5.42k, False: 0]
  |  Branch (2439:3): [True: 5.42k, Folded]
  |  Branch (2439:3): [True: 5.42k, False: 0]
  ------------------
 2440|  5.42k|  assert((dot == end || p - begin != 1) && "Significand has no digits");
  ------------------
  |  Branch (2440:3): [True: 3.38k, False: 2.04k]
  |  Branch (2440:3): [True: 2.04k, False: 0]
  |  Branch (2440:3): [True: 5.42k, Folded]
  |  Branch (2440:3): [True: 5.42k, False: 0]
  ------------------
 2441|       |
 2442|       |  /* Ignore the exponent if we are zero.  */
 2443|  5.42k|  if (p != firstSignificantDigit) {
  ------------------
  |  Branch (2443:7): [True: 5.13k, False: 289]
  ------------------
 2444|  5.13k|    int expAdjustment;
 2445|       |
 2446|       |    /* Implicit hexadecimal point?  */
 2447|  5.13k|    if (dot == end)
  ------------------
  |  Branch (2447:9): [True: 3.13k, False: 2.00k]
  ------------------
 2448|  3.13k|      dot = p;
 2449|       |
 2450|       |    /* Calculate the exponent adjustment implicit in the number of
 2451|       |       significant digits.  */
 2452|  5.13k|    expAdjustment = static_cast<int>(dot - firstSignificantDigit);
 2453|  5.13k|    if (expAdjustment < 0)
  ------------------
  |  Branch (2453:9): [True: 1.79k, False: 3.34k]
  ------------------
 2454|  1.79k|      expAdjustment++;
 2455|  5.13k|    expAdjustment = expAdjustment * 4 - 1;
 2456|       |
 2457|       |    /* Adjust for writing the significand starting at the most
 2458|       |       significant nibble.  */
 2459|  5.13k|    expAdjustment += semantics->precision;
 2460|  5.13k|    expAdjustment -= partsCount * integerPartWidth;
 2461|       |
 2462|       |    /* Adjust for the given exponent.  */
 2463|  5.13k|    exponent = totalExponent(p + 1, end, expAdjustment);
 2464|  5.13k|  }
 2465|       |
 2466|  5.42k|  return normalize(rounding_mode, lost_fraction);
 2467|  5.42k|}
_ZN7llvm_ks7APFloat28roundSignificandWithExponentEPKmjiNS0_12roundingModeE:
 2473|  58.8k|{
 2474|  58.8k|  unsigned int parts, pow5PartCount;
 2475|  58.8k|  fltSemantics calcSemantics = { 32767, -32767, 0, 0 };
 2476|  58.8k|  integerPart pow5Parts[maxPowerOfFiveParts];
 2477|  58.8k|  bool isNearest;
 2478|       |
 2479|  58.8k|  isNearest = (rounding_mode == rmNearestTiesToEven ||
  ------------------
  |  Branch (2479:16): [True: 58.8k, False: 0]
  ------------------
 2480|      0|               rounding_mode == rmNearestTiesToAway);
  ------------------
  |  Branch (2480:16): [True: 0, False: 0]
  ------------------
 2481|       |
 2482|  58.8k|  parts = partCountForBits(semantics->precision + 11);
 2483|       |
 2484|       |  /* Calculate pow(5, abs(exp)).  */
 2485|  58.8k|  pow5PartCount = powerOf5(pow5Parts, exp >= 0 ? exp: -exp);
  ------------------
  |  Branch (2485:39): [True: 5.48k, False: 53.3k]
  ------------------
 2486|       |
 2487|  60.6k|  for (;; parts *= 2) {
 2488|  60.6k|    opStatus sigStatus, powStatus;
 2489|  60.6k|    unsigned int excessPrecision, truncatedBits;
 2490|       |
 2491|  60.6k|    calcSemantics.precision = parts * integerPartWidth - 1;
 2492|  60.6k|    excessPrecision = calcSemantics.precision - semantics->precision;
 2493|  60.6k|    truncatedBits = excessPrecision;
 2494|       |
 2495|  60.6k|    APFloat decSig = APFloat::getZero(calcSemantics, sign);
 2496|  60.6k|    APFloat pow5(calcSemantics);
 2497|       |
 2498|  60.6k|    sigStatus = decSig.convertFromUnsignedParts(decSigParts, sigPartCount,
 2499|  60.6k|                                                rmNearestTiesToEven);
 2500|  60.6k|    powStatus = pow5.convertFromUnsignedParts(pow5Parts, pow5PartCount,
 2501|  60.6k|                                              rmNearestTiesToEven);
 2502|       |    /* Add exp, as 10^n = 5^n * 2^n.  */
 2503|  60.6k|    decSig.exponent += exp;
 2504|       |
 2505|  60.6k|    lostFraction calcLostFraction;
 2506|  60.6k|    integerPart HUerr, HUdistance;
 2507|  60.6k|    unsigned int powHUerr;
 2508|       |
 2509|  60.6k|    if (exp >= 0) {
  ------------------
  |  Branch (2509:9): [True: 5.57k, False: 55.0k]
  ------------------
 2510|       |      /* multiplySignificand leaves the precision-th bit set to 1.  */
 2511|  5.57k|      calcLostFraction = decSig.multiplySignificand(pow5, nullptr);
 2512|  5.57k|      powHUerr = powStatus != opOK;
 2513|  55.0k|    } else {
 2514|  55.0k|      calcLostFraction = decSig.divideSignificand(pow5);
 2515|       |      /* Denormal numbers have less precision.  */
 2516|  55.0k|      if (decSig.exponent < semantics->minExponent) {
  ------------------
  |  Branch (2516:11): [True: 923, False: 54.1k]
  ------------------
 2517|    923|        excessPrecision += (semantics->minExponent - decSig.exponent);
 2518|    923|        truncatedBits = excessPrecision;
 2519|    923|        if (excessPrecision > calcSemantics.precision)
  ------------------
  |  Branch (2519:13): [True: 36, False: 887]
  ------------------
 2520|     36|          excessPrecision = calcSemantics.precision;
 2521|    923|      }
 2522|       |      /* Extra half-ulp lost in reciprocal of exponent.  */
 2523|  55.0k|      powHUerr = (powStatus == opOK && calcLostFraction == lfExactlyZero) ? 0:2;
  ------------------
  |  Branch (2523:19): [True: 50.4k, False: 4.65k]
  |  Branch (2523:40): [True: 2.41k, False: 48.0k]
  ------------------
 2524|  55.0k|    }
 2525|       |
 2526|       |    /* Both multiplySignificand and divideSignificand return the
 2527|       |       result with the integer bit set.  */
 2528|  60.6k|    assert(APInt::tcExtractBit
  ------------------
  |  Branch (2528:5): [True: 60.6k, False: 0]
  ------------------
 2529|  60.6k|           (decSig.significandParts(), calcSemantics.precision - 1) == 1);
 2530|       |
 2531|  60.6k|    HUerr = HUerrBound(calcLostFraction != lfExactlyZero, sigStatus != opOK,
 2532|  60.6k|                       powHUerr);
 2533|  60.6k|    HUdistance = 2 * ulpsFromBoundary(decSig.significandParts(),
 2534|  60.6k|                                      excessPrecision, isNearest);
 2535|       |
 2536|       |    /* Are we guaranteed to round correctly if we truncate?  */
 2537|  60.6k|    if (HUdistance >= HUerr) {
  ------------------
  |  Branch (2537:9): [True: 58.8k, False: 1.80k]
  ------------------
 2538|  58.8k|      APInt::tcExtract(significandParts(), partCount(), decSig.significandParts(),
 2539|  58.8k|                       calcSemantics.precision - excessPrecision,
 2540|  58.8k|                       excessPrecision);
 2541|       |      /* Take the exponent of decSig.  If we tcExtract-ed less bits
 2542|       |         above we must adjust our exponent to compensate for the
 2543|       |         implicit right shift.  */
 2544|  58.8k|      exponent = (decSig.exponent + semantics->precision
 2545|  58.8k|                  - (calcSemantics.precision - excessPrecision));
 2546|  58.8k|      calcLostFraction = lostFractionThroughTruncation(decSig.significandParts(),
 2547|  58.8k|                                                       decSig.partCount(),
 2548|  58.8k|                                                       truncatedBits);
 2549|  58.8k|      return normalize(rounding_mode, calcLostFraction);
 2550|  58.8k|    }
 2551|  60.6k|  }
 2552|  58.8k|}
_ZN7llvm_ks7APFloat24convertFromDecimalStringENS_9StringRefENS0_12roundingModeE:
 2556|  63.5k|{
 2557|  63.5k|  decimalInfo D;
 2558|  63.5k|  opStatus fs;
 2559|       |
 2560|       |  /* Scan the text.  */
 2561|  63.5k|  StringRef::iterator p = str.begin();
 2562|  63.5k|  fs = interpretDecimal(p, str.end(), &D);
 2563|  63.5k|  if (fs != opOK)
  ------------------
  |  Branch (2563:7): [True: 696, False: 62.8k]
  ------------------
 2564|    696|      return fs;
 2565|       |
 2566|       |  /* Handle the quick cases.  First the case of no significant digits,
 2567|       |     i.e. zero, and then exponents that are obviously too large or too
 2568|       |     small.  Writing L for log 10 / log 2, a number d.ddddd*10^exp
 2569|       |     definitely overflows if
 2570|       |
 2571|       |           (exp - 1) * L >= maxExponent
 2572|       |
 2573|       |     and definitely underflows to zero where
 2574|       |
 2575|       |           (exp + 1) * L <= minExponent - precision
 2576|       |
 2577|       |     With integer arithmetic the tightest bounds for L are
 2578|       |
 2579|       |           93/28 < L < 196/59            [ numerator <= 256 ]
 2580|       |           42039/12655 < L < 28738/8651  [ numerator <= 65536 ]
 2581|       |  */
 2582|       |
 2583|       |  // Test if we have a zero number allowing for strings with no null terminators
 2584|       |  // and zero decimals with non-zero exponents.
 2585|       |  // 
 2586|       |  // We computed firstSigDigit by ignoring all zeros and dots. Thus if
 2587|       |  // D->firstSigDigit equals str.end(), every digit must be a zero and there can
 2588|       |  // be at most one dot. On the other hand, if we have a zero with a non-zero
 2589|       |  // exponent, then we know that D.firstSigDigit will be non-numeric.
 2590|  62.8k|  if (D.firstSigDigit == str.end() || decDigitValue(*D.firstSigDigit) >= 10U) {
  ------------------
  |  Branch (2590:7): [True: 2.34k, False: 60.5k]
  |  Branch (2590:39): [True: 273, False: 60.2k]
  ------------------
 2591|  2.61k|    category = fcZero;
 2592|  2.61k|    fs = opOK;
 2593|       |
 2594|       |  /* Check whether the normalized exponent is high enough to overflow
 2595|       |     max during the log-rebasing in the max-exponent check below. */
 2596|  60.2k|  } else if (D.normalizedExponent - 1 > INT_MAX / 42039) {
  ------------------
  |  Branch (2596:14): [True: 361, False: 59.8k]
  ------------------
 2597|    361|    fs = handleOverflow(rounding_mode);
 2598|       |
 2599|       |  /* If it wasn't, then it also wasn't high enough to overflow max
 2600|       |     during the log-rebasing in the min-exponent check.  Check that it
 2601|       |     won't overflow min in either check, then perform the min-exponent
 2602|       |     check. */
 2603|  59.8k|  } else if (D.normalizedExponent - 1 < INT_MIN / 42039 ||
  ------------------
  |  Branch (2603:14): [True: 143, False: 59.7k]
  ------------------
 2604|  59.7k|             (D.normalizedExponent + 1) * 28738 <=
  ------------------
  |  Branch (2604:14): [True: 443, False: 59.2k]
  ------------------
 2605|  59.7k|               8651 * (semantics->minExponent - (int) semantics->precision)) {
 2606|       |    /* Underflow to zero and round.  */
 2607|    586|    category = fcNormal;
 2608|    586|    zeroSignificand();
 2609|    586|    fs = normalize(rounding_mode, lfLessThanHalf);
 2610|       |
 2611|       |  /* We can finally safely perform the max-exponent check. */
 2612|  59.2k|  } else if ((D.normalizedExponent - 1) * 42039
  ------------------
  |  Branch (2612:14): [True: 432, False: 58.8k]
  ------------------
 2613|  59.2k|             >= 12655 * semantics->maxExponent) {
 2614|       |    /* Overflow and round.  */
 2615|    432|    fs = handleOverflow(rounding_mode);
 2616|  58.8k|  } else {
 2617|  58.8k|    integerPart *decSignificand;
 2618|  58.8k|    unsigned int partCount;
 2619|       |
 2620|       |    /* A tight upper bound on number of bits required to hold an
 2621|       |       N-digit decimal integer is N * 196 / 59.  Allocate enough space
 2622|       |       to hold the full significand, and an extra part required by
 2623|       |       tcMultiplyPart.  */
 2624|  58.8k|    partCount = static_cast<unsigned int>(D.lastSigDigit - D.firstSigDigit) + 1;
 2625|  58.8k|    partCount = partCountForBits(1 + 196 * partCount / 59);
 2626|  58.8k|    decSignificand = new integerPart[partCount + 1];
 2627|  58.8k|    partCount = 0;
 2628|       |
 2629|       |    /* Convert to binary efficiently - we do almost all multiplication
 2630|       |       in an integerPart.  When this would overflow do we do a single
 2631|       |       bignum multiplication, and then revert again to multiplication
 2632|       |       in an integerPart.  */
 2633|  71.2k|    do {
 2634|  71.2k|      integerPart decValue, val, multiplier;
 2635|       |
 2636|  71.2k|      val = 0;
 2637|  71.2k|      multiplier = 1;
 2638|       |
 2639|   365k|      do {
 2640|   365k|        if (*p == '.') {
  ------------------
  |  Branch (2640:13): [True: 55.8k, False: 309k]
  ------------------
 2641|  55.8k|          p++;
 2642|  55.8k|          if (p == str.end()) {
  ------------------
  |  Branch (2642:15): [True: 0, False: 55.8k]
  ------------------
 2643|      0|            break;
 2644|      0|          }
 2645|  55.8k|        }
 2646|   365k|        decValue = decDigitValue(*p++);
 2647|   365k|        assert(decValue < 10U && "Invalid character in significand");
  ------------------
  |  Branch (2647:9): [True: 365k, False: 0]
  |  Branch (2647:9): [True: 365k, Folded]
  |  Branch (2647:9): [True: 365k, False: 0]
  ------------------
 2648|   365k|        multiplier *= 10;
 2649|   365k|        val = val * 10 + decValue;
 2650|       |        /* The maximum number that can be multiplied by ten with any
 2651|       |           digit added without overflowing an integerPart.  */
 2652|   365k|      } while (p <= D.lastSigDigit && multiplier <= (~ (integerPart) 0 - 9) / 10);
  ------------------
  |  Branch (2652:16): [True: 306k, False: 58.8k]
  |  Branch (2652:39): [True: 294k, False: 12.4k]
  ------------------
 2653|       |
 2654|       |      /* Multiply out the current part.  */
 2655|  71.2k|      APInt::tcMultiplyPart(decSignificand, decSignificand, multiplier, val,
 2656|  71.2k|                            partCount, partCount + 1, false);
 2657|       |
 2658|       |      /* If we used another part (likely but not guaranteed), increase
 2659|       |         the count.  */
 2660|  71.2k|      if (decSignificand[partCount])
  ------------------
  |  Branch (2660:11): [True: 64.2k, False: 7.04k]
  ------------------
 2661|  64.2k|        partCount++;
 2662|  71.2k|    } while (p <= D.lastSigDigit);
  ------------------
  |  Branch (2662:14): [True: 12.4k, False: 58.8k]
  ------------------
 2663|       |
 2664|  58.8k|    category = fcNormal;
 2665|  58.8k|    fs = roundSignificandWithExponent(decSignificand, partCount,
 2666|  58.8k|                                      D.exponent, rounding_mode);
 2667|       |
 2668|  58.8k|    delete [] decSignificand;
 2669|  58.8k|  }
 2670|       |
 2671|  62.8k|  return fs;
 2672|  62.8k|}
_ZN7llvm_ks7APFloat25convertFromStringSpecialsENS_9StringRefE:
 2675|  68.9k|APFloat::convertFromStringSpecials(StringRef str) {
 2676|  68.9k|  if (str.equals("inf") || str.equals("INFINITY")) {
  ------------------
  |  Branch (2676:7): [True: 0, False: 68.9k]
  |  Branch (2676:7): [True: 0, False: 68.9k]
  |  Branch (2676:28): [True: 0, False: 68.9k]
  ------------------
 2677|      0|    makeInf(false);
 2678|      0|    return true;
 2679|      0|  }
 2680|       |
 2681|  68.9k|  if (str.equals("-inf") || str.equals("-INFINITY")) {
  ------------------
  |  Branch (2681:7): [True: 0, False: 68.9k]
  |  Branch (2681:7): [True: 0, False: 68.9k]
  |  Branch (2681:29): [True: 0, False: 68.9k]
  ------------------
 2682|      0|    makeInf(true);
 2683|      0|    return true;
 2684|      0|  }
 2685|       |
 2686|  68.9k|  if (str.equals("nan") || str.equals("NaN")) {
  ------------------
  |  Branch (2686:7): [True: 0, False: 68.9k]
  |  Branch (2686:7): [True: 0, False: 68.9k]
  |  Branch (2686:28): [True: 0, False: 68.9k]
  ------------------
 2687|      0|    makeNaN(false, false);
 2688|      0|    return true;
 2689|      0|  }
 2690|       |
 2691|  68.9k|  if (str.equals("-nan") || str.equals("-NaN")) {
  ------------------
  |  Branch (2691:7): [True: 0, False: 68.9k]
  |  Branch (2691:7): [True: 0, False: 68.9k]
  |  Branch (2691:29): [True: 0, False: 68.9k]
  ------------------
 2692|      0|    makeNaN(false, true);
 2693|      0|    return true;
 2694|      0|  }
 2695|       |
 2696|  68.9k|  return false;
 2697|  68.9k|}
_ZN7llvm_ks7APFloat17convertFromStringENS_9StringRefENS0_12roundingModeE:
 2701|  68.9k|{
 2702|  68.9k|  assert(!str.empty() && "Invalid string length");
  ------------------
  |  Branch (2702:3): [True: 68.9k, False: 0]
  |  Branch (2702:3): [True: 68.9k, Folded]
  |  Branch (2702:3): [True: 68.9k, False: 0]
  ------------------
 2703|       |
 2704|       |  // Handle special cases.
 2705|  68.9k|  if (convertFromStringSpecials(str))
  ------------------
  |  Branch (2705:7): [True: 0, False: 68.9k]
  ------------------
 2706|      0|    return opOK;
 2707|       |
 2708|       |  /* Handle a leading minus sign.  */
 2709|  68.9k|  StringRef::iterator p = str.begin();
 2710|  68.9k|  size_t slen = str.size();
 2711|  68.9k|  sign = *p == '-' ? 1 : 0;
  ------------------
  |  Branch (2711:10): [True: 0, False: 68.9k]
  ------------------
 2712|  68.9k|  if (*p == '-' || *p == '+') {
  ------------------
  |  Branch (2712:7): [True: 0, False: 68.9k]
  |  Branch (2712:20): [True: 0, False: 68.9k]
  ------------------
 2713|      0|    p++;
 2714|      0|    slen--;
 2715|      0|    assert(slen && "String has no digits");
  ------------------
  |  Branch (2715:5): [True: 0, False: 0]
  |  Branch (2715:5): [True: 0, Folded]
  |  Branch (2715:5): [True: 0, False: 0]
  ------------------
 2716|      0|  }
 2717|       |
 2718|  68.9k|  if (slen >= 2 && p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) {
  ------------------
  |  Branch (2718:7): [True: 66.8k, False: 2.15k]
  |  Branch (2718:20): [True: 6.44k, False: 60.3k]
  |  Branch (2718:36): [True: 2.73k, False: 3.71k]
  |  Branch (2718:51): [True: 2.69k, False: 1.01k]
  ------------------
 2719|  5.42k|    assert(slen - 2 && "Invalid string");
  ------------------
  |  Branch (2719:5): [True: 5.42k, False: 0]
  |  Branch (2719:5): [True: 5.42k, Folded]
  |  Branch (2719:5): [True: 5.42k, False: 0]
  ------------------
 2720|  5.42k|    return convertFromHexadecimalString(StringRef(p + 2, slen - 2),
 2721|  5.42k|                                        rounding_mode);
 2722|  5.42k|  }
 2723|       |
 2724|  63.5k|  return convertFromDecimalString(StringRef(p, slen), rounding_mode);
 2725|  68.9k|}
_ZNK7llvm_ks7APFloat27convertDoubleAPFloatToAPIntEv:
 3048|  61.1k|{
 3049|  61.1k|  assert(semantics == (const llvm_ks::fltSemantics*)&IEEEdouble);
  ------------------
  |  Branch (3049:3): [True: 61.1k, False: 0]
  ------------------
 3050|  61.1k|  assert(partCount()==1);
  ------------------
  |  Branch (3050:3): [True: 61.1k, False: 0]
  ------------------
 3051|       |
 3052|  61.1k|  uint64_t myexponent, mysignificand;
 3053|       |
 3054|  61.1k|  if (isFiniteNonZero()) {
  ------------------
  |  Branch (3054:7): [True: 56.3k, False: 4.80k]
  ------------------
 3055|  56.3k|    myexponent = exponent+1023; //bias
 3056|  56.3k|    mysignificand = *significandParts();
 3057|  56.3k|    if (myexponent==1 && !(mysignificand & 0x10000000000000LL))
  ------------------
  |  Branch (3057:9): [True: 342, False: 56.0k]
  |  Branch (3057:26): [True: 266, False: 76]
  ------------------
 3058|    266|      myexponent = 0;   // denormal
 3059|  56.3k|  } else if (category==fcZero) {
  ------------------
  |  Branch (3059:14): [True: 3.28k, False: 1.51k]
  ------------------
 3060|  3.28k|    myexponent = 0;
 3061|  3.28k|    mysignificand = 0;
 3062|  3.28k|  } else if (category==fcInfinity) {
  ------------------
  |  Branch (3062:14): [True: 1.51k, False: 1]
  ------------------
 3063|  1.51k|    myexponent = 0x7ff;
 3064|  1.51k|    mysignificand = 0;
 3065|  1.51k|  } else {
 3066|      1|    assert(category == fcNaN && "Unknown category!");
  ------------------
  |  Branch (3066:5): [True: 1, False: 0]
  |  Branch (3066:5): [True: 1, Folded]
  |  Branch (3066:5): [True: 1, False: 0]
  ------------------
 3067|      1|    myexponent = 0x7ff;
 3068|      1|    mysignificand = *significandParts();
 3069|      1|  }
 3070|       |
 3071|  61.1k|  return APInt(64, ((((uint64_t)(sign & 1) << 63) |
 3072|  61.1k|                     ((myexponent & 0x7ff) <<  52) |
 3073|  61.1k|                     (mysignificand & 0xfffffffffffffLL))));
 3074|  61.1k|}
_ZNK7llvm_ks7APFloat26convertFloatAPFloatToAPIntEv:
 3078|  8.89k|{
 3079|  8.89k|  assert(semantics == (const llvm_ks::fltSemantics*)&IEEEsingle);
  ------------------
  |  Branch (3079:3): [True: 8.89k, False: 0]
  ------------------
 3080|  8.89k|  assert(partCount()==1);
  ------------------
  |  Branch (3080:3): [True: 8.89k, False: 0]
  ------------------
 3081|       |
 3082|  8.89k|  uint32_t myexponent, mysignificand;
 3083|       |
 3084|  8.89k|  if (isFiniteNonZero()) {
  ------------------
  |  Branch (3084:7): [True: 6.44k, False: 2.44k]
  ------------------
 3085|  6.44k|    myexponent = exponent+127; //bias
 3086|  6.44k|    mysignificand = (uint32_t)*significandParts();
 3087|  6.44k|    if (myexponent == 1 && !(mysignificand & 0x800000))
  ------------------
  |  Branch (3087:9): [True: 3.02k, False: 3.41k]
  |  Branch (3087:28): [True: 622, False: 2.40k]
  ------------------
 3088|    622|      myexponent = 0;   // denormal
 3089|  6.44k|  } else if (category==fcZero) {
  ------------------
  |  Branch (3089:14): [True: 1.55k, False: 889]
  ------------------
 3090|  1.55k|    myexponent = 0;
 3091|  1.55k|    mysignificand = 0;
 3092|  1.55k|  } else if (category==fcInfinity) {
  ------------------
  |  Branch (3092:14): [True: 603, False: 286]
  ------------------
 3093|    603|    myexponent = 0xff;
 3094|    603|    mysignificand = 0;
 3095|    603|  } else {
 3096|    286|    assert(category == fcNaN && "Unknown category!");
  ------------------
  |  Branch (3096:5): [True: 286, False: 0]
  |  Branch (3096:5): [True: 286, Folded]
  |  Branch (3096:5): [True: 286, False: 0]
  ------------------
 3097|    286|    myexponent = 0xff;
 3098|    286|    mysignificand = (uint32_t)*significandParts();
 3099|    286|  }
 3100|       |
 3101|  8.89k|  return APInt(32, (((sign&1) << 31) | ((myexponent&0xff) << 23) |
 3102|  8.89k|                    (mysignificand & 0x7fffff)));
 3103|  8.89k|}
_ZNK7llvm_ks7APFloat14bitcastToAPIntEv:
 3140|  70.0k|{
 3141|  70.0k|  if (semantics == (const llvm_ks::fltSemantics*)&IEEEhalf)
  ------------------
  |  Branch (3141:7): [True: 0, False: 70.0k]
  ------------------
 3142|      0|    return convertHalfAPFloatToAPInt();
 3143|       |
 3144|  70.0k|  if (semantics == (const llvm_ks::fltSemantics*)&IEEEsingle)
  ------------------
  |  Branch (3144:7): [True: 8.89k, False: 61.1k]
  ------------------
 3145|  8.89k|    return convertFloatAPFloatToAPInt();
 3146|       |
 3147|  61.1k|  if (semantics == (const llvm_ks::fltSemantics*)&IEEEdouble)
  ------------------
  |  Branch (3147:7): [True: 61.1k, False: 0]
  ------------------
 3148|  61.1k|    return convertDoubleAPFloatToAPInt();
 3149|       |
 3150|      0|  if (semantics == (const llvm_ks::fltSemantics*)&IEEEquad)
  ------------------
  |  Branch (3150:7): [True: 0, False: 0]
  ------------------
 3151|      0|    return convertQuadrupleAPFloatToAPInt();
 3152|       |
 3153|      0|  if (semantics == (const llvm_ks::fltSemantics*)&PPCDoubleDouble)
  ------------------
  |  Branch (3153:7): [True: 0, False: 0]
  ------------------
 3154|      0|    return convertPPCDoubleDoubleAPFloatToAPInt();
 3155|       |
 3156|      0|  assert(semantics == (const llvm_ks::fltSemantics*)&x87DoubleExtended &&
  ------------------
  |  Branch (3156:3): [True: 0, False: 0]
  |  Branch (3156:3): [True: 0, Folded]
  |  Branch (3156:3): [True: 0, False: 0]
  ------------------
 3157|      0|         "unknown format!");
 3158|      0|  return convertF80LongDoubleAPFloatToAPInt();
 3159|      0|}
_ZN7llvm_ks7APFloat18initFromFloatAPIntERKNS_5APIntE:
 3321|    172|{
 3322|    172|  assert(api.getBitWidth()==32);
  ------------------
  |  Branch (3322:3): [True: 172, False: 0]
  ------------------
 3323|    172|  uint32_t i = (uint32_t)*api.getRawData();
 3324|    172|  uint32_t myexponent = (i >> 23) & 0xff;
 3325|    172|  uint32_t mysignificand = i & 0x7fffff;
 3326|       |
 3327|    172|  initialize(&APFloat::IEEEsingle);
 3328|    172|  assert(partCount()==1);
  ------------------
  |  Branch (3328:3): [True: 172, False: 0]
  ------------------
 3329|       |
 3330|    172|  sign = i >> 31;
 3331|    172|  if (myexponent==0 && mysignificand==0) {
  ------------------
  |  Branch (3331:7): [True: 0, False: 172]
  |  Branch (3331:24): [True: 0, False: 0]
  ------------------
 3332|       |    // exponent, significand meaningless
 3333|      0|    category = fcZero;
 3334|    172|  } else if (myexponent==0xff && mysignificand==0) {
  ------------------
  |  Branch (3334:14): [True: 0, False: 172]
  |  Branch (3334:34): [True: 0, False: 0]
  ------------------
 3335|       |    // exponent, significand meaningless
 3336|      0|    category = fcInfinity;
 3337|    172|  } else if (myexponent==0xff && mysignificand!=0) {
  ------------------
  |  Branch (3337:14): [True: 0, False: 172]
  |  Branch (3337:34): [True: 0, False: 0]
  ------------------
 3338|       |    // sign, exponent, significand meaningless
 3339|      0|    category = fcNaN;
 3340|      0|    *significandParts() = mysignificand;
 3341|    172|  } else {
 3342|    172|    category = fcNormal;
 3343|    172|    exponent = myexponent - 127;  //bias
 3344|    172|    *significandParts() = mysignificand;
 3345|    172|    if (myexponent==0)    // denormal
  ------------------
  |  Branch (3345:9): [True: 0, False: 172]
  ------------------
 3346|      0|      exponent = -126;
 3347|    172|    else
 3348|    172|      *significandParts() |= 0x800000; // integer bit
 3349|    172|  }
 3350|    172|}
_ZN7llvm_ks7APFloat13initFromAPIntEPKNS_12fltSemanticsERKNS_5APIntE:
 3391|    172|{
 3392|    172|  if (Sem == &IEEEhalf)
  ------------------
  |  Branch (3392:7): [True: 0, False: 172]
  ------------------
 3393|      0|    return initFromHalfAPInt(api);
 3394|    172|  if (Sem == &IEEEsingle)
  ------------------
  |  Branch (3394:7): [True: 172, False: 0]
  ------------------
 3395|    172|    return initFromFloatAPInt(api);
 3396|      0|  if (Sem == &IEEEdouble)
  ------------------
  |  Branch (3396:7): [True: 0, False: 0]
  ------------------
 3397|      0|    return initFromDoubleAPInt(api);
 3398|      0|  if (Sem == &x87DoubleExtended)
  ------------------
  |  Branch (3398:7): [True: 0, False: 0]
  ------------------
 3399|      0|    return initFromF80LongDoubleAPInt(api);
 3400|      0|  if (Sem == &IEEEquad)
  ------------------
  |  Branch (3400:7): [True: 0, False: 0]
  ------------------
 3401|      0|    return initFromQuadrupleAPInt(api);
 3402|      0|  if (Sem == &PPCDoubleDouble)
  ------------------
  |  Branch (3402:7): [True: 0, False: 0]
  ------------------
 3403|      0|    return initFromPPCDoubleDoubleAPInt(api);
 3404|       |
 3405|      0|  llvm_unreachable(nullptr);
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 3406|      0|}
_ZN7llvm_ks7APFloatC2Ef:
 3514|    172|APFloat::APFloat(float f) {
 3515|    172|  initFromAPInt(&IEEEsingle, APInt::floatToBits(f));
 3516|    172|}
_ZN7llvm_ks7APFloat7makeInfEb:
 3968|    602|APFloat::makeInf(bool Negative) {
 3969|    602|  category = fcInfinity;
 3970|    602|  sign = Negative;
 3971|    602|  exponent = semantics->maxExponent + 1;
 3972|    602|  APInt::tcSet(significandParts(), 0, partCount());
 3973|    602|}
_ZN7llvm_ks7APFloat8makeZeroEb:
 3976|  60.6k|APFloat::makeZero(bool Negative) {
 3977|  60.6k|  category = fcZero;
 3978|  60.6k|  sign = Negative;
 3979|  60.6k|  exponent = semantics->minExponent-1;
 3980|  60.6k|  APInt::tcSet(significandParts(), 0, partCount());  
 3981|  60.6k|}
APFloat.cpp:_ZL26skipLeadingZeroesAndAnyDotPKcS0_PS0_:
  236|  68.9k|{
  237|  68.9k|  StringRef::iterator p = begin;
  238|  68.9k|  *dot = end;
  239|  74.0k|  while (p != end && *p == '0')
  ------------------
  |  Branch (239:10): [True: 73.2k, False: 895]
  |  Branch (239:22): [True: 5.12k, False: 68.0k]
  ------------------
  240|  5.12k|    p++;
  241|       |
  242|  68.9k|  if (p != end && *p == '.') {
  ------------------
  |  Branch (242:7): [True: 68.0k, False: 895]
  |  Branch (242:19): [True: 61.4k, False: 6.60k]
  ------------------
  243|  61.4k|    *dot = p++;
  244|       |
  245|  61.4k|    assert(end - begin != 1 && "Significand has no digits");
  ------------------
  |  Branch (245:5): [True: 61.4k, False: 0]
  |  Branch (245:5): [True: 61.4k, Folded]
  |  Branch (245:5): [True: 61.4k, False: 0]
  ------------------
  246|       |
  247|   191k|    while (p != end && *p == '0')
  ------------------
  |  Branch (247:12): [True: 189k, False: 1.45k]
  |  Branch (247:24): [True: 129k, False: 60.0k]
  ------------------
  248|   129k|      p++;
  249|  61.4k|  }
  250|       |
  251|  68.9k|  return p;
  252|  68.9k|}
APFloat.cpp:_ZL13decDigitValuej:
  109|   718k|{
  110|   718k|  return c - '0';
  111|   718k|}
APFloat.cpp:_ZL12readExponentPKcS0_RN7llvm_ks7APFloat8opStatusE:
  120|  5.50k|{
  121|  5.50k|  bool isNegative;
  122|  5.50k|  unsigned int absExponent;
  123|  5.50k|  const unsigned int overlargeExponent = 24000;  /* FIXME.  */
  124|  5.50k|  StringRef::iterator p = begin;
  125|       |
  126|  5.50k|  fp = APFloat::opOK;
  127|       |
  128|       |  //assert(p != end && "Exponent has no digits"); // qq
  129|  5.50k|  if (p == end) {
  ------------------
  |  Branch (129:7): [True: 356, False: 5.15k]
  ------------------
  130|    356|      fp = APFloat::opInvalidOp;
  131|    356|      return 0;
  132|    356|  }
  133|       |
  134|  5.15k|  isNegative = (*p == '-');
  135|  5.15k|  if (*p == '-' || *p == '+') {
  ------------------
  |  Branch (135:7): [True: 1.24k, False: 3.91k]
  |  Branch (135:20): [True: 206, False: 3.70k]
  ------------------
  136|  1.44k|    p++;
  137|       |    //assert(p != end && "Exponent has no digits");
  138|  1.44k|    if (p == end) {
  ------------------
  |  Branch (138:9): [True: 336, False: 1.11k]
  ------------------
  139|    336|      fp = APFloat::opInvalidOp;
  140|    336|      return 0;
  141|    336|    }
  142|  1.44k|  }
  143|       |
  144|  4.81k|  absExponent = decDigitValue(*p++);
  145|       |  //assert(absExponent < 10U && "Invalid character in exponent");
  146|  4.81k|  if (absExponent >= 10U) {
  ------------------
  |  Branch (146:7): [True: 1, False: 4.81k]
  ------------------
  147|      1|      fp = APFloat::opInvalidOp;
  148|      1|      return 0;
  149|      1|  }
  150|       |
  151|  15.0k|  for (; p != end; ++p) {
  ------------------
  |  Branch (151:10): [True: 10.8k, False: 4.25k]
  ------------------
  152|  10.8k|    unsigned int value;
  153|       |
  154|  10.8k|    value = decDigitValue(*p);
  155|       |    //assert(value < 10U && "Invalid character in exponent");
  156|  10.8k|    if (value >= 10U) {
  ------------------
  |  Branch (156:9): [True: 1, False: 10.8k]
  ------------------
  157|      1|        fp = APFloat::opInvalidOp;
  158|      1|        return 0;
  159|      1|    }
  160|       |
  161|  10.8k|    value += absExponent * 10;
  162|  10.8k|    if (absExponent >= overlargeExponent) {
  ------------------
  |  Branch (162:9): [True: 555, False: 10.2k]
  ------------------
  163|    555|      absExponent = overlargeExponent;
  164|    555|      p = end;  /* outwit assert below */
  165|    555|      break;
  166|    555|    }
  167|  10.2k|    absExponent = value;
  168|  10.2k|  }
  169|       |
  170|       |  //assert(p == end && "Invalid exponent in exponent");
  171|  4.81k|  if (p != end) {
  ------------------
  |  Branch (171:7): [True: 0, False: 4.81k]
  ------------------
  172|      0|      fp = APFloat::opInvalidOp;
  173|      0|      return 0;
  174|      0|  }
  175|       |
  176|  4.81k|  if (isNegative)
  ------------------
  |  Branch (176:7): [True: 1.02k, False: 3.79k]
  ------------------
  177|  1.02k|    return -(int) absExponent;
  178|  3.79k|  else
  179|  3.79k|    return (int) absExponent;
  180|  4.81k|}
APFloat.cpp:_ZL16partCountForBitsj:
  102|  2.52M|{
  103|  2.52M|  return ((bits) + integerPartWidth - 1) / integerPartWidth;
  104|  2.52M|}
APFloat.cpp:_ZL10shiftRightPmjj:
  401|  10.1k|{
  402|  10.1k|  lostFraction lost_fraction;
  403|       |
  404|  10.1k|  lost_fraction = lostFractionThroughTruncation(dst, parts, bits);
  405|       |
  406|  10.1k|  APInt::tcShiftRight(dst, parts, bits);
  407|       |
  408|  10.1k|  return lost_fraction;
  409|  10.1k|}
APFloat.cpp:_ZL20combineLostFractionsN7llvm_ks12lostFractionES0_:
  415|  10.0k|{
  416|  10.0k|  if (lessSignificant != lfExactlyZero) {
  ------------------
  |  Branch (416:7): [True: 729, False: 9.30k]
  ------------------
  417|    729|    if (moreSignificant == lfExactlyZero)
  ------------------
  |  Branch (417:9): [True: 270, False: 459]
  ------------------
  418|    270|      moreSignificant = lfLessThanHalf;
  419|    459|    else if (moreSignificant == lfExactlyHalf)
  ------------------
  |  Branch (419:14): [True: 40, False: 419]
  ------------------
  420|     40|      moreSignificant = lfMoreThanHalf;
  421|    729|  }
  422|       |
  423|  10.0k|  return moreSignificant;
  424|  10.0k|}
APFloat.cpp:_ZL29lostFractionThroughTruncationPKmjj:
  381|  77.4k|{
  382|  77.4k|  unsigned int lsb;
  383|       |
  384|  77.4k|  lsb = APInt::tcLSB(parts, partCount);
  385|       |
  386|       |  /* Note this is guaranteed true if bits == 0, or LSB == -1U.  */
  387|  77.4k|  if (bits <= lsb)
  ------------------
  |  Branch (387:7): [True: 13.4k, False: 64.0k]
  ------------------
  388|  13.4k|    return lfExactlyZero;
  389|  64.0k|  if (bits == lsb + 1)
  ------------------
  |  Branch (389:7): [True: 578, False: 63.4k]
  ------------------
  390|    578|    return lfExactlyHalf;
  391|  63.4k|  if (bits <= partCount * integerPartWidth &&
  ------------------
  |  Branch (391:7): [True: 62.4k, False: 1.00k]
  ------------------
  392|  62.4k|      APInt::tcExtractBit(parts, bits - 1))
  ------------------
  |  Branch (392:7): [True: 41.5k, False: 20.9k]
  ------------------
  393|  41.5k|    return lfMoreThanHalf;
  394|       |
  395|  21.9k|  return lfLessThanHalf;
  396|  63.4k|}
APFloat.cpp:_ZL27trailingHexadecimalFractionPKcS0_j:
  349|    956|{
  350|    956|  unsigned int hexDigit;
  351|       |
  352|       |  /* If the first trailing digit isn't 0 or 8 we can work out the
  353|       |     fraction immediately.  */
  354|    956|  if (digitValue > 8)
  ------------------
  |  Branch (354:7): [True: 167, False: 789]
  ------------------
  355|    167|    return lfMoreThanHalf;
  356|    789|  else if (digitValue < 8 && digitValue > 0)
  ------------------
  |  Branch (356:12): [True: 640, False: 149]
  |  Branch (356:30): [True: 180, False: 460]
  ------------------
  357|    180|    return lfLessThanHalf;
  358|       |
  359|       |  // Otherwise we need to find the first non-zero digit.
  360|  3.01k|  while (p != end && (*p == '0' || *p == '.'))
  ------------------
  |  Branch (360:10): [True: 3.01k, False: 0]
  |  Branch (360:23): [True: 2.33k, False: 686]
  |  Branch (360:36): [True: 77, False: 609]
  ------------------
  361|  2.40k|    p++;
  362|       |
  363|    609|  assert(p != end && "Invalid trailing hexadecimal fraction!");
  ------------------
  |  Branch (363:3): [True: 609, False: 0]
  |  Branch (363:3): [True: 609, Folded]
  |  Branch (363:3): [True: 609, False: 0]
  ------------------
  364|       |
  365|    609|  hexDigit = hexDigitValue(*p);
  366|       |
  367|       |  /* If we ran off the end it is exactly zero or one-half, otherwise
  368|       |     a little more.  */
  369|    609|  if (hexDigit == -1U)
  ------------------
  |  Branch (369:7): [True: 189, False: 420]
  ------------------
  370|    189|    return digitValue == 0 ? lfExactlyZero: lfExactlyHalf;
  ------------------
  |  Branch (370:12): [True: 147, False: 42]
  ------------------
  371|    420|  else
  372|    420|    return digitValue == 0 ? lfLessThanHalf: lfMoreThanHalf;
  ------------------
  |  Branch (372:12): [True: 313, False: 107]
  ------------------
  373|    609|}
APFloat.cpp:_ZL13totalExponentPKcS0_i:
  187|  5.13k|{
  188|  5.13k|  int unsignedExponent;
  189|  5.13k|  bool negative, overflow;
  190|  5.13k|  int exponent = 0;
  191|       |
  192|  5.13k|  assert(p != end && "Exponent has no digits");
  ------------------
  |  Branch (192:3): [True: 5.13k, False: 0]
  |  Branch (192:3): [True: 5.13k, Folded]
  |  Branch (192:3): [True: 5.13k, False: 0]
  ------------------
  193|       |
  194|  5.13k|  negative = *p == '-';
  195|  5.13k|  if (*p == '-' || *p == '+') {
  ------------------
  |  Branch (195:7): [True: 1.09k, False: 4.04k]
  |  Branch (195:20): [True: 390, False: 3.65k]
  ------------------
  196|  1.48k|    p++;
  197|  1.48k|    assert(p != end && "Exponent has no digits");
  ------------------
  |  Branch (197:5): [True: 1.48k, False: 0]
  |  Branch (197:5): [True: 1.48k, Folded]
  |  Branch (197:5): [True: 1.48k, False: 0]
  ------------------
  198|  1.48k|  }
  199|       |
  200|  5.13k|  unsignedExponent = 0;
  201|  5.13k|  overflow = false;
  202|  19.0k|  for (; p != end; ++p) {
  ------------------
  |  Branch (202:10): [True: 14.4k, False: 4.59k]
  ------------------
  203|  14.4k|    unsigned int value;
  204|       |
  205|  14.4k|    value = decDigitValue(*p);
  206|  14.4k|    assert(value < 10U && "Invalid character in exponent");
  ------------------
  |  Branch (206:5): [True: 14.4k, False: 0]
  |  Branch (206:5): [True: 14.4k, Folded]
  |  Branch (206:5): [True: 14.4k, False: 0]
  ------------------
  207|       |
  208|  14.4k|    unsignedExponent = unsignedExponent * 10 + value;
  209|  14.4k|    if (unsignedExponent > 32767) {
  ------------------
  |  Branch (209:9): [True: 540, False: 13.9k]
  ------------------
  210|    540|      overflow = true;
  211|    540|      break;
  212|    540|    }
  213|  14.4k|  }
  214|       |
  215|  5.13k|  if (exponentAdjustment > 32767 || exponentAdjustment < -32768)
  ------------------
  |  Branch (215:7): [True: 0, False: 5.13k]
  |  Branch (215:37): [True: 0, False: 5.13k]
  ------------------
  216|      0|    overflow = true;
  217|       |
  218|  5.13k|  if (!overflow) {
  ------------------
  |  Branch (218:7): [True: 4.59k, False: 540]
  ------------------
  219|  4.59k|    exponent = unsignedExponent;
  220|  4.59k|    if (negative)
  ------------------
  |  Branch (220:9): [True: 727, False: 3.87k]
  ------------------
  221|    727|      exponent = -exponent;
  222|  4.59k|    exponent += exponentAdjustment;
  223|  4.59k|    if (exponent > 32767 || exponent < -32768)
  ------------------
  |  Branch (223:9): [True: 44, False: 4.55k]
  |  Branch (223:29): [True: 383, False: 4.17k]
  ------------------
  224|    427|      overflow = true;
  225|  4.59k|  }
  226|       |
  227|  5.13k|  if (overflow)
  ------------------
  |  Branch (227:7): [True: 967, False: 4.17k]
  ------------------
  228|    967|    exponent = negative ? -32768: 32767;
  ------------------
  |  Branch (228:16): [True: 746, False: 221]
  ------------------
  229|       |
  230|  5.13k|  return exponent;
  231|  5.13k|}
APFloat.cpp:_ZL8powerOf5Pmj:
  494|  58.8k|{
  495|  58.8k|  static const integerPart firstEightPowers[] = { 1, 5, 25, 125, 625, 3125,
  496|  58.8k|                                                  15625, 78125 };
  497|  58.8k|  integerPart pow5s[maxPowerOfFiveParts * 2 + 5];
  498|  58.8k|  pow5s[0] = 78125 * 5;
  499|       |
  500|  58.8k|  unsigned int partsCount[16] = { 1 };
  501|  58.8k|  integerPart scratch[maxPowerOfFiveParts], *p1, *p2, *pow5;
  502|  58.8k|  unsigned int result;
  503|  58.8k|  assert(power <= maxExponent);
  ------------------
  |  Branch (503:3): [True: 58.8k, False: 0]
  ------------------
  504|       |
  505|  58.8k|  p1 = dst;
  506|  58.8k|  p2 = scratch;
  507|       |
  508|  58.8k|  *p1 = firstEightPowers[power & 7];
  509|  58.8k|  power >>= 3;
  510|       |
  511|  58.8k|  result = 1;
  512|  58.8k|  pow5 = pow5s;
  513|       |
  514|  84.1k|  for (unsigned int n = 0; power; power >>= 1, n++) {
  ------------------
  |  Branch (514:28): [True: 25.3k, False: 58.8k]
  ------------------
  515|  25.3k|    unsigned int pc;
  516|       |
  517|  25.3k|    pc = partsCount[n];
  518|       |
  519|       |    /* Calculate pow(5,pow(2,n+3)) if we haven't yet.  */
  520|  25.3k|    if (pc == 0) {
  ------------------
  |  Branch (520:9): [True: 17.3k, False: 8.03k]
  ------------------
  521|  17.3k|      pc = partsCount[n - 1];
  522|  17.3k|      APInt::tcFullMultiply(pow5, pow5 - pc, pow5 - pc, pc, pc);
  523|  17.3k|      pc *= 2;
  524|  17.3k|      if (pow5[pc - 1] == 0)
  ------------------
  |  Branch (524:11): [True: 10.6k, False: 6.67k]
  ------------------
  525|  10.6k|        pc--;
  526|  17.3k|      partsCount[n] = pc;
  527|  17.3k|    }
  528|       |
  529|  25.3k|    if (power & 1) {
  ------------------
  |  Branch (529:9): [True: 16.0k, False: 9.28k]
  ------------------
  530|  16.0k|      integerPart *tmp;
  531|       |
  532|  16.0k|      APInt::tcFullMultiply(p2, p1, pow5, result, pc);
  533|  16.0k|      result += pc;
  534|  16.0k|      if (p2[result - 1] == 0)
  ------------------
  |  Branch (534:11): [True: 13.5k, False: 2.48k]
  ------------------
  535|  13.5k|        result--;
  536|       |
  537|       |      /* Now result is in p1 with partsCount parts and p2 is scratch
  538|       |         space.  */
  539|  16.0k|      tmp = p1, p1 = p2, p2 = tmp;
  540|  16.0k|    }
  541|       |
  542|  25.3k|    pow5 += pc;
  543|  25.3k|  }
  544|       |
  545|  58.8k|  if (p1 != dst)
  ------------------
  |  Branch (545:7): [True: 3.46k, False: 55.3k]
  ------------------
  546|  3.46k|    APInt::tcAssign(dst, p1, result);
  547|       |
  548|  58.8k|  return result;
  549|  58.8k|}
APFloat.cpp:_ZL10HUerrBoundbjj:
  435|  60.6k|{
  436|  60.6k|  assert(HUerr1 < 2 || HUerr2 < 2 || (HUerr1 + HUerr2 < 8));
  ------------------
  |  Branch (436:3): [True: 60.6k, False: 0]
  |  Branch (436:3): [True: 0, False: 0]
  |  Branch (436:3): [True: 0, False: 0]
  |  Branch (436:3): [True: 60.6k, False: 0]
  ------------------
  437|       |
  438|  60.6k|  if (HUerr1 + HUerr2 == 0)
  ------------------
  |  Branch (438:7): [True: 6.08k, False: 54.5k]
  ------------------
  439|  6.08k|    return inexactMultiply * 2;  /* <= inexactMultiply half-ulps.  */
  440|  54.5k|  else
  441|  54.5k|    return inexactMultiply + 2 * (HUerr1 + HUerr2);
  442|  60.6k|}
APFloat.cpp:_ZL16ulpsFromBoundaryPKmjb:
  449|  60.6k|{
  450|  60.6k|  unsigned int count, partBits;
  451|  60.6k|  integerPart part, boundary;
  452|       |
  453|  60.6k|  assert(bits != 0);
  ------------------
  |  Branch (453:3): [True: 60.6k, False: 0]
  ------------------
  454|       |
  455|  60.6k|  bits--;
  456|  60.6k|  count = bits / integerPartWidth;
  457|  60.6k|  partBits = bits % integerPartWidth + 1;
  458|       |
  459|  60.6k|  part = parts[count] & (~(integerPart) 0 >> (integerPartWidth - partBits));
  460|       |
  461|  60.6k|  if (isNearest)
  ------------------
  |  Branch (461:7): [True: 60.6k, False: 0]
  ------------------
  462|  60.6k|    boundary = (integerPart) 1 << (partBits - 1);
  463|      0|  else
  464|      0|    boundary = 0;
  465|       |
  466|  60.6k|  if (count == 0) {
  ------------------
  |  Branch (466:7): [True: 58.8k, False: 1.80k]
  ------------------
  467|  58.8k|    if (part - boundary <= boundary - part)
  ------------------
  |  Branch (467:9): [True: 37.7k, False: 21.1k]
  ------------------
  468|  37.7k|      return part - boundary;
  469|  21.1k|    else
  470|  21.1k|      return boundary - part;
  471|  58.8k|  }
  472|       |
  473|  1.80k|  if (part == boundary) {
  ------------------
  |  Branch (473:7): [True: 918, False: 885]
  ------------------
  474|  4.39k|    while (--count)
  ------------------
  |  Branch (474:12): [True: 3.50k, False: 887]
  ------------------
  475|  3.50k|      if (parts[count])
  ------------------
  |  Branch (475:11): [True: 31, False: 3.47k]
  ------------------
  476|     31|        return ~(integerPart) 0; /* A lot.  */
  477|       |
  478|    887|    return parts[0];
  479|    918|  } else if (part == boundary - 1) {
  ------------------
  |  Branch (479:14): [True: 658, False: 227]
  ------------------
  480|  2.87k|    while (--count)
  ------------------
  |  Branch (480:12): [True: 2.30k, False: 568]
  ------------------
  481|  2.30k|      if (~parts[count])
  ------------------
  |  Branch (481:11): [True: 90, False: 2.21k]
  ------------------
  482|     90|        return ~(integerPart) 0; /* A lot.  */
  483|       |
  484|    568|    return -parts[0];
  485|    658|  }
  486|       |
  487|    227|  return ~(integerPart) 0; /* A lot.  */
  488|  1.80k|}

_ZN7llvm_ks5APInt12initSlowCaseEjmb:
   77|   799k|void APInt::initSlowCase(unsigned numBits, uint64_t val, bool isSigned) {
   78|   799k|  pVal = getClearedMemory(getNumWords());
   79|   799k|  pVal[0] = val;
   80|   799k|  if (isSigned && int64_t(val) < 0)
  ------------------
  |  Branch (80:7): [True: 790k, False: 8.48k]
  |  Branch (80:19): [True: 0, False: 790k]
  ------------------
   81|      0|    for (unsigned i = 1; i < getNumWords(); ++i)
  ------------------
  |  Branch (81:26): [True: 0, False: 0]
  ------------------
   82|      0|      pVal[i] = -1ULL;
   83|   799k|}
_ZN7llvm_ks5APInt12initSlowCaseERKS0_:
   85|  1.32M|void APInt::initSlowCase(const APInt& that) {
   86|  1.32M|  pVal = getMemory(getNumWords());
   87|  1.32M|  memcpy(pVal, that.pVal, getNumWords() * APINT_WORD_SIZE);
   88|  1.32M|}
_ZN7llvm_ks5APInt14AssignSlowCaseERKS0_:
  123|  2.97k|APInt& APInt::AssignSlowCase(const APInt& RHS) {
  124|       |  // Don't do anything for X = X
  125|  2.97k|  if (this == &RHS)
  ------------------
  |  Branch (125:7): [True: 0, False: 2.97k]
  ------------------
  126|      0|    return *this;
  127|       |
  128|  2.97k|  if (BitWidth == RHS.getBitWidth()) {
  ------------------
  |  Branch (128:7): [True: 110, False: 2.86k]
  ------------------
  129|       |    // assume same bit-width single-word case is already handled
  130|    110|    assert(!isSingleWord());
  ------------------
  |  Branch (130:5): [True: 110, False: 0]
  ------------------
  131|    110|    memcpy(pVal, RHS.pVal, getNumWords() * APINT_WORD_SIZE);
  132|    110|    return *this;
  133|    110|  }
  134|       |
  135|  2.86k|  if (isSingleWord()) {
  ------------------
  |  Branch (135:7): [True: 2.27k, False: 585]
  ------------------
  136|       |    // assume case where both are single words is already handled
  137|  2.27k|    assert(!RHS.isSingleWord());
  ------------------
  |  Branch (137:5): [True: 2.27k, False: 0]
  ------------------
  138|  2.27k|    VAL = 0;
  139|  2.27k|    pVal = getMemory(RHS.getNumWords());
  140|  2.27k|    memcpy(pVal, RHS.pVal, RHS.getNumWords() * APINT_WORD_SIZE);
  141|  2.27k|  } else if (getNumWords() == RHS.getNumWords())
  ------------------
  |  Branch (141:14): [True: 0, False: 585]
  ------------------
  142|      0|    memcpy(pVal, RHS.pVal, RHS.getNumWords() * APINT_WORD_SIZE);
  143|    585|  else if (RHS.isSingleWord()) {
  ------------------
  |  Branch (143:12): [True: 575, False: 10]
  ------------------
  144|    575|    delete [] pVal;
  145|    575|    VAL = RHS.VAL;
  146|    575|  } else {
  147|     10|    delete [] pVal;
  148|     10|    pVal = getMemory(RHS.getNumWords());
  149|     10|    memcpy(pVal, RHS.pVal, RHS.getNumWords() * APINT_WORD_SIZE);
  150|     10|  }
  151|  2.86k|  BitWidth = RHS.BitWidth;
  152|  2.86k|  return clearUnusedBits();
  153|  2.86k|}
_ZN7llvm_ks5APIntaSEm:
  155|   641k|APInt& APInt::operator=(uint64_t RHS) {
  156|   641k|  if (isSingleWord())
  ------------------
  |  Branch (156:7): [True: 0, False: 641k]
  ------------------
  157|      0|    VAL = RHS;
  158|   641k|  else {
  159|   641k|    pVal[0] = RHS;
  160|   641k|    memset(pVal+1, 0, (getNumWords() - 1) * APINT_WORD_SIZE);
  161|   641k|  }
  162|   641k|  return clearUnusedBits();
  163|   641k|}
_ZNK7llvm_ks5APInt9getHiBitsEj:
  686|    293|APInt APInt::getHiBits(unsigned numBits) const {
  687|    293|  return APIntOps::lshr(*this, BitWidth - numBits);
  688|    293|}
_ZNK7llvm_ks5APInt9getLoBitsEj:
  691|    293|APInt APInt::getLoBits(unsigned numBits) const {
  692|    293|  return APIntOps::lshr(APIntOps::shl(*this, BitWidth - numBits),
  693|    293|                        BitWidth - numBits);
  694|    293|}
_ZNK7llvm_ks5APInt25countLeadingZerosSlowCaseEv:
  696|   845k|unsigned APInt::countLeadingZerosSlowCase() const {
  697|       |  // Treat the most significand word differently because it might have
  698|       |  // meaningless bits set beyond the precision.
  699|   845k|  unsigned BitsInMSW = BitWidth % APINT_BITS_PER_WORD;
  700|   845k|  integerPart MSWMask;
  701|   845k|  if (BitsInMSW) MSWMask = (integerPart(1) << BitsInMSW) - 1;
  ------------------
  |  Branch (701:7): [True: 2.94k, False: 842k]
  ------------------
  702|   842k|  else {
  703|   842k|    MSWMask = ~integerPart(0);
  704|   842k|    BitsInMSW = APINT_BITS_PER_WORD;
  705|   842k|  }
  706|       |
  707|   845k|  unsigned i = getNumWords();
  708|   845k|  integerPart MSW = pVal[i-1] & MSWMask;
  709|   845k|  if (MSW)
  ------------------
  |  Branch (709:7): [True: 6.35k, False: 838k]
  ------------------
  710|  6.35k|    return llvm_ks::countLeadingZeros(MSW) - (APINT_BITS_PER_WORD - BitsInMSW);
  711|       |
  712|   838k|  unsigned Count = BitsInMSW;
  713|   839k|  for (--i; i > 0u; --i) {
  ------------------
  |  Branch (713:13): [True: 838k, False: 272]
  ------------------
  714|   838k|    if (pVal[i-1] == 0)
  ------------------
  |  Branch (714:9): [True: 282, False: 838k]
  ------------------
  715|    282|      Count += APINT_BITS_PER_WORD;
  716|   838k|    else {
  717|   838k|      Count += llvm_ks::countLeadingZeros(pVal[i-1]);
  718|   838k|      break;
  719|   838k|    }
  720|   838k|  }
  721|   838k|  return Count;
  722|   845k|}
_ZNK7llvm_ks5APInt4zextEj:
  998|  2.93k|APInt APInt::zext(unsigned width) const {
  999|  2.93k|  assert(width > BitWidth && "Invalid APInt ZeroExtend request");
  ------------------
  |  Branch (999:3): [True: 2.93k, False: 0]
  |  Branch (999:3): [True: 2.93k, Folded]
  |  Branch (999:3): [True: 2.93k, False: 0]
  ------------------
 1000|       |
 1001|  2.93k|  if (width <= APINT_BITS_PER_WORD)
  ------------------
  |  Branch (1001:7): [True: 0, False: 2.93k]
  ------------------
 1002|      0|    return APInt(width, VAL);
 1003|       |
 1004|  2.93k|  APInt Result(getMemory(getNumWords(width)), width);
 1005|       |
 1006|       |  // Copy words.
 1007|  2.93k|  unsigned i;
 1008|  8.81k|  for (i = 0; i != getNumWords(); i++)
  ------------------
  |  Branch (1008:15): [True: 5.87k, False: 2.93k]
  ------------------
 1009|  5.87k|    Result.pVal[i] = getRawData()[i];
 1010|       |
 1011|       |  // Zero remaining words.
 1012|  2.93k|  memset(&Result.pVal[i], 0, (Result.getNumWords() - i) * APINT_WORD_SIZE);
 1013|       |
 1014|  2.93k|  return Result;
 1015|  2.93k|}
_ZNK7llvm_ks5APInt4lshrEj:
 1144|  1.23k|APInt APInt::lshr(unsigned shiftAmt) const {
 1145|  1.23k|  if (isSingleWord()) {
  ------------------
  |  Branch (1145:7): [True: 646, False: 586]
  ------------------
 1146|    646|    if (shiftAmt >= BitWidth)
  ------------------
  |  Branch (1146:9): [True: 0, False: 646]
  ------------------
 1147|      0|      return APInt(BitWidth, 0);
 1148|    646|    else
 1149|    646|      return APInt(BitWidth, this->VAL >> shiftAmt);
 1150|    646|  }
 1151|       |
 1152|       |  // If all the bits were shifted out, the result is 0. This avoids issues
 1153|       |  // with shifting by the size of the integer type, which produces undefined
 1154|       |  // results. We define these "undefined results" to always be 0.
 1155|    586|  if (shiftAmt >= BitWidth)
  ------------------
  |  Branch (1155:7): [True: 0, False: 586]
  ------------------
 1156|      0|    return APInt(BitWidth, 0);
 1157|       |
 1158|       |  // If none of the bits are shifted out, the result is *this. This avoids
 1159|       |  // issues with shifting by the size of the integer type, which produces
 1160|       |  // undefined results in the code below. This is also an optimization.
 1161|    586|  if (shiftAmt == 0)
  ------------------
  |  Branch (1161:7): [True: 0, False: 586]
  ------------------
 1162|      0|    return *this;
 1163|       |
 1164|       |  // Create some space for the result.
 1165|    586|  uint64_t * val = new uint64_t[getNumWords()];
 1166|       |
 1167|       |  // If we are shifting less than a word, compute the shift with a simple carry
 1168|    586|  if (shiftAmt < APINT_BITS_PER_WORD) {
  ------------------
  |  Branch (1168:7): [True: 0, False: 586]
  ------------------
 1169|      0|    lshrNear(val, pVal, getNumWords(), shiftAmt);
 1170|      0|    APInt Result(val, BitWidth);
 1171|      0|    Result.clearUnusedBits();
 1172|      0|    return Result;
 1173|      0|  }
 1174|       |
 1175|       |  // Compute some values needed by the remaining shift algorithms
 1176|    586|  unsigned wordShift = shiftAmt % APINT_BITS_PER_WORD;
 1177|    586|  unsigned offset = shiftAmt / APINT_BITS_PER_WORD;
 1178|       |
 1179|       |  // If we are shifting whole words, just move whole words
 1180|    586|  if (wordShift == 0) {
  ------------------
  |  Branch (1180:7): [True: 581, False: 5]
  ------------------
 1181|  1.16k|    for (unsigned i = 0; i < getNumWords() - offset; ++i)
  ------------------
  |  Branch (1181:26): [True: 586, False: 581]
  ------------------
 1182|    586|      val[i] = pVal[i+offset];
 1183|  1.16k|    for (unsigned i = getNumWords()-offset; i < getNumWords(); i++)
  ------------------
  |  Branch (1183:45): [True: 581, False: 581]
  ------------------
 1184|    581|      val[i] = 0;
 1185|    581|    APInt Result(val, BitWidth);
 1186|    581|    Result.clearUnusedBits();
 1187|    581|    return Result;
 1188|    581|  }
 1189|       |
 1190|       |  // Shift the low order words
 1191|      5|  unsigned breakWord = getNumWords() - offset -1;
 1192|     10|  for (unsigned i = 0; i < breakWord; ++i)
  ------------------
  |  Branch (1192:24): [True: 5, False: 5]
  ------------------
 1193|      5|    val[i] = (pVal[i+offset] >> wordShift) |
 1194|      5|             (pVal[i+offset+1] << (APINT_BITS_PER_WORD - wordShift));
 1195|       |  // Shift the break word.
 1196|      5|  val[breakWord] = pVal[breakWord+offset] >> wordShift;
 1197|       |
 1198|       |  // Remaining words are 0
 1199|     10|  for (unsigned i = breakWord+1; i < getNumWords(); ++i)
  ------------------
  |  Branch (1199:34): [True: 5, False: 5]
  ------------------
 1200|      5|    val[i] = 0;
 1201|      5|  APInt Result(val, BitWidth);
 1202|      5|  Result.clearUnusedBits();
 1203|      5|  return Result;
 1204|    586|}
_ZNK7llvm_ks5APInt11shlSlowCaseEj:
 1213|  1.56M|APInt APInt::shlSlowCase(unsigned shiftAmt) const {
 1214|       |  // If all the bits were shifted out, the result is 0. This avoids issues
 1215|       |  // with shifting by the size of the integer type, which produces undefined
 1216|       |  // results. We define these "undefined results" to always be 0.
 1217|  1.56M|  if (shiftAmt == BitWidth)
  ------------------
  |  Branch (1217:7): [True: 0, False: 1.56M]
  ------------------
 1218|      0|    return APInt(BitWidth, 0);
 1219|       |
 1220|       |  // If none of the bits are shifted out, the result is *this. This avoids a
 1221|       |  // lshr by the words size in the loop below which can produce incorrect
 1222|       |  // results. It also avoids the expensive computation below for a common case.
 1223|  1.56M|  if (shiftAmt == 0)
  ------------------
  |  Branch (1223:7): [True: 0, False: 1.56M]
  ------------------
 1224|      0|    return *this;
 1225|       |
 1226|       |  // Create some space for the result.
 1227|  1.56M|  uint64_t * val = new uint64_t[getNumWords()];
 1228|       |
 1229|       |  // If we are shifting less than a word, do it the easy way
 1230|  1.56M|  if (shiftAmt < APINT_BITS_PER_WORD) {
  ------------------
  |  Branch (1230:7): [True: 1.56M, False: 293]
  ------------------
 1231|  1.56M|    uint64_t carry = 0;
 1232|  11.9M|    for (unsigned i = 0; i < getNumWords(); i++) {
  ------------------
  |  Branch (1232:26): [True: 10.3M, False: 1.56M]
  ------------------
 1233|  10.3M|      val[i] = pVal[i] << shiftAmt | carry;
 1234|  10.3M|      carry = pVal[i] >> (APINT_BITS_PER_WORD - shiftAmt);
 1235|  10.3M|    }
 1236|  1.56M|    APInt Result(val, BitWidth);
 1237|  1.56M|    Result.clearUnusedBits();
 1238|  1.56M|    return Result;
 1239|  1.56M|  }
 1240|       |
 1241|       |  // Compute some values needed by the remaining shift algorithms
 1242|    293|  unsigned wordShift = shiftAmt % APINT_BITS_PER_WORD;
 1243|    293|  unsigned offset = shiftAmt / APINT_BITS_PER_WORD;
 1244|       |
 1245|       |  // If we are shifting whole words, just move whole words
 1246|    293|  if (wordShift == 0) {
  ------------------
  |  Branch (1246:7): [True: 288, False: 5]
  ------------------
 1247|    576|    for (unsigned i = 0; i < offset; i++)
  ------------------
  |  Branch (1247:26): [True: 288, False: 288]
  ------------------
 1248|    288|      val[i] = 0;
 1249|    576|    for (unsigned i = offset; i < getNumWords(); i++)
  ------------------
  |  Branch (1249:31): [True: 288, False: 288]
  ------------------
 1250|    288|      val[i] = pVal[i-offset];
 1251|    288|    APInt Result(val, BitWidth);
 1252|    288|    Result.clearUnusedBits();
 1253|    288|    return Result;
 1254|    288|  }
 1255|       |
 1256|       |  // Copy whole words from this to Result.
 1257|      5|  unsigned i = getNumWords() - 1;
 1258|     10|  for (; i > offset; --i)
  ------------------
  |  Branch (1258:10): [True: 5, False: 5]
  ------------------
 1259|      5|    val[i] = pVal[i-offset] << wordShift |
 1260|      5|             pVal[i-offset-1] >> (APINT_BITS_PER_WORD - wordShift);
 1261|      5|  val[offset] = pVal[0] << wordShift;
 1262|     10|  for (i = 0; i < offset; ++i)
  ------------------
  |  Branch (1262:15): [True: 5, False: 5]
  ------------------
 1263|      5|    val[i] = 0;
 1264|      5|  APInt Result(val, BitWidth);
 1265|      5|  Result.clearUnusedBits();
 1266|      5|  return Result;
 1267|    293|}
_ZN7llvm_ks5APInt5tcSetEPmmj:
 2307|   106k|{
 2308|   106k|  unsigned int i;
 2309|       |
 2310|   106k|  assert(parts > 0);
  ------------------
  |  Branch (2310:3): [True: 106k, False: 0]
  ------------------
 2311|       |
 2312|   106k|  dst[0] = part;
 2313|   146k|  for (i = 1; i < parts; i++)
  ------------------
  |  Branch (2313:15): [True: 40.0k, False: 106k]
  ------------------
 2314|  40.0k|    dst[i] = 0;
 2315|   106k|}
_ZN7llvm_ks5APInt8tcAssignEPmPKmj:
 2320|   189k|{
 2321|   189k|  unsigned int i;
 2322|       |
 2323|   400k|  for (i = 0; i < parts; i++)
  ------------------
  |  Branch (2323:15): [True: 210k, False: 189k]
  ------------------
 2324|   210k|    dst[i] = src[i];
 2325|   189k|}
_ZN7llvm_ks5APInt8tcIsZeroEPKmj:
 2330|   152k|{
 2331|   152k|  unsigned int i;
 2332|       |
 2333|   164k|  for (i = 0; i < parts; i++)
  ------------------
  |  Branch (2333:15): [True: 161k, False: 2.43k]
  ------------------
 2334|   161k|    if (src[i])
  ------------------
  |  Branch (2334:9): [True: 150k, False: 11.0k]
  ------------------
 2335|   150k|      return false;
 2336|       |
 2337|  2.43k|  return true;
 2338|   152k|}
_ZN7llvm_ks5APInt12tcExtractBitEPKmj:
 2343|   123k|{
 2344|   123k|  return (parts[bit / integerPartWidth] &
 2345|   123k|          ((integerPart) 1 << bit % integerPartWidth)) != 0;
 2346|   123k|}
_ZN7llvm_ks5APInt8tcSetBitEPmj:
 2351|  1.96M|{
 2352|  1.96M|  parts[bit / integerPartWidth] |= (integerPart) 1 << (bit % integerPartWidth);
 2353|  1.96M|}
_ZN7llvm_ks5APInt5tcLSBEPKmj:
 2367|  77.4k|{
 2368|  77.4k|  unsigned int i, lsb;
 2369|       |
 2370|  81.4k|  for (i = 0; i < n; i++) {
  ------------------
  |  Branch (2370:15): [True: 81.4k, False: 0]
  ------------------
 2371|  81.4k|      if (parts[i] != 0) {
  ------------------
  |  Branch (2371:11): [True: 77.4k, False: 3.97k]
  ------------------
 2372|  77.4k|          lsb = partLSB(parts[i]);
 2373|       |
 2374|  77.4k|          return lsb + i * integerPartWidth;
 2375|  77.4k|      }
 2376|  81.4k|  }
 2377|       |
 2378|      0|  return -1U;
 2379|  77.4k|}
_ZN7llvm_ks5APInt5tcMSBEPKmj:
 2385|   464k|{
 2386|   464k|  unsigned int msb;
 2387|       |
 2388|   469k|  do {
 2389|   469k|    --n;
 2390|       |
 2391|   469k|    if (parts[n] != 0) {
  ------------------
  |  Branch (2391:9): [True: 463k, False: 6.04k]
  ------------------
 2392|   463k|      msb = partMSB(parts[n]);
 2393|       |
 2394|   463k|      return msb + n * integerPartWidth;
 2395|   463k|    }
 2396|   469k|  } while (n);
  ------------------
  |  Branch (2396:12): [True: 4.91k, False: 1.13k]
  ------------------
 2397|       |
 2398|  1.13k|  return -1U;
 2399|   464k|}
_ZN7llvm_ks5APInt9tcExtractEPmjPKmjj:
 2408|   180k|{
 2409|   180k|  unsigned int firstSrcPart, dstParts, shift, n;
 2410|       |
 2411|   180k|  dstParts = (srcBits + integerPartWidth - 1) / integerPartWidth;
 2412|   180k|  assert(dstParts <= dstCount);
  ------------------
  |  Branch (2412:3): [True: 180k, False: 0]
  ------------------
 2413|       |
 2414|   180k|  firstSrcPart = srcLSB / integerPartWidth;
 2415|   180k|  tcAssign (dst, src + firstSrcPart, dstParts);
 2416|       |
 2417|   180k|  shift = srcLSB % integerPartWidth;
 2418|   180k|  tcShiftRight (dst, dstParts, shift);
 2419|       |
 2420|       |  /* We now have (dstParts * integerPartWidth - shift) bits from SRC
 2421|       |     in DST.  If this is less that srcBits, append the rest, else
 2422|       |     clear the high bits.  */
 2423|   180k|  n = dstParts * integerPartWidth - shift;
 2424|   180k|  if (n < srcBits) {
  ------------------
  |  Branch (2424:7): [True: 7.85k, False: 172k]
  ------------------
 2425|  7.85k|    integerPart mask = lowBitMask (srcBits - n);
 2426|  7.85k|    dst[dstParts - 1] |= ((src[firstSrcPart + dstParts] & mask)
 2427|  7.85k|                          << n % integerPartWidth);
 2428|   172k|  } else if (n > srcBits) {
  ------------------
  |  Branch (2428:14): [True: 172k, False: 257]
  ------------------
 2429|   172k|    if (srcBits % integerPartWidth)
  ------------------
  |  Branch (2429:9): [True: 171k, False: 256]
  ------------------
 2430|   171k|      dst[dstParts - 1] &= lowBitMask (srcBits % integerPartWidth);
 2431|   172k|  }
 2432|       |
 2433|       |  /* Clear high parts.  */
 2434|   185k|  while (dstParts < dstCount)
  ------------------
  |  Branch (2434:10): [True: 5.16k, False: 180k]
  ------------------
 2435|  5.16k|    dst[dstParts++] = 0;
 2436|   180k|}
_ZN7llvm_ks5APInt10tcSubtractEPmPKmmj:
 2467|  1.96M|{
 2468|  1.96M|  unsigned int i;
 2469|       |
 2470|  1.96M|  assert(c <= 1);
  ------------------
  |  Branch (2470:3): [True: 1.96M, False: 0]
  ------------------
 2471|       |
 2472|  18.0M|  for (i = 0; i < parts; i++) {
  ------------------
  |  Branch (2472:15): [True: 16.0M, False: 1.96M]
  ------------------
 2473|  16.0M|    integerPart l;
 2474|       |
 2475|  16.0M|    l = dst[i];
 2476|  16.0M|    if (c) {
  ------------------
  |  Branch (2476:9): [True: 3.57M, False: 12.4M]
  ------------------
 2477|  3.57M|      dst[i] -= rhs[i] + 1;
 2478|  3.57M|      c = (dst[i] >= l);
 2479|  12.4M|    } else {
 2480|  12.4M|      dst[i] -= rhs[i];
 2481|  12.4M|      c = (dst[i] > l);
 2482|  12.4M|    }
 2483|  16.0M|  }
 2484|       |
 2485|  1.96M|  return c;
 2486|  1.96M|}
_ZN7llvm_ks5APInt14tcMultiplyPartEPmPKmmmjjb:
 2512|   125k|{
 2513|   125k|  unsigned int i, n;
 2514|       |
 2515|       |  /* Otherwise our writes of DST kill our later reads of SRC.  */
 2516|   125k|  assert(dst <= src || dst >= src + srcParts);
  ------------------
  |  Branch (2516:3): [True: 85.9k, False: 39.5k]
  |  Branch (2516:3): [True: 39.5k, False: 0]
  |  Branch (2516:3): [True: 125k, False: 0]
  ------------------
 2517|   125k|  assert(dstParts <= srcParts + 1);
  ------------------
  |  Branch (2517:3): [True: 125k, False: 0]
  ------------------
 2518|       |
 2519|       |  /* N loops; minimum of dstParts and srcParts.  */
 2520|   125k|  n = dstParts < srcParts ? dstParts: srcParts;
  ------------------
  |  Branch (2520:7): [True: 0, False: 125k]
  ------------------
 2521|       |
 2522|   463k|  for (i = 0; i < n; i++) {
  ------------------
  |  Branch (2522:15): [True: 338k, False: 125k]
  ------------------
 2523|   338k|    integerPart low, mid, high, srcPart;
 2524|       |
 2525|       |      /* [ LOW, HIGH ] = MULTIPLIER * SRC[i] + DST[i] + CARRY.
 2526|       |
 2527|       |         This cannot overflow, because
 2528|       |
 2529|       |         (n - 1) * (n - 1) + 2 (n - 1) = (n - 1) * (n + 1)
 2530|       |
 2531|       |         which is less than n^2.  */
 2532|       |
 2533|   338k|    srcPart = src[i];
 2534|       |
 2535|   338k|    if (multiplier == 0 || srcPart == 0)        {
  ------------------
  |  Branch (2535:9): [True: 184, False: 338k]
  |  Branch (2535:28): [True: 26.3k, False: 311k]
  ------------------
 2536|  26.5k|      low = carry;
 2537|  26.5k|      high = 0;
 2538|   311k|    } else {
 2539|   311k|      low = lowHalf(srcPart) * lowHalf(multiplier);
 2540|   311k|      high = highHalf(srcPart) * highHalf(multiplier);
 2541|       |
 2542|   311k|      mid = lowHalf(srcPart) * highHalf(multiplier);
 2543|   311k|      high += highHalf(mid);
 2544|   311k|      mid <<= integerPartWidth / 2;
 2545|   311k|      if (low + mid < low)
  ------------------
  |  Branch (2545:11): [True: 60.4k, False: 251k]
  ------------------
 2546|  60.4k|        high++;
 2547|   311k|      low += mid;
 2548|       |
 2549|   311k|      mid = highHalf(srcPart) * lowHalf(multiplier);
 2550|   311k|      high += highHalf(mid);
 2551|   311k|      mid <<= integerPartWidth / 2;
 2552|   311k|      if (low + mid < low)
  ------------------
  |  Branch (2552:11): [True: 128k, False: 182k]
  ------------------
 2553|   128k|        high++;
 2554|   311k|      low += mid;
 2555|       |
 2556|       |      /* Now add carry.  */
 2557|   311k|      if (low + carry < low)
  ------------------
  |  Branch (2557:11): [True: 55.3k, False: 256k]
  ------------------
 2558|  55.3k|        high++;
 2559|   311k|      low += carry;
 2560|   311k|    }
 2561|       |
 2562|   338k|    if (add) {
  ------------------
  |  Branch (2562:9): [True: 176k, False: 161k]
  ------------------
 2563|       |      /* And now DST[i], and store the new low part there.  */
 2564|   176k|      if (low + dst[i] < low)
  ------------------
  |  Branch (2564:11): [True: 48.2k, False: 128k]
  ------------------
 2565|  48.2k|        high++;
 2566|   176k|      dst[i] += low;
 2567|   176k|    } else
 2568|   161k|      dst[i] = low;
 2569|       |
 2570|   338k|    carry = high;
 2571|   338k|  }
 2572|       |
 2573|   125k|  if (i < dstParts) {
  ------------------
  |  Branch (2573:7): [True: 125k, False: 0]
  ------------------
 2574|       |    /* Full multiplication, there is no overflow.  */
 2575|   125k|    assert(i + 1 == dstParts);
  ------------------
  |  Branch (2575:5): [True: 125k, False: 0]
  ------------------
 2576|   125k|    dst[i] = carry;
 2577|   125k|    return 0;
 2578|   125k|  } else {
 2579|       |    /* We overflowed if there is carry.  */
 2580|      0|    if (carry)
  ------------------
  |  Branch (2580:9): [True: 0, False: 0]
  ------------------
 2581|      0|      return 1;
 2582|       |
 2583|       |    /* We would overflow if any significant unwritten parts would be
 2584|       |       non-zero.  This is true if any remaining src parts are non-zero
 2585|       |       and the multiplier is non-zero.  */
 2586|      0|    if (multiplier)
  ------------------
  |  Branch (2586:9): [True: 0, False: 0]
  ------------------
 2587|      0|      for (; i < srcParts; i++)
  ------------------
  |  Branch (2587:14): [True: 0, False: 0]
  ------------------
 2588|      0|        if (src[i])
  ------------------
  |  Branch (2588:13): [True: 0, False: 0]
  ------------------
 2589|      0|          return 1;
 2590|       |
 2591|       |    /* We fitted in the narrow destination.  */
 2592|      0|    return 0;
 2593|      0|  }
 2594|   125k|}
_ZN7llvm_ks5APInt14tcFullMultiplyEPmPKmS3_jj:
 2627|  38.9k|{
 2628|       |  /* Put the narrower number on the LHS for less loops below.  */
 2629|  38.9k|  if (lhsParts > rhsParts) {
  ------------------
  |  Branch (2629:7): [True: 0, False: 38.9k]
  ------------------
 2630|      0|    return tcFullMultiply (dst, rhs, lhs, rhsParts, lhsParts);
 2631|  38.9k|  } else {
 2632|  38.9k|    unsigned int n;
 2633|       |
 2634|  38.9k|    assert(dst != lhs && dst != rhs);
  ------------------
  |  Branch (2634:5): [True: 38.9k, False: 0]
  |  Branch (2634:5): [True: 38.9k, False: 0]
  |  Branch (2634:5): [True: 38.9k, False: 0]
  ------------------
 2635|       |
 2636|  38.9k|    tcSet(dst, 0, rhsParts);
 2637|       |
 2638|  93.1k|    for (n = 0; n < lhsParts; n++)
  ------------------
  |  Branch (2638:17): [True: 54.2k, False: 38.9k]
  ------------------
 2639|  54.2k|      tcMultiplyPart(&dst[n], rhs, lhs[n], 0, rhsParts, rhsParts + 1, true);
 2640|       |
 2641|  38.9k|    n = lhsParts + rhsParts;
 2642|       |
 2643|  38.9k|    return n - (dst[n - 1] == 0);
 2644|  38.9k|  }
 2645|  38.9k|}
_ZN7llvm_ks5APInt11tcShiftLeftEPmjj:
 2706|  4.19M|{
 2707|  4.19M|  if (count) {
  ------------------
  |  Branch (2707:7): [True: 4.19M, False: 0]
  ------------------
 2708|  4.19M|    unsigned int jump, shift;
 2709|       |
 2710|       |    /* Jump is the inter-part jump; shift is is intra-part shift.  */
 2711|  4.19M|    jump = count / integerPartWidth;
 2712|  4.19M|    shift = count % integerPartWidth;
 2713|       |
 2714|  47.7M|    while (parts > jump) {
  ------------------
  |  Branch (2714:12): [True: 43.5M, False: 4.19M]
  ------------------
 2715|  43.5M|      integerPart part;
 2716|       |
 2717|  43.5M|      parts--;
 2718|       |
 2719|       |      /* dst[i] comes from the two parts src[i - jump] and, if we have
 2720|       |         an intra-part shift, src[i - jump - 1].  */
 2721|  43.5M|      part = dst[parts - jump];
 2722|  43.5M|      if (shift) {
  ------------------
  |  Branch (2722:11): [True: 43.5M, False: 520]
  ------------------
 2723|  43.5M|        part <<= shift;
 2724|  43.5M|        if (parts >= jump + 1)
  ------------------
  |  Branch (2724:13): [True: 39.3M, False: 4.19M]
  ------------------
 2725|  39.3M|          part |= dst[parts - jump - 1] >> (integerPartWidth - shift);
 2726|  43.5M|      }
 2727|       |
 2728|  43.5M|      dst[parts] = part;
 2729|  43.5M|    }
 2730|       |
 2731|  4.19M|    while (parts > 0)
  ------------------
  |  Branch (2731:12): [True: 4.89k, False: 4.19M]
  ------------------
 2732|  4.89k|      dst[--parts] = 0;
 2733|  4.19M|  }
 2734|  4.19M|}
_ZN7llvm_ks5APInt12tcShiftRightEPmjj:
 2740|   190k|{
 2741|   190k|  if (count) {
  ------------------
  |  Branch (2741:7): [True: 77.1k, False: 113k]
  ------------------
 2742|  77.1k|    unsigned int i, jump, shift;
 2743|       |
 2744|       |    /* Jump is the inter-part jump; shift is is intra-part shift.  */
 2745|  77.1k|    jump = count / integerPartWidth;
 2746|  77.1k|    shift = count % integerPartWidth;
 2747|       |
 2748|       |    /* Perform the shift.  This leaves the most significant COUNT bits
 2749|       |       of the result at zero.  */
 2750|   166k|    for (i = 0; i < parts; i++) {
  ------------------
  |  Branch (2750:17): [True: 89.5k, False: 77.1k]
  ------------------
 2751|  89.5k|      integerPart part;
 2752|       |
 2753|  89.5k|      if (i + jump >= parts) {
  ------------------
  |  Branch (2753:11): [True: 1.08k, False: 88.4k]
  ------------------
 2754|  1.08k|        part = 0;
 2755|  88.4k|      } else {
 2756|  88.4k|        part = dst[i + jump];
 2757|  88.4k|        if (shift) {
  ------------------
  |  Branch (2757:13): [True: 88.4k, False: 0]
  ------------------
 2758|  88.4k|          part >>= shift;
 2759|  88.4k|          if (i + jump + 1 < parts)
  ------------------
  |  Branch (2759:15): [True: 12.5k, False: 75.9k]
  ------------------
 2760|  12.5k|            part |= dst[i + jump + 1] << (integerPartWidth - shift);
 2761|  88.4k|        }
 2762|  88.4k|      }
 2763|       |
 2764|  89.5k|      dst[i] = part;
 2765|  89.5k|    }
 2766|  77.1k|  }
 2767|   190k|}
_ZN7llvm_ks5APInt9tcCompareEPKmS2_j:
 2813|  4.18M|{
 2814|  4.19M|  while (parts) {
  ------------------
  |  Branch (2814:10): [True: 4.19M, False: 4.74k]
  ------------------
 2815|  4.19M|      parts--;
 2816|  4.19M|      if (lhs[parts] == rhs[parts])
  ------------------
  |  Branch (2816:11): [True: 10.5k, False: 4.18M]
  ------------------
 2817|  10.5k|        continue;
 2818|       |
 2819|  4.18M|      if (lhs[parts] > rhs[parts])
  ------------------
  |  Branch (2819:11): [True: 2.02M, False: 2.15M]
  ------------------
 2820|  2.02M|        return 1;
 2821|  2.15M|      else
 2822|  2.15M|        return -1;
 2823|  4.18M|    }
 2824|       |
 2825|  4.74k|  return 0;
 2826|  4.18M|}
_ZN7llvm_ks5APInt11tcIncrementEPmj:
 2831|  41.3k|{
 2832|  41.3k|  unsigned int i;
 2833|       |
 2834|  41.4k|  for (i = 0; i < parts; i++)
  ------------------
  |  Branch (2834:15): [True: 41.4k, False: 0]
  ------------------
 2835|  41.4k|    if (++dst[i] != 0)
  ------------------
  |  Branch (2835:9): [True: 41.3k, False: 92]
  ------------------
 2836|  41.3k|      break;
 2837|       |
 2838|  41.3k|  return i == parts;
 2839|  41.3k|}
APInt.cpp:_ZL16getClearedMemoryj:
   34|   799k|inline static uint64_t* getClearedMemory(unsigned numWords) {
   35|   799k|  uint64_t * result = new uint64_t[numWords];
   36|   799k|  assert(result && "APInt memory allocation fails!");
  ------------------
  |  Branch (36:3): [True: 799k, False: 0]
  |  Branch (36:3): [True: 799k, Folded]
  |  Branch (36:3): [True: 799k, False: 0]
  ------------------
   37|   799k|  memset(result, 0, numWords * sizeof(uint64_t));
   38|   799k|  return result;
   39|   799k|}
APInt.cpp:_ZL9getMemoryj:
   43|  1.33M|inline static uint64_t* getMemory(unsigned numWords) {
   44|  1.33M|  uint64_t * result = new uint64_t[numWords];
   45|  1.33M|  assert(result && "APInt memory allocation fails!");
  ------------------
  |  Branch (45:3): [True: 1.33M, False: 0]
  |  Branch (45:3): [True: 1.33M, Folded]
  |  Branch (45:3): [True: 1.33M, False: 0]
  ------------------
   46|  1.33M|  return result;
   47|  1.33M|}
APInt.cpp:_ZN12_GLOBAL__N_17partLSBEm:
 2298|  77.4k|  {
 2299|  77.4k|    return findFirstSet(value, ZB_Max);
 2300|  77.4k|  }
APInt.cpp:_ZN12_GLOBAL__N_17partMSBEm:
 2290|   463k|  {
 2291|   463k|    return findLastSet(value, ZB_Max);
 2292|   463k|  }
APInt.cpp:_ZN12_GLOBAL__N_110lowBitMaskEj:
 2266|  1.42M|  {
 2267|  1.42M|    assert(bits != 0 && bits <= integerPartWidth);
  ------------------
  |  Branch (2267:5): [True: 1.42M, False: 0]
  |  Branch (2267:5): [True: 1.42M, False: 0]
  |  Branch (2267:5): [True: 1.42M, False: 0]
  ------------------
 2268|       |
 2269|  1.42M|    return ~(integerPart) 0 >> (integerPartWidth - bits);
 2270|  1.42M|  }
APInt.cpp:_ZN12_GLOBAL__N_17lowHalfEm:
 2275|  1.24M|  {
 2276|  1.24M|    return part & lowBitMask(integerPartWidth / 2);
 2277|  1.24M|  }
APInt.cpp:_ZN12_GLOBAL__N_18highHalfEm:
 2282|  1.86M|  {
 2283|  1.86M|    return part >> (integerPartWidth / 2);
 2284|  1.86M|  }

_ZN7llvm_ks13ARMBuildAttrs18AttrTypeFromStringENS_9StringRefE:
   86|    214|int AttrTypeFromString(StringRef Tag) {
   87|    214|  bool HasTagPrefix = Tag.startswith("Tag_");
   88|    214|  for (unsigned TI = 0, TE = sizeof(ARMAttributeTags) / sizeof(*ARMAttributeTags);
   89|  10.0k|       TI != TE; ++TI)
  ------------------
  |  Branch (89:8): [True: 9.89k, False: 182]
  ------------------
   90|  9.89k|    if (StringRef(ARMAttributeTags[TI].TagName + (HasTagPrefix ? 0 : 4)) == Tag)
  ------------------
  |  Branch (90:9): [True: 32, False: 9.86k]
  |  Branch (90:51): [True: 0, False: 9.89k]
  ------------------
   91|     32|      return ARMAttributeTags[TI].Attr;
   92|    182|  return -1;
   93|    214|}

_ZN7llvm_ks12MemoryBufferD2Ev:
   39|  72.0k|MemoryBuffer::~MemoryBuffer() { }
_ZN7llvm_ks12MemoryBuffer4initEPKcS2_b:
   44|  72.0k|                        bool RequiresNullTerminator) {
   45|  72.0k|  assert((!RequiresNullTerminator || BufEnd[0] == 0) &&
  ------------------
  |  Branch (45:3): [True: 0, False: 72.0k]
  |  Branch (45:3): [True: 72.0k, False: 0]
  |  Branch (45:3): [True: 72.0k, Folded]
  |  Branch (45:3): [True: 72.0k, False: 0]
  ------------------
   46|  72.0k|         "Buffer is not null terminated!");
   47|  72.0k|  BufferStart = BufStart;
   48|  72.0k|  BufferEnd = BufEnd;
   49|  72.0k|}
_ZN7llvm_ks12MemoryBuffer12getMemBufferENS_9StringRefES1_b:
  104|  20.9k|                           bool RequiresNullTerminator) {
  105|  20.9k|  auto *Ret = new (NamedBufferAlloc(BufferName))
  106|  20.9k|      MemoryBufferMem(InputData, RequiresNullTerminator);
  107|  20.9k|  return std::unique_ptr<MemoryBuffer>(Ret);
  108|  20.9k|}
_ZN7llvm_ks12MemoryBuffer16getMemBufferCopyENS_9StringRefERKNS_5TwineE:
  117|  51.0k|MemoryBuffer::getMemBufferCopy(StringRef InputData, const Twine &BufferName) {
  118|  51.0k|  std::unique_ptr<MemoryBuffer> Buf =
  119|  51.0k|      getNewUninitMemBuffer(InputData.size(), BufferName);
  120|  51.0k|  if (!Buf)
  ------------------
  |  Branch (120:7): [True: 0, False: 51.0k]
  ------------------
  121|      0|    return nullptr;
  122|  51.0k|  memcpy(const_cast<char*>(Buf->getBufferStart()), InputData.data(),
  123|  51.0k|         InputData.size());
  124|  51.0k|  return Buf;
  125|  51.0k|}
_ZN7llvm_ks12MemoryBuffer21getNewUninitMemBufferEmRKNS_5TwineE:
  128|  51.0k|MemoryBuffer::getNewUninitMemBuffer(size_t Size, const Twine &BufferName) {
  129|       |  // Allocate space for the MemoryBuffer, the data and the name. It is important
  130|       |  // that MemoryBuffer and data are aligned so PointerIntPair works with them.
  131|       |  // TODO: Is 16-byte alignment enough?  We copy small object files with large
  132|       |  // alignment expectations into this buffer.
  133|  51.0k|  SmallString<256> NameBuf;
  134|  51.0k|  StringRef NameRef = BufferName.toStringRef(NameBuf);
  135|  51.0k|  size_t AlignedStringLen =
  136|  51.0k|      alignTo(sizeof(MemoryBufferMem) + NameRef.size() + 1, 16);
  137|  51.0k|  size_t RealLen = AlignedStringLen + Size + 1;
  138|  51.0k|  char *Mem = static_cast<char*>(operator new(RealLen, std::nothrow));
  139|  51.0k|  if (!Mem)
  ------------------
  |  Branch (139:7): [True: 0, False: 51.0k]
  ------------------
  140|      0|    return nullptr;
  141|       |
  142|       |  // The name is stored after the class itself.
  143|  51.0k|  CopyStringRef(Mem + sizeof(MemoryBufferMem), NameRef);
  144|       |
  145|       |  // The buffer begins after the name and must be aligned.
  146|  51.0k|  char *Buf = Mem + AlignedStringLen;
  147|  51.0k|  Buf[Size] = 0; // Null terminate buffer.
  148|       |
  149|  51.0k|  auto *Ret = new (Mem) MemoryBufferMem(StringRef(Buf, Size), true);
  150|  51.0k|  return std::unique_ptr<MemoryBuffer>(Ret);
  151|  51.0k|}
_ZN7llvm_ks12MemoryBuffer7getFileERKNS_5TwineElbb:
  247|      7|                      bool RequiresNullTerminator, bool IsVolatileSize) {
  248|      7|  return getFileAux(Filename, FileSize, FileSize, 0,
  249|      7|                    RequiresNullTerminator, IsVolatileSize);
  250|      7|}
MemoryBuffer.cpp:_ZN12_GLOBAL__N_116NamedBufferAllocC2ERKN7llvm_ks5TwineE:
   66|  20.9k|  NamedBufferAlloc(const Twine &Name) : Name(Name) {}
MemoryBuffer.cpp:_ZnwmRKN12_GLOBAL__N_116NamedBufferAllocE:
   70|  20.9k|void *operator new(size_t N, const NamedBufferAlloc &Alloc) {
   71|  20.9k|  SmallString<256> NameBuf;
   72|  20.9k|  StringRef NameRef = Alloc.Name.toStringRef(NameBuf);
   73|       |
   74|  20.9k|  char *Mem = static_cast<char *>(operator new(N + NameRef.size() + 1));
   75|  20.9k|  CopyStringRef(Mem + N, NameRef);
   76|  20.9k|  return Mem;
   77|  20.9k|}
MemoryBuffer.cpp:_ZN12_GLOBAL__N_115MemoryBufferMemC2EN7llvm_ks9StringRefEb:
   83|  72.0k|  MemoryBufferMem(StringRef InputData, bool RequiresNullTerminator) {
   84|  72.0k|    init(InputData.begin(), InputData.end(), RequiresNullTerminator);
   85|  72.0k|  }
MemoryBuffer.cpp:_ZNK12_GLOBAL__N_115MemoryBufferMem19getBufferIdentifierEv:
   87|  80.5k|  const char *getBufferIdentifier() const override {
   88|       |     // The name is stored after the class itself.
   89|  80.5k|    return reinterpret_cast<const char*>(this + 1);
   90|  80.5k|  }
MemoryBuffer.cpp:_ZL13CopyStringRefPcN7llvm_ks9StringRefE:
   57|  72.0k|static void CopyStringRef(char *Memory, StringRef Data) {
   58|  72.0k|  if (!Data.empty())
  ------------------
  |  Branch (58:7): [True: 51.0k, False: 20.9k]
  ------------------
   59|  51.0k|    memcpy(Memory, Data.data(), Data.size());
   60|  72.0k|  Memory[Data.size()] = 0; // Null terminate string.
   61|  72.0k|}
MemoryBuffer.cpp:_ZL10getFileAuxRKN7llvm_ks5TwineElmmbb:
  259|      7|           uint64_t Offset, bool RequiresNullTerminator, bool IsVolatileSize) {
  260|      7|  int FD;
  261|      7|  std::error_code EC = sys::fs::openFileForRead(Filename, FD);
  262|      7|  if (EC)
  ------------------
  |  Branch (262:7): [True: 6, False: 1]
  ------------------
  263|      6|    return EC;
  264|       |
  265|      1|  ErrorOr<std::unique_ptr<MemoryBuffer>> Ret =
  266|      1|      getOpenFileImpl(FD, Filename, FileSize, MapSize, Offset,
  267|      1|                      RequiresNullTerminator, IsVolatileSize);
  268|      1|  close(FD);
  269|      1|  return Ret;
  270|      7|}
MemoryBuffer.cpp:_ZL15getOpenFileImpliRKN7llvm_ks5TwineEmmlbb:
  331|      1|                bool IsVolatileSize) {
  332|      1|  static int PageSize = 4096;
  333|       |
  334|       |  // Default is to map the full file.
  335|      1|  if (MapSize == uint64_t(-1)) {
  ------------------
  |  Branch (335:7): [True: 1, False: 0]
  ------------------
  336|       |    // If we don't know the file size, use fstat to find out.  fstat on an open
  337|       |    // file descriptor is cheaper than stat on a random path.
  338|      1|    if (FileSize == uint64_t(-1)) {
  ------------------
  |  Branch (338:9): [True: 1, False: 0]
  ------------------
  339|      1|      sys::fs::file_status Status;
  340|      1|      std::error_code EC = sys::fs::status(FD, Status);
  341|      1|      if (EC)
  ------------------
  |  Branch (341:11): [True: 0, False: 1]
  ------------------
  342|      0|        return EC;
  343|       |
  344|       |      // If this not a file or a block device (e.g. it's a named pipe
  345|       |      // or character device), we can't trust the size. Create the memory
  346|       |      // buffer by copying off the stream.
  347|      1|      sys::fs::file_type Type = Status.type();
  348|      1|      if (Type != sys::fs::file_type::regular_file &&
  ------------------
  |  Branch (348:11): [True: 1, False: 0]
  ------------------
  349|      1|          Type != sys::fs::file_type::block_file)
  ------------------
  |  Branch (349:11): [True: 1, False: 0]
  ------------------
  350|      1|        return getMemoryBufferForStream(FD, Filename);
  351|       |
  352|      0|      FileSize = Status.getSize();
  353|      0|    }
  354|      0|    MapSize = FileSize;
  355|      0|  }
  356|       |
  357|      0|  if (shouldUseMmap(FD, FileSize, MapSize, Offset, RequiresNullTerminator,
  ------------------
  |  Branch (357:7): [True: 0, False: 0]
  ------------------
  358|      0|                    PageSize, IsVolatileSize)) {
  359|      0|    std::error_code EC;
  360|      0|    std::unique_ptr<MemoryBuffer> Result(
  361|      0|        new (NamedBufferAlloc(Filename))
  362|      0|        MemoryBufferMMapFile(RequiresNullTerminator, FD, MapSize, Offset, EC));
  363|      0|    if (!EC)
  ------------------
  |  Branch (363:9): [True: 0, False: 0]
  ------------------
  364|      0|      return std::move(Result);
  365|      0|  }
  366|       |
  367|      0|  std::unique_ptr<MemoryBuffer> Buf =
  368|      0|      MemoryBuffer::getNewUninitMemBuffer(MapSize, Filename);
  369|      0|  if (!Buf) {
  ------------------
  |  Branch (369:7): [True: 0, False: 0]
  ------------------
  370|       |    // Failed to create a buffer. The only way it can fail is if
  371|       |    // new(std::nothrow) returns 0.
  372|      0|    return make_error_code(errc::not_enough_memory);
  373|      0|  }
  374|       |
  375|      0|  char *BufPtr = const_cast<char *>(Buf->getBufferStart());
  376|       |
  377|      0|  size_t BytesLeft = MapSize;
  378|       |#ifndef HAVE_PREAD
  379|       |  if (lseek(FD, Offset, SEEK_SET) == -1)
  380|       |    return std::error_code(errno, std::generic_category());
  381|       |#endif
  382|       |
  383|      0|  while (BytesLeft) {
  ------------------
  |  Branch (383:10): [True: 0, False: 0]
  ------------------
  384|      0|#ifdef HAVE_PREAD
  385|      0|    ssize_t NumRead = ::pread(FD, BufPtr, BytesLeft, MapSize-BytesLeft+Offset);
  386|       |#else
  387|       |    ssize_t NumRead = ::read(FD, BufPtr, BytesLeft);
  388|       |#endif
  389|      0|    if (NumRead == -1) {
  ------------------
  |  Branch (389:9): [True: 0, False: 0]
  ------------------
  390|      0|      if (errno == EINTR)
  ------------------
  |  Branch (390:11): [True: 0, False: 0]
  ------------------
  391|      0|        continue;
  392|       |      // Error while reading.
  393|      0|      return std::error_code(errno, std::generic_category());
  394|      0|    }
  395|      0|    if (NumRead == 0) {
  ------------------
  |  Branch (395:9): [True: 0, False: 0]
  ------------------
  396|      0|      memset(BufPtr, 0, BytesLeft); // zero-initialize rest of the buffer.
  397|      0|      break;
  398|      0|    }
  399|      0|    BytesLeft -= NumRead;
  400|      0|    BufPtr += NumRead;
  401|      0|  }
  402|       |
  403|      0|  return std::move(Buf);
  404|      0|}
MemoryBuffer.cpp:_ZL24getMemoryBufferForStreamiRKN7llvm_ks5TwineE:
  226|      1|getMemoryBufferForStream(int FD, const Twine &BufferName) {
  227|      1|  const ssize_t ChunkSize = 4096*4;
  228|      1|  SmallString<ChunkSize> Buffer;
  229|      1|  ssize_t ReadBytes;
  230|       |  // Read into Buffer until we hit EOF.
  231|      1|  do {
  232|      1|    Buffer.reserve(Buffer.size() + ChunkSize);
  233|      1|    ReadBytes = read(FD, Buffer.end(), ChunkSize);
  234|      1|    if (ReadBytes == -1) {
  ------------------
  |  Branch (234:9): [True: 1, False: 0]
  ------------------
  235|      1|      if (errno == EINTR) continue;
  ------------------
  |  Branch (235:11): [True: 0, False: 1]
  ------------------
  236|      1|      return std::error_code(errno, std::generic_category());
  237|      1|    }
  238|      0|    Buffer.set_size(Buffer.size() + ReadBytes);
  239|      0|  } while (ReadBytes != 0);
  ------------------
  |  Branch (239:12): [True: 0, False: 0]
  ------------------
  240|       |
  241|      0|  return MemoryBuffer::getMemBufferCopy(Buffer, BufferName);
  242|      1|}

_ZN7llvm_ks3sys4path5beginENS_9StringRefE:
  232|  20.9k|const_iterator begin(StringRef path) {
  233|  20.9k|  const_iterator i;
  234|  20.9k|  i.Path      = path;
  235|  20.9k|  i.Component = find_first_component(path);
  236|  20.9k|  i.Position  = 0;
  237|  20.9k|  return i;
  238|  20.9k|}
_ZN7llvm_ks3sys4path3endENS_9StringRefE:
  240|  20.9k|const_iterator end(StringRef path) {
  241|  20.9k|  const_iterator i;
  242|  20.9k|  i.Path      = path;
  243|  20.9k|  i.Position  = path.size();
  244|  20.9k|  return i;
  245|  20.9k|}
_ZNK7llvm_ks3sys4path14const_iteratoreqERKS2_:
  300|  20.9k|bool const_iterator::operator==(const const_iterator &RHS) const {
  301|  20.9k|  return Path.begin() == RHS.Path.begin() && Position == RHS.Position;
  ------------------
  |  Branch (301:10): [True: 20.9k, False: 0]
  |  Branch (301:46): [True: 0, False: 20.9k]
  ------------------
  302|  20.9k|}
_ZN7llvm_ks3sys4path14root_directoryENS_9StringRefE:
  409|  20.9k|StringRef root_directory(StringRef path) {
  410|  20.9k|  const_iterator b = begin(path),
  411|  20.9k|                 pos = b,
  412|  20.9k|                 e = end(path);
  413|  20.9k|  if (b != e) {
  ------------------
  |  Branch (413:7): [True: 20.9k, False: 0]
  ------------------
  414|  20.9k|    bool has_net = b->size() > 2 && is_separator((*b)[0]) && (*b)[1] == (*b)[0];
  ------------------
  |  Branch (414:20): [True: 0, False: 20.9k]
  |  Branch (414:37): [True: 0, False: 0]
  |  Branch (414:62): [True: 0, False: 0]
  ------------------
  415|  20.9k|    bool has_drive =
  416|       |#ifdef LLVM_ON_WIN32
  417|       |      b->endswith(":");
  418|       |#else
  419|  20.9k|      false;
  420|  20.9k|#endif
  421|       |
  422|  20.9k|    if ((has_net || has_drive) &&
  ------------------
  |  Branch (422:10): [True: 0, False: 20.9k]
  |  Branch (422:21): [True: 0, False: 20.9k]
  ------------------
  423|       |        // {C:,//net}, skip to the next component.
  424|      0|        (++pos != e) && is_separator((*pos)[0])) {
  ------------------
  |  Branch (424:9): [True: 0, False: 0]
  |  Branch (424:25): [True: 0, False: 0]
  ------------------
  425|      0|      return *pos;
  426|      0|    }
  427|       |
  428|       |    // POSIX style root directory.
  429|  20.9k|    if (!has_net && is_separator((*b)[0])) {
  ------------------
  |  Branch (429:9): [True: 20.9k, False: 0]
  |  Branch (429:21): [True: 20.9k, False: 0]
  ------------------
  430|  20.9k|      return *b;
  431|  20.9k|    }
  432|  20.9k|  }
  433|       |
  434|       |  // No path or no root.
  435|      0|  return StringRef();
  436|  20.9k|}
_ZN7llvm_ks3sys4path12is_separatorEc:
  576|  62.9k|bool is_separator(char value) {
  577|  62.9k|  switch(value) {
  578|       |#ifdef LLVM_ON_WIN32
  579|       |    case '\\': // fall through
  580|       |#endif
  581|  62.9k|    case '/': return true;
  ------------------
  |  Branch (581:5): [True: 62.9k, False: 0]
  ------------------
  582|      0|    default: return false;
  ------------------
  |  Branch (582:5): [True: 0, False: 62.9k]
  ------------------
  583|  62.9k|  }
  584|  62.9k|}
_ZN7llvm_ks3sys4path18has_root_directoryERKNS_5TwineE:
  599|  20.9k|bool has_root_directory(const Twine &path) {
  600|  20.9k|  SmallString<128> path_storage;
  601|  20.9k|  StringRef p = path.toStringRef(path_storage);
  602|       |
  603|  20.9k|  return !root_directory(p).empty();
  604|  20.9k|}
_ZN7llvm_ks3sys4path11is_absoluteERKNS_5TwineE:
  648|  20.9k|bool is_absolute(const Twine &path) {
  649|  20.9k|  SmallString<128> path_storage;
  650|  20.9k|  StringRef p = path.toStringRef(path_storage);
  651|       |
  652|  20.9k|  bool rootDir = has_root_directory(p),
  653|       |#ifdef LLVM_ON_WIN32
  654|       |       rootName = has_root_name(p);
  655|       |#else
  656|  20.9k|       rootName = true;
  657|  20.9k|#endif
  658|       |
  659|  20.9k|  return rootDir && rootName;
  ------------------
  |  Branch (659:10): [True: 20.9k, False: 0]
  |  Branch (659:21): [True: 20.9k, False: 0]
  ------------------
  660|  20.9k|}
Path.cpp:_ZN12_GLOBAL__N_120find_first_componentEN7llvm_ks9StringRefE:
   45|  20.9k|  StringRef find_first_component(StringRef path) {
   46|       |    // Look for this first component in the following order.
   47|       |    // * empty (in this case we return an empty string)
   48|       |    // * either C: or {//,\\}net.
   49|       |    // * {/,\}
   50|       |    // * {file,directory}name
   51|       |
   52|  20.9k|    if (path.empty())
  ------------------
  |  Branch (52:9): [True: 0, False: 20.9k]
  ------------------
   53|      0|      return path;
   54|       |
   55|       |#ifdef LLVM_ON_WIN32
   56|       |    // C:
   57|       |    if (path.size() >= 2 && std::isalpha(static_cast<unsigned char>(path[0])) &&
   58|       |        path[1] == ':')
   59|       |      return path.substr(0, 2);
   60|       |#endif
   61|       |
   62|       |    // //net
   63|  20.9k|    if ((path.size() > 2) &&
  ------------------
  |  Branch (63:9): [True: 20.9k, False: 0]
  ------------------
   64|  20.9k|        is_separator(path[0]) &&
  ------------------
  |  Branch (64:9): [True: 20.9k, False: 0]
  ------------------
   65|  20.9k|        path[0] == path[1] &&
  ------------------
  |  Branch (65:9): [True: 0, False: 20.9k]
  ------------------
   66|      0|        !is_separator(path[2])) {
  ------------------
  |  Branch (66:9): [True: 0, False: 0]
  ------------------
   67|       |      // Find the next directory separator.
   68|      0|      size_t end = path.find_first_of(separators, 2);
   69|      0|      return path.substr(0, end);
   70|      0|    }
   71|       |
   72|       |    // {/,\}
   73|  20.9k|    if (is_separator(path[0]))
  ------------------
  |  Branch (73:9): [True: 20.9k, False: 0]
  ------------------
   74|  20.9k|      return path.substr(0, 1);
   75|       |
   76|       |    // * {file,directory}name
   77|      0|    size_t end = path.find_first_of(separators);
   78|      0|    return path.substr(0, end);
   79|  20.9k|  }

_ZN7llvm_ks15SmallVectorBase8grow_podEPvmm:
   20|  21.8k|                               size_t TSize) {
   21|  21.8k|  size_t CurSizeBytes = size_in_bytes();
   22|  21.8k|  size_t NewCapacityInBytes = 2 * capacity_in_bytes() + TSize; // Always grow.
   23|  21.8k|  if (NewCapacityInBytes < MinSizeInBytes)
  ------------------
  |  Branch (23:7): [True: 1.07k, False: 20.7k]
  ------------------
   24|  1.07k|    NewCapacityInBytes = MinSizeInBytes;
   25|       |
   26|  21.8k|  void *NewElts;
   27|  21.8k|  if (BeginX == FirstEl) {
  ------------------
  |  Branch (27:7): [True: 9.89k, False: 11.9k]
  ------------------
   28|  9.89k|    NewElts = malloc(NewCapacityInBytes);
   29|       |
   30|       |    // Copy the elements over.  No need to run dtors on PODs.
   31|  9.89k|    memcpy(NewElts, this->BeginX, CurSizeBytes);
   32|  11.9k|  } else {
   33|       |    // If this wasn't grown from the inline copy, grow the allocated space.
   34|  11.9k|    NewElts = realloc(this->BeginX, NewCapacityInBytes);
   35|  11.9k|  }
   36|  21.8k|  assert(NewElts && "Out of memory");
  ------------------
  |  Branch (36:3): [True: 21.8k, False: 0]
  |  Branch (36:3): [True: 21.8k, Folded]
  |  Branch (36:3): [True: 21.8k, False: 0]
  ------------------
   37|       |
   38|  21.8k|  this->EndX = (char*)NewElts+CurSizeBytes;
   39|  21.8k|  this->BeginX = NewElts;
   40|  21.8k|  this->CapacityX = (char*)this->BeginX + NewCapacityInBytes;
   41|  21.8k|}

_ZN7llvm_ks9SourceMgrD2Ev:
   38|  20.9k|SourceMgr::~SourceMgr() {
   39|       |  // Delete the line # cache if allocated.
   40|  20.9k|  if (LineNoCacheTy *Cache = getCache(LineNoCache))
  ------------------
  |  Branch (40:22): [True: 1.65k, False: 19.3k]
  ------------------
   41|  1.65k|    delete Cache;
   42|  20.9k|}
_ZN7llvm_ks9SourceMgr14AddIncludeFileERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_5SMLocERS7_:
   46|      7|                                   std::string &IncludedFile) {
   47|      7|  IncludedFile = Filename;
   48|      7|  ErrorOr<std::unique_ptr<MemoryBuffer>> NewBufOrErr =
   49|      7|    MemoryBuffer::getFile(IncludedFile);
   50|       |
   51|       |  // If the file didn't exist directly, see if it's in an include path.
   52|      7|  for (unsigned i = 0, e = IncludeDirectories.size(); i != e && !NewBufOrErr;
  ------------------
  |  Branch (52:55): [True: 0, False: 7]
  |  Branch (52:65): [True: 0, False: 0]
  ------------------
   53|      7|       ++i) {
   54|      0|    IncludedFile =
   55|      0|        IncludeDirectories[i] + sys::path::get_separator().data() + Filename;
   56|      0|    NewBufOrErr = MemoryBuffer::getFile(IncludedFile);
   57|      0|  }
   58|       |
   59|      7|  if (!NewBufOrErr)
  ------------------
  |  Branch (59:7): [True: 7, False: 0]
  ------------------
   60|      7|    return 0;
   61|       |
   62|      0|  return AddNewSourceBuffer(std::move(*NewBufOrErr), IncludeLoc);
   63|      7|}
_ZNK7llvm_ks9SourceMgr23FindBufferContainingLocENS_5SMLocE:
   65|   322k|unsigned SourceMgr::FindBufferContainingLoc(SMLoc Loc) const {
   66|  43.1M|  for (unsigned i = 0, e = Buffers.size(); i != e; ++i)
  ------------------
  |  Branch (66:44): [True: 43.0M, False: 74.2k]
  ------------------
   67|  43.0M|    if (Loc.getPointer() >= Buffers[i].Buffer->getBufferStart() &&
  ------------------
  |  Branch (67:9): [True: 19.5M, False: 23.5M]
  ------------------
   68|       |        // Use <= here so that a pointer to the null at the end of the buffer
   69|       |        // is included as part of the buffer.
   70|  19.5M|        Loc.getPointer() <= Buffers[i].Buffer->getBufferEnd())
  ------------------
  |  Branch (70:9): [True: 247k, False: 19.2M]
  ------------------
   71|   247k|      return i + 1;
   72|  74.2k|  return 0;
   73|   322k|}
_ZNK7llvm_ks9SourceMgr16getLineAndColumnENS_5SMLocEj:
   76|  85.1k|SourceMgr::getLineAndColumn(SMLoc Loc, unsigned BufferID) const {
   77|  85.1k|  if (!BufferID)
  ------------------
  |  Branch (77:7): [True: 0, False: 85.1k]
  ------------------
   78|      0|    BufferID = FindBufferContainingLoc(Loc);
   79|  85.1k|  assert(BufferID && "Invalid Location!");
  ------------------
  |  Branch (79:3): [True: 85.1k, False: 0]
  |  Branch (79:3): [True: 85.1k, Folded]
  |  Branch (79:3): [True: 85.1k, False: 0]
  ------------------
   80|       |
   81|  85.1k|  const MemoryBuffer *Buff = getMemoryBuffer(BufferID);
   82|       |
   83|       |  // Count the number of \n's between the start of the file and the specified
   84|       |  // location.
   85|  85.1k|  unsigned LineNo = 1;
   86|       |
   87|  85.1k|  const char *BufStart = Buff->getBufferStart();
   88|  85.1k|  const char *Ptr = BufStart;
   89|       |
   90|       |  // If we have a line number cache, and if the query is to a later point in the
   91|       |  // same file, start searching from the last query location.  This optimizes
   92|       |  // for the case when multiple diagnostics come out of one file in order.
   93|  85.1k|  if (LineNoCacheTy *Cache = getCache(LineNoCache))
  ------------------
  |  Branch (93:22): [True: 83.4k, False: 1.65k]
  ------------------
   94|  83.4k|    if (Cache->LastQueryBufferID == BufferID &&
  ------------------
  |  Branch (94:9): [True: 19.9k, False: 63.5k]
  ------------------
   95|  19.9k|        Cache->LastQuery <= Loc.getPointer()) {
  ------------------
  |  Branch (95:9): [True: 17.3k, False: 2.58k]
  ------------------
   96|  17.3k|      Ptr = Cache->LastQuery;
   97|  17.3k|      LineNo = Cache->LineNoOfQuery;
   98|  17.3k|    }
   99|       |
  100|       |  // Scan for the location being queried, keeping track of the number of lines
  101|       |  // we see.
  102|  88.4M|  for (; SMLoc::getFromPointer(Ptr) != Loc; ++Ptr)
  ------------------
  |  Branch (102:10): [True: 88.3M, False: 85.1k]
  ------------------
  103|  88.3M|    if (*Ptr == '\n') ++LineNo;
  ------------------
  |  Branch (103:9): [True: 3.09M, False: 85.2M]
  ------------------
  104|       |
  105|       |  // Allocate the line number cache if it doesn't exist.
  106|  85.1k|  if (!LineNoCache)
  ------------------
  |  Branch (106:7): [True: 1.65k, False: 83.4k]
  ------------------
  107|  1.65k|    LineNoCache = new LineNoCacheTy();
  108|       |
  109|       |  // Update the line # cache.
  110|  85.1k|  LineNoCacheTy &Cache = *getCache(LineNoCache);
  111|  85.1k|  Cache.LastQueryBufferID = BufferID;
  112|  85.1k|  Cache.LastQuery = Ptr;
  113|  85.1k|  Cache.LineNoOfQuery = LineNo;
  114|       |  
  115|  85.1k|  size_t NewlineOffs = StringRef(BufStart, Ptr-BufStart).find_last_of("\n\r");
  116|  85.1k|  if (NewlineOffs == StringRef::npos) NewlineOffs = ~(size_t)0;
  ------------------
  |  Branch (116:7): [True: 56.1k, False: 29.0k]
  ------------------
  117|  85.1k|  return std::make_pair(LineNo, Ptr-BufStart-NewlineOffs);
  118|  85.1k|}
_ZNK7llvm_ks9SourceMgr17PrintIncludeStackENS_5SMLocERNS_11raw_ostreamE:
  120|  60.5k|void SourceMgr::PrintIncludeStack(SMLoc IncludeLoc, raw_ostream &OS) const {
  121|  60.5k|  if (IncludeLoc == SMLoc()) return;  // Top of stack.
  ------------------
  |  Branch (121:7): [True: 60.5k, False: 0]
  ------------------
  122|       |
  123|      0|  unsigned CurBuf = FindBufferContainingLoc(IncludeLoc);
  124|      0|  assert(CurBuf && "Invalid or unspecified location!");
  ------------------
  |  Branch (124:3): [True: 0, False: 0]
  |  Branch (124:3): [True: 0, Folded]
  |  Branch (124:3): [True: 0, False: 0]
  ------------------
  125|       |
  126|      0|  PrintIncludeStack(getBufferInfo(CurBuf).IncludeLoc, OS);
  127|       |
  128|      0|  OS << "Included from "
  129|      0|     << getBufferInfo(CurBuf).Buffer->getBufferIdentifier()
  130|      0|     << ":" << FindLineNumber(IncludeLoc, CurBuf) << ":\n";
  131|      0|}
_ZNK7llvm_ks9SourceMgr10GetMessageENS_5SMLocENS0_8DiagKindERKNS_5TwineENS_8ArrayRefINS_7SMRangeEEENS6_INS_7SMFixItEEE:
  137|  80.5k|                                   ArrayRef<SMFixIt> FixIts) const {
  138|       |
  139|       |  // First thing to do: find the current buffer containing the specified
  140|       |  // location to pull out the source line.
  141|  80.5k|  SmallVector<std::pair<unsigned, unsigned>, 4> ColRanges;
  142|  80.5k|  std::pair<unsigned, unsigned> LineAndCol;
  143|  80.5k|  const char *BufferID = "<unknown>";
  144|  80.5k|  std::string LineStr;
  145|       |  
  146|  80.5k|  if (Loc.isValid()) {
  ------------------
  |  Branch (146:7): [True: 80.5k, False: 0]
  ------------------
  147|  80.5k|    unsigned CurBuf = FindBufferContainingLoc(Loc);
  148|  80.5k|    assert(CurBuf && "Invalid or unspecified location!");
  ------------------
  |  Branch (148:5): [True: 80.5k, False: 0]
  |  Branch (148:5): [True: 80.5k, Folded]
  |  Branch (148:5): [True: 80.5k, False: 0]
  ------------------
  149|       |
  150|  80.5k|    const MemoryBuffer *CurMB = getMemoryBuffer(CurBuf);
  151|  80.5k|    BufferID = CurMB->getBufferIdentifier();
  152|       |    
  153|       |    // Scan backward to find the start of the line.
  154|  80.5k|    const char *LineStart = Loc.getPointer();
  155|  80.5k|    const char *BufStart = CurMB->getBufferStart();
  156|  2.25M|    while (LineStart != BufStart && LineStart[-1] != '\n' &&
  ------------------
  |  Branch (156:12): [True: 2.19M, False: 55.2k]
  |  Branch (156:37): [True: 2.18M, False: 11.4k]
  ------------------
  157|  2.18M|           LineStart[-1] != '\r')
  ------------------
  |  Branch (157:12): [True: 2.17M, False: 13.8k]
  ------------------
  158|  2.17M|      --LineStart;
  159|       |
  160|       |    // Get the end of the line.
  161|  80.5k|    const char *LineEnd = Loc.getPointer();
  162|  80.5k|    const char *BufEnd = CurMB->getBufferEnd();
  163|  2.82M|    while (LineEnd != BufEnd && LineEnd[0] != '\n' && LineEnd[0] != '\r')
  ------------------
  |  Branch (163:12): [True: 2.81M, False: 2.63k]
  |  Branch (163:33): [True: 2.74M, False: 69.6k]
  |  Branch (163:55): [True: 2.74M, False: 8.21k]
  ------------------
  164|  2.74M|      ++LineEnd;
  165|  80.5k|    LineStr = std::string(LineStart, LineEnd);
  166|       |
  167|       |    // Convert any ranges to column ranges that only intersect the line of the
  168|       |    // location.
  169|  80.5k|    for (unsigned i = 0, e = Ranges.size(); i != e; ++i) {
  ------------------
  |  Branch (169:45): [True: 10, False: 80.5k]
  ------------------
  170|     10|      SMRange R = Ranges[i];
  171|     10|      if (!R.isValid()) continue;
  ------------------
  |  Branch (171:11): [True: 0, False: 10]
  ------------------
  172|       |      
  173|       |      // If the line doesn't contain any part of the range, then ignore it.
  174|     10|      if (R.Start.getPointer() > LineEnd || R.End.getPointer() < LineStart)
  ------------------
  |  Branch (174:11): [True: 0, False: 10]
  |  Branch (174:45): [True: 0, False: 10]
  ------------------
  175|      0|        continue;
  176|       |     
  177|       |      // Ignore pieces of the range that go onto other lines.
  178|     10|      if (R.Start.getPointer() < LineStart)
  ------------------
  |  Branch (178:11): [True: 0, False: 10]
  ------------------
  179|      0|        R.Start = SMLoc::getFromPointer(LineStart);
  180|     10|      if (R.End.getPointer() > LineEnd)
  ------------------
  |  Branch (180:11): [True: 6, False: 4]
  ------------------
  181|      6|        R.End = SMLoc::getFromPointer(LineEnd);
  182|       |      
  183|       |      // Translate from SMLoc ranges to column ranges.
  184|       |      // FIXME: Handle multibyte characters.
  185|     10|      ColRanges.push_back(std::make_pair(R.Start.getPointer()-LineStart,
  186|     10|                                         R.End.getPointer()-LineStart));
  187|     10|    }
  188|       |
  189|  80.5k|    LineAndCol = getLineAndColumn(Loc, CurBuf);
  190|  80.5k|  }
  191|       |    
  192|  80.5k|  return SMDiagnostic(*this, Loc, BufferID, LineAndCol.first,
  193|  80.5k|                      LineAndCol.second-1, Kind, Msg.str(),
  194|  80.5k|                      LineStr, ColRanges, FixIts);
  195|  80.5k|}
_ZNK7llvm_ks9SourceMgr12PrintMessageERNS_11raw_ostreamERKNS_12SMDiagnosticEb:
  198|  80.5k|                             bool ShowColors) const {
  199|       |  // Report the message with the diagnostic handler if present.
  200|  80.5k|  if (DiagHandler) {
  ------------------
  |  Branch (200:7): [True: 80.5k, False: 0]
  ------------------
  201|  80.5k|    DiagHandler(Diagnostic, DiagContext);
  202|  80.5k|    return;
  203|  80.5k|  }
  204|       |
  205|      0|  if (Diagnostic.getLoc().isValid()) {
  ------------------
  |  Branch (205:7): [True: 0, False: 0]
  ------------------
  206|      0|    unsigned CurBuf = FindBufferContainingLoc(Diagnostic.getLoc());
  207|      0|    assert(CurBuf && "Invalid or unspecified location!");
  ------------------
  |  Branch (207:5): [True: 0, False: 0]
  |  Branch (207:5): [True: 0, Folded]
  |  Branch (207:5): [True: 0, False: 0]
  ------------------
  208|      0|    PrintIncludeStack(getBufferInfo(CurBuf).IncludeLoc, OS);
  209|      0|  }
  210|       |
  211|      0|  Diagnostic.print(nullptr, OS, ShowColors);
  212|      0|}
_ZNK7llvm_ks9SourceMgr12PrintMessageERNS_11raw_ostreamENS_5SMLocENS0_8DiagKindERKNS_5TwineENS_8ArrayRefINS_7SMRangeEEENS8_INS_7SMFixItEEEb:
  217|  80.5k|                             ArrayRef<SMFixIt> FixIts, bool ShowColors) const {
  218|  80.5k|  PrintMessage(OS, GetMessage(Loc, Kind, Msg, Ranges, FixIts), ShowColors);
  219|  80.5k|}
_ZNK7llvm_ks9SourceMgr12PrintMessageENS_5SMLocENS0_8DiagKindERKNS_5TwineENS_8ArrayRefINS_7SMRangeEEENS6_INS_7SMFixItEEEb:
  223|  80.5k|                             ArrayRef<SMFixIt> FixIts, bool ShowColors) const {
  224|  80.5k|  PrintMessage(llvm_ks::errs(), Loc, Kind, Msg, Ranges, FixIts, ShowColors);
  225|  80.5k|}
_ZN7llvm_ks12SMDiagnosticC2ERKNS_9SourceMgrENS_5SMLocENS_9StringRefEiiNS1_8DiagKindES5_S5_NS_8ArrayRefINSt3__14pairIjjEEEENS7_INS_7SMFixItEEE:
  236|  82.8k|  : SM(&sm), Loc(L), Filename(FN), LineNo(Line), ColumnNo(Col), Kind(Kind),
  237|  82.8k|    Message(Msg), LineContents(LineStr), Ranges(Ranges.vec()),
  238|  82.8k|    FixIts(Hints.begin(), Hints.end()) {
  239|  82.8k|  std::sort(FixIts.begin(), FixIts.end());
  240|  82.8k|}
_ZNK7llvm_ks12SMDiagnostic5printEPKcRNS_11raw_ostreamEbb:
  329|  80.5k|                         bool ShowKindLabel) const {
  330|       |  // Display colors only if OS supports colors.
  331|  80.5k|  ShowColors &= S.has_colors();
  332|       |
  333|  80.5k|  if (ShowColors)
  ------------------
  |  Branch (333:7): [True: 80.5k, False: 0]
  ------------------
  334|  80.5k|    S.changeColor(raw_ostream::SAVEDCOLOR, true);
  335|       |
  336|  80.5k|  if (ProgName && ProgName[0])
  ------------------
  |  Branch (336:7): [True: 0, False: 80.5k]
  |  Branch (336:19): [True: 0, False: 0]
  ------------------
  337|      0|    S << ProgName << ": ";
  338|       |
  339|  80.5k|  if (!Filename.empty()) {
  ------------------
  |  Branch (339:7): [True: 62.4k, False: 18.0k]
  ------------------
  340|  62.4k|    if (Filename == "-")
  ------------------
  |  Branch (340:9): [True: 219, False: 62.1k]
  ------------------
  341|    219|      S << "<stdin>";
  342|  62.1k|    else
  343|  62.1k|      S << Filename;
  344|       |
  345|  62.4k|    if (LineNo != -1) {
  ------------------
  |  Branch (345:9): [True: 62.3k, False: 88]
  ------------------
  346|  62.3k|      S << ':' << LineNo;
  347|  62.3k|      if (ColumnNo != -1)
  ------------------
  |  Branch (347:11): [True: 62.3k, False: 0]
  ------------------
  348|  62.3k|        S << ':' << (ColumnNo+1);
  349|  62.3k|    }
  350|  62.4k|    S << ": ";
  351|  62.4k|  }
  352|       |
  353|  80.5k|  if (ShowKindLabel) {
  ------------------
  |  Branch (353:7): [True: 80.5k, False: 0]
  ------------------
  354|  80.5k|    switch (Kind) {
  ------------------
  |  Branch (354:13): [True: 80.5k, False: 0]
  ------------------
  355|  9.70k|    case SourceMgr::DK_Error:
  ------------------
  |  Branch (355:5): [True: 9.70k, False: 70.8k]
  ------------------
  356|  9.70k|      if (ShowColors)
  ------------------
  |  Branch (356:11): [True: 9.70k, False: 0]
  ------------------
  357|  9.70k|        S.changeColor(raw_ostream::RED, true);
  358|  9.70k|      S << "error: ";
  359|  9.70k|      break;
  360|  14.1k|    case SourceMgr::DK_Warning:
  ------------------
  |  Branch (360:5): [True: 14.1k, False: 66.3k]
  ------------------
  361|  14.1k|      if (ShowColors)
  ------------------
  |  Branch (361:11): [True: 14.1k, False: 0]
  ------------------
  362|  14.1k|        S.changeColor(raw_ostream::MAGENTA, true);
  363|  14.1k|      S << "warning: ";
  364|  14.1k|      break;
  365|  56.6k|    case SourceMgr::DK_Note:
  ------------------
  |  Branch (365:5): [True: 56.6k, False: 23.8k]
  ------------------
  366|  56.6k|      if (ShowColors)
  ------------------
  |  Branch (366:11): [True: 56.6k, False: 0]
  ------------------
  367|  56.6k|        S.changeColor(raw_ostream::BLACK, true);
  368|  56.6k|      S << "note: ";
  369|  56.6k|      break;
  370|  80.5k|    }
  371|       |
  372|  80.5k|    if (ShowColors) {
  ------------------
  |  Branch (372:9): [True: 80.5k, False: 0]
  ------------------
  373|  80.5k|      S.resetColor();
  374|  80.5k|      S.changeColor(raw_ostream::SAVEDCOLOR, true);
  375|  80.5k|    }
  376|  80.5k|  }
  377|       |
  378|  80.5k|  S << Message << '\n';
  379|       |
  380|  80.5k|  if (ShowColors)
  ------------------
  |  Branch (380:7): [True: 80.5k, False: 0]
  ------------------
  381|  80.5k|    S.resetColor();
  382|       |
  383|  80.5k|  if (LineNo == -1 || ColumnNo == -1)
  ------------------
  |  Branch (383:7): [True: 88, False: 80.4k]
  |  Branch (383:23): [True: 0, False: 80.4k]
  ------------------
  384|     88|    return;
  385|       |
  386|       |  // FIXME: If there are multibyte or multi-column characters in the source, all
  387|       |  // our ranges will be wrong. To do this properly, we'll need a byte-to-column
  388|       |  // map like Clang's TextDiagnostic. For now, we'll just handle tabs by
  389|       |  // expanding them later, and bail out rather than show incorrect ranges and
  390|       |  // misaligned fixits for any other odd characters.
  391|  80.4k|  if (std::find_if(LineContents.begin(), LineContents.end(), isNonASCII) !=
  ------------------
  |  Branch (391:7): [True: 7.62k, False: 72.8k]
  ------------------
  392|  80.4k|      LineContents.end()) {
  393|  7.62k|    printSourceLine(S, LineContents);
  394|  7.62k|    return;
  395|  7.62k|  }
  396|  72.8k|  size_t NumColumns = LineContents.size();
  397|       |
  398|       |  // Build the line with the caret and ranges.
  399|  72.8k|  std::string CaretLine(NumColumns+1, ' ');
  400|       |  
  401|       |  // Expand any ranges.
  402|  72.8k|  for (unsigned r = 0, e = Ranges.size(); r != e; ++r) {
  ------------------
  |  Branch (402:43): [True: 10, False: 72.8k]
  ------------------
  403|     10|    std::pair<unsigned, unsigned> R = Ranges[r];
  404|     10|    std::fill(&CaretLine[R.first],
  405|     10|              &CaretLine[std::min((size_t)R.second, CaretLine.size())],
  406|     10|              '~');
  407|     10|  }
  408|       |
  409|       |  // Add any fix-its.
  410|       |  // FIXME: Find the beginning of the line properly for multibyte characters.
  411|  72.8k|  std::string FixItInsertionLine;
  412|  72.8k|  buildFixItLine(CaretLine, FixItInsertionLine, FixIts,
  413|  72.8k|                 makeArrayRef(Loc.getPointer() - ColumnNo,
  414|  72.8k|                              LineContents.size()));
  415|       |
  416|       |  // Finally, plop on the caret.
  417|  72.8k|  if (unsigned(ColumnNo) <= NumColumns)
  ------------------
  |  Branch (417:7): [True: 72.8k, False: 0]
  ------------------
  418|  72.8k|    CaretLine[ColumnNo] = '^';
  419|      0|  else 
  420|      0|    CaretLine[NumColumns] = '^';
  421|       |  
  422|       |  // ... and remove trailing whitespace so the output doesn't wrap for it.  We
  423|       |  // know that the line isn't completely empty because it has the caret in it at
  424|       |  // least.
  425|  72.8k|  CaretLine.erase(CaretLine.find_last_not_of(' ')+1);
  426|       |  
  427|  72.8k|  printSourceLine(S, LineContents);
  428|       |
  429|  72.8k|  if (ShowColors)
  ------------------
  |  Branch (429:7): [True: 72.8k, False: 0]
  ------------------
  430|  72.8k|    S.changeColor(raw_ostream::GREEN, true);
  431|       |
  432|       |  // Print out the caret line, matching tabs in the source line.
  433|  2.30M|  for (unsigned i = 0, e = CaretLine.size(), OutCol = 0; i != e; ++i) {
  ------------------
  |  Branch (433:58): [True: 2.23M, False: 72.8k]
  ------------------
  434|  2.23M|    if (i >= LineContents.size() || LineContents[i] != '\t') {
  ------------------
  |  Branch (434:9): [True: 146, False: 2.23M]
  |  Branch (434:37): [True: 2.22M, False: 5.92k]
  ------------------
  435|  2.22M|      S << CaretLine[i];
  436|  2.22M|      ++OutCol;
  437|  2.22M|      continue;
  438|  2.22M|    }
  439|       |    
  440|       |    // Okay, we have a tab.  Insert the appropriate number of characters.
  441|  40.4k|    do {
  442|  40.4k|      S << CaretLine[i];
  443|  40.4k|      ++OutCol;
  444|  40.4k|    } while ((OutCol % TabStop) != 0);
  ------------------
  |  Branch (444:14): [True: 34.5k, False: 5.92k]
  ------------------
  445|  5.92k|  }
  446|  72.8k|  S << '\n';
  447|       |
  448|  72.8k|  if (ShowColors)
  ------------------
  |  Branch (448:7): [True: 72.8k, False: 0]
  ------------------
  449|  72.8k|    S.resetColor();
  450|       |
  451|       |  // Print out the replacement line, matching tabs in the source line.
  452|  72.8k|  if (FixItInsertionLine.empty())
  ------------------
  |  Branch (452:7): [True: 72.8k, False: 0]
  ------------------
  453|  72.8k|    return;
  454|       |  
  455|      0|  for (size_t i = 0, e = FixItInsertionLine.size(), OutCol = 0; i < e; ++i) {
  ------------------
  |  Branch (455:65): [True: 0, False: 0]
  ------------------
  456|      0|    if (i >= LineContents.size() || LineContents[i] != '\t') {
  ------------------
  |  Branch (456:9): [True: 0, False: 0]
  |  Branch (456:37): [True: 0, False: 0]
  ------------------
  457|      0|      S << FixItInsertionLine[i];
  458|      0|      ++OutCol;
  459|      0|      continue;
  460|      0|    }
  461|       |
  462|       |    // Okay, we have a tab.  Insert the appropriate number of characters.
  463|      0|    do {
  464|      0|      S << FixItInsertionLine[i];
  465|       |      // FIXME: This is trying not to break up replacements, but then to re-sync
  466|       |      // with the tabs between replacements. This will fail, though, if two
  467|       |      // fix-it replacements are exactly adjacent, or if a fix-it contains a
  468|       |      // space. Really we should be precomputing column widths, which we'll
  469|       |      // need anyway for multibyte chars.
  470|      0|      if (FixItInsertionLine[i] != ' ')
  ------------------
  |  Branch (470:11): [True: 0, False: 0]
  ------------------
  471|      0|        ++i;
  472|      0|      ++OutCol;
  473|      0|    } while (((OutCol % TabStop) != 0) && i != e);
  ------------------
  |  Branch (473:14): [True: 0, False: 0]
  |  Branch (473:43): [True: 0, False: 0]
  ------------------
  474|      0|  }
  475|      0|  S << '\n';
  476|      0|}
SourceMgr.cpp:_ZL8getCachePv:
   33|   191k|static LineNoCacheTy *getCache(void *Ptr) {
   34|   191k|  return (LineNoCacheTy*)Ptr;
   35|   191k|}
SourceMgr.cpp:_ZL10isNonASCIIc:
  324|  4.60M|static bool isNonASCII(char c) {
  325|  4.60M|  return c & 0x80;
  326|  4.60M|}
SourceMgr.cpp:_ZL15printSourceLineRN7llvm_ks11raw_ostreamENS_9StringRefE:
  306|  80.4k|static void printSourceLine(raw_ostream &S, StringRef LineContents) {
  307|       |  // Print out the source line one character at a time, so we can expand tabs.
  308|  4.98M|  for (unsigned i = 0, e = LineContents.size(), OutCol = 0; i != e; ++i) {
  ------------------
  |  Branch (308:61): [True: 4.90M, False: 80.4k]
  ------------------
  309|  4.90M|    if (LineContents[i] != '\t') {
  ------------------
  |  Branch (309:9): [True: 4.89M, False: 13.8k]
  ------------------
  310|  4.89M|      S << LineContents[i];
  311|  4.89M|      ++OutCol;
  312|  4.89M|      continue;
  313|  4.89M|    }
  314|       |
  315|       |    // If we have a tab, emit at least one space, then round up to 8 columns.
  316|  74.9k|    do {
  317|  74.9k|      S << ' ';
  318|  74.9k|      ++OutCol;
  319|  74.9k|    } while ((OutCol % TabStop) != 0);
  ------------------
  |  Branch (319:14): [True: 61.1k, False: 13.8k]
  ------------------
  320|  13.8k|  }
  321|  80.4k|  S << '\n';
  322|  80.4k|}
SourceMgr.cpp:_ZL14buildFixItLineRNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES6_N7llvm_ks8ArrayRefINS7_7SMFixItEEENS8_IcEE:
  243|  72.8k|                           ArrayRef<SMFixIt> FixIts, ArrayRef<char> SourceLine){
  244|  72.8k|  if (FixIts.empty())
  ------------------
  |  Branch (244:7): [True: 72.8k, False: 0]
  ------------------
  245|  72.8k|    return;
  246|       |
  247|      0|  const char *LineStart = SourceLine.begin();
  248|      0|  const char *LineEnd = SourceLine.end();
  249|       |
  250|      0|  size_t PrevHintEndCol = 0;
  251|       |
  252|      0|  for (ArrayRef<SMFixIt>::iterator I = FixIts.begin(), E = FixIts.end();
  253|      0|       I != E; ++I) {
  ------------------
  |  Branch (253:8): [True: 0, False: 0]
  ------------------
  254|       |    // If the fixit contains a newline or tab, ignore it.
  255|      0|    if (I->getText().find_first_of("\n\r\t") != StringRef::npos)
  ------------------
  |  Branch (255:9): [True: 0, False: 0]
  ------------------
  256|      0|      continue;
  257|       |
  258|      0|    SMRange R = I->getRange();
  259|       |
  260|       |    // If the line doesn't contain any part of the range, then ignore it.
  261|      0|    if (R.Start.getPointer() > LineEnd || R.End.getPointer() < LineStart)
  ------------------
  |  Branch (261:9): [True: 0, False: 0]
  |  Branch (261:43): [True: 0, False: 0]
  ------------------
  262|      0|      continue;
  263|       |
  264|       |    // Translate from SMLoc to column.
  265|       |    // Ignore pieces of the range that go onto other lines.
  266|       |    // FIXME: Handle multibyte characters in the source line.
  267|      0|    unsigned FirstCol;
  268|      0|    if (R.Start.getPointer() < LineStart)
  ------------------
  |  Branch (268:9): [True: 0, False: 0]
  ------------------
  269|      0|      FirstCol = 0;
  270|      0|    else
  271|      0|      FirstCol = R.Start.getPointer() - LineStart;
  272|       |
  273|       |    // If we inserted a long previous hint, push this one forwards, and add
  274|       |    // an extra space to show that this is not part of the previous
  275|       |    // completion. This is sort of the best we can do when two hints appear
  276|       |    // to overlap.
  277|       |    //
  278|       |    // Note that if this hint is located immediately after the previous
  279|       |    // hint, no space will be added, since the location is more important.
  280|      0|    unsigned HintCol = FirstCol;
  281|      0|    if (HintCol < PrevHintEndCol)
  ------------------
  |  Branch (281:9): [True: 0, False: 0]
  ------------------
  282|      0|      HintCol = PrevHintEndCol + 1;
  283|       |
  284|       |    // This relies on one byte per column in our fixit hints.
  285|      0|    unsigned LastColumnModified = HintCol + I->getText().size();
  286|      0|    if (LastColumnModified > FixItLine.size())
  ------------------
  |  Branch (286:9): [True: 0, False: 0]
  ------------------
  287|      0|      FixItLine.resize(LastColumnModified, ' ');
  288|       |
  289|      0|    std::copy(I->getText().begin(), I->getText().end(),
  290|      0|              FixItLine.begin() + HintCol);
  291|       |
  292|      0|    PrevHintEndCol = LastColumnModified;
  293|       |
  294|       |    // For replacements, mark the removal range with '~'.
  295|       |    // FIXME: Handle multibyte characters in the source line.
  296|      0|    unsigned LastCol;
  297|      0|    if (R.End.getPointer() >= LineEnd)
  ------------------
  |  Branch (297:9): [True: 0, False: 0]
  ------------------
  298|      0|      LastCol = LineEnd - LineStart;
  299|      0|    else
  300|      0|      LastCol = R.End.getPointer() - LineStart;
  301|       |
  302|      0|    std::fill(&CaretLine[FirstCol], &CaretLine[LastCol], '~');
  303|      0|  }
  304|      0|}

_ZN7llvm_ks13StringMapImpl4initEj:
   36|   105k|void StringMapImpl::init(unsigned InitSize) {
   37|   105k|  assert((InitSize & (InitSize-1)) == 0 &&
  ------------------
  |  Branch (37:3): [True: 105k, False: 0]
  |  Branch (37:3): [True: 105k, Folded]
  |  Branch (37:3): [True: 105k, False: 0]
  ------------------
   38|   105k|         "Init Size must be a power of 2 or zero!");
   39|   105k|  NumBuckets = InitSize ? InitSize : 16;
  ------------------
  |  Branch (39:16): [True: 105k, False: 0]
  ------------------
   40|   105k|  NumItems = 0;
   41|   105k|  NumTombstones = 0;
   42|       |  
   43|   105k|  TheTable = (StringMapEntryBase **)calloc(NumBuckets+1,
   44|   105k|                                           sizeof(StringMapEntryBase **) +
   45|   105k|                                           sizeof(unsigned));
   46|       |
   47|       |  // Allocate one extra bucket, set it to look filled so the iterators stop at
   48|       |  // end.
   49|   105k|  TheTable[NumBuckets] = (StringMapEntryBase*)2;
   50|   105k|}
_ZN7llvm_ks13StringMapImpl15LookupBucketForENS_9StringRefE:
   58|  4.94M|unsigned StringMapImpl::LookupBucketFor(StringRef Name) {
   59|  4.94M|  unsigned HTSize = NumBuckets;
   60|  4.94M|  if (HTSize == 0) {  // Hash table unallocated so far?
  ------------------
  |  Branch (60:7): [True: 105k, False: 4.83M]
  ------------------
   61|   105k|    init(16);
   62|   105k|    HTSize = NumBuckets;
   63|   105k|  }
   64|  4.94M|  unsigned FullHashValue = HashString(Name);
   65|  4.94M|  unsigned BucketNo = FullHashValue & (HTSize-1);
   66|  4.94M|  unsigned *HashTable = (unsigned *)(TheTable + NumBuckets + 1);
   67|       |
   68|  4.94M|  unsigned ProbeAmt = 1;
   69|  4.94M|  int FirstTombstone = -1;
   70|  11.7M|  while (1) {
  ------------------
  |  Branch (70:10): [True: 11.7M, Folded]
  ------------------
   71|  11.7M|    StringMapEntryBase *BucketItem = TheTable[BucketNo];
   72|       |    // If we found an empty bucket, this key isn't in the table yet, return it.
   73|  11.7M|    if (LLVM_LIKELY(!BucketItem)) {
  ------------------
  |  |  171|  11.7M|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 4.57M, False: 7.18M]
  |  |  ------------------
  ------------------
   74|       |      // If we found a tombstone, we want to reuse the tombstone instead of an
   75|       |      // empty bucket.  This reduces probing.
   76|  4.57M|      if (FirstTombstone != -1) {
  ------------------
  |  Branch (76:11): [True: 0, False: 4.57M]
  ------------------
   77|      0|        HashTable[FirstTombstone] = FullHashValue;
   78|      0|        return FirstTombstone;
   79|      0|      }
   80|       |      
   81|  4.57M|      HashTable[BucketNo] = FullHashValue;
   82|  4.57M|      return BucketNo;
   83|  4.57M|    }
   84|       |    
   85|  7.18M|    if (BucketItem == getTombstoneVal()) {
  ------------------
  |  Branch (85:9): [True: 0, False: 7.18M]
  ------------------
   86|       |      // Skip over tombstones.  However, remember the first one we see.
   87|      0|      if (FirstTombstone == -1) FirstTombstone = BucketNo;
  ------------------
  |  Branch (87:11): [True: 0, False: 0]
  ------------------
   88|  7.18M|    } else if (LLVM_LIKELY(HashTable[BucketNo] == FullHashValue)) {
  ------------------
  |  |  171|  7.18M|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 370k, False: 6.81M]
  |  |  ------------------
  ------------------
   89|       |      // If the full hash value matches, check deeply for a match.  The common
   90|       |      // case here is that we are only looking at the buckets (for item info
   91|       |      // being non-null and for the full hash value) not at the items.  This
   92|       |      // is important for cache locality.
   93|       |      
   94|       |      // Do the comparison like this because Name isn't necessarily
   95|       |      // null-terminated!
   96|   370k|      char *ItemStr = (char*)BucketItem+ItemSize;
   97|   370k|      if (Name == StringRef(ItemStr, BucketItem->getKeyLength())) {
  ------------------
  |  Branch (97:11): [True: 369k, False: 502]
  ------------------
   98|       |        // We found a match!
   99|   369k|        return BucketNo;
  100|   369k|      }
  101|   370k|    }
  102|       |    
  103|       |    // Okay, we didn't find the item.  Probe to the next bucket.
  104|  6.81M|    BucketNo = (BucketNo+ProbeAmt) & (HTSize-1);
  105|       |    
  106|       |    // Use quadratic probing, it has fewer clumping artifacts than linear
  107|       |    // probing and has good cache behavior in the common case.
  108|  6.81M|    ++ProbeAmt;
  109|  6.81M|  }
  110|  4.94M|}
_ZNK7llvm_ks13StringMapImpl7FindKeyENS_9StringRefE:
  116|  2.56M|int StringMapImpl::FindKey(StringRef Key) const {
  117|  2.56M|  unsigned HTSize = NumBuckets;
  118|  2.56M|  if (HTSize == 0) return -1;  // Really empty table?
  ------------------
  |  Branch (118:7): [True: 496k, False: 2.06M]
  ------------------
  119|  2.06M|  unsigned FullHashValue = HashString(Key);
  120|  2.06M|  unsigned BucketNo = FullHashValue & (HTSize-1);
  121|  2.06M|  unsigned *HashTable = (unsigned *)(TheTable + NumBuckets + 1);
  122|       |
  123|  2.06M|  unsigned ProbeAmt = 1;
  124|  3.51M|  while (1) {
  ------------------
  |  Branch (124:10): [True: 3.51M, Folded]
  ------------------
  125|  3.51M|    StringMapEntryBase *BucketItem = TheTable[BucketNo];
  126|       |    // If we found an empty bucket, this key isn't in the table yet, return.
  127|  3.51M|    if (LLVM_LIKELY(!BucketItem))
  ------------------
  |  |  171|  3.51M|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 1.40M, False: 2.10M]
  |  |  ------------------
  ------------------
  128|  1.40M|      return -1;
  129|       |    
  130|  2.10M|    if (BucketItem == getTombstoneVal()) {
  ------------------
  |  Branch (130:9): [True: 0, False: 2.10M]
  ------------------
  131|       |      // Ignore tombstones.
  132|  2.10M|    } else if (LLVM_LIKELY(HashTable[BucketNo] == FullHashValue)) {
  ------------------
  |  |  171|  2.10M|#define LLVM_LIKELY(EXPR) __builtin_expect((bool)(EXPR), true)
  |  |  ------------------
  |  |  |  Branch (171:27): [True: 656k, False: 1.44M]
  |  |  ------------------
  ------------------
  133|       |      // If the full hash value matches, check deeply for a match.  The common
  134|       |      // case here is that we are only looking at the buckets (for item info
  135|       |      // being non-null and for the full hash value) not at the items.  This
  136|       |      // is important for cache locality.
  137|       |      
  138|       |      // Do the comparison like this because NameStart isn't necessarily
  139|       |      // null-terminated!
  140|   656k|      char *ItemStr = (char*)BucketItem+ItemSize;
  141|   656k|      if (Key == StringRef(ItemStr, BucketItem->getKeyLength())) {
  ------------------
  |  Branch (141:11): [True: 656k, False: 264]
  ------------------
  142|       |        // We found a match!
  143|   656k|        return BucketNo;
  144|   656k|      }
  145|   656k|    }
  146|       |    
  147|       |    // Okay, we didn't find the item.  Probe to the next bucket.
  148|  1.44M|    BucketNo = (BucketNo+ProbeAmt) & (HTSize-1);
  149|       |    
  150|       |    // Use quadratic probing, it has fewer clumping artifacts than linear
  151|       |    // probing and has good cache behavior in the common case.
  152|  1.44M|    ++ProbeAmt;
  153|  1.44M|  }
  154|  2.06M|}
_ZN7llvm_ks13StringMapImpl11RehashTableEj:
  184|  4.57M|unsigned StringMapImpl::RehashTable(unsigned BucketNo) {
  185|  4.57M|  unsigned NewSize;
  186|  4.57M|  unsigned *HashTable = (unsigned *)(TheTable + NumBuckets + 1);
  187|       |
  188|       |  // If the hash table is now more than 3/4 full, or if fewer than 1/8 of
  189|       |  // the buckets are empty (meaning that many are filled with tombstones),
  190|       |  // grow/rehash the table.
  191|  4.57M|  if (LLVM_UNLIKELY(NumItems * 4 > NumBuckets * 3)) {
  ------------------
  |  |  172|  4.57M|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 153k, False: 4.42M]
  |  |  ------------------
  ------------------
  192|   153k|    NewSize = NumBuckets*2;
  193|  4.42M|  } else if (LLVM_UNLIKELY(NumBuckets - (NumItems + NumTombstones) <=
  ------------------
  |  |  172|  4.42M|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 4.42M]
  |  |  ------------------
  ------------------
  194|  4.42M|                           NumBuckets / 8)) {
  195|      0|    NewSize = NumBuckets;
  196|  4.42M|  } else {
  197|  4.42M|    return BucketNo;
  198|  4.42M|  }
  199|       |
  200|   153k|  unsigned NewBucketNo = BucketNo;
  201|       |  // Allocate one extra bucket which will always be non-empty.  This allows the
  202|       |  // iterators to stop at end.
  203|   153k|  StringMapEntryBase **NewTableArray =
  204|   153k|    (StringMapEntryBase **)calloc(NewSize+1, sizeof(StringMapEntryBase *) +
  205|   153k|                                             sizeof(unsigned));
  206|   153k|  unsigned *NewHashArray = (unsigned *)(NewTableArray + NewSize + 1);
  207|   153k|  NewTableArray[NewSize] = (StringMapEntryBase*)2;
  208|       |
  209|       |  // Rehash all the items into their new buckets.  Luckily :) we already have
  210|       |  // the hash values available, so we don't have to rehash any strings.
  211|  7.87M|  for (unsigned I = 0, E = NumBuckets; I != E; ++I) {
  ------------------
  |  Branch (211:40): [True: 7.72M, False: 153k]
  ------------------
  212|  7.72M|    StringMapEntryBase *Bucket = TheTable[I];
  213|  7.72M|    if (Bucket && Bucket != getTombstoneVal()) {
  ------------------
  |  Branch (213:9): [True: 5.94M, False: 1.77M]
  |  Branch (213:19): [True: 5.94M, False: 0]
  ------------------
  214|       |      // Fast case, bucket available.
  215|  5.94M|      unsigned FullHash = HashTable[I];
  216|  5.94M|      unsigned NewBucket = FullHash & (NewSize-1);
  217|  5.94M|      if (!NewTableArray[NewBucket]) {
  ------------------
  |  Branch (217:11): [True: 4.65M, False: 1.29M]
  ------------------
  218|  4.65M|        NewTableArray[FullHash & (NewSize-1)] = Bucket;
  219|  4.65M|        NewHashArray[FullHash & (NewSize-1)] = FullHash;
  220|  4.65M|        if (I == BucketNo)
  ------------------
  |  Branch (220:13): [True: 131k, False: 4.51M]
  ------------------
  221|   131k|          NewBucketNo = NewBucket;
  222|  4.65M|        continue;
  223|  4.65M|      }
  224|       |      
  225|       |      // Otherwise probe for a spot.
  226|  1.29M|      unsigned ProbeSize = 1;
  227|  1.87M|      do {
  228|  1.87M|        NewBucket = (NewBucket + ProbeSize++) & (NewSize-1);
  229|  1.87M|      } while (NewTableArray[NewBucket]);
  ------------------
  |  Branch (229:16): [True: 579k, False: 1.29M]
  ------------------
  230|       |      
  231|       |      // Finally found a slot.  Fill it in.
  232|  1.29M|      NewTableArray[NewBucket] = Bucket;
  233|  1.29M|      NewHashArray[NewBucket] = FullHash;
  234|  1.29M|      if (I == BucketNo)
  ------------------
  |  Branch (234:11): [True: 22.1k, False: 1.27M]
  ------------------
  235|  22.1k|        NewBucketNo = NewBucket;
  236|  1.29M|    }
  237|  7.72M|  }
  238|       |  
  239|   153k|  free(TheTable);
  240|       |  
  241|   153k|  TheTable = NewTableArray;
  242|   153k|  NumBuckets = NewSize;
  243|   153k|  NumTombstones = 0;
  244|   153k|  return NewBucketNo;
  245|  4.57M|}

_ZNK7llvm_ks9StringRef13compare_lowerES0_:
   52|  7.05k|int StringRef::compare_lower(StringRef RHS) const {
   53|  7.05k|  if (int Res = ascii_strncasecmp(Data, RHS.Data, std::min(Length, RHS.Length)))
  ------------------
  |  Branch (53:11): [True: 5.48k, False: 1.56k]
  ------------------
   54|  5.48k|    return Res;
   55|  1.56k|  if (Length == RHS.Length)
  ------------------
  |  Branch (55:7): [True: 969, False: 599]
  ------------------
   56|    969|    return 0;
   57|    599|  return Length < RHS.Length ? -1 : 1;
  ------------------
  |  Branch (57:10): [True: 590, False: 9]
  ------------------
   58|  1.56k|}
_ZNK7llvm_ks9StringRef16startswith_lowerES0_:
   61|    563|bool StringRef::startswith_lower(StringRef Prefix) const {
   62|    563|  return Length >= Prefix.Length &&
  ------------------
  |  Branch (62:10): [True: 507, False: 56]
  ------------------
   63|    507|      ascii_strncasecmp(Data, Prefix.Data, Prefix.Length) == 0;
  ------------------
  |  Branch (63:7): [True: 11, False: 496]
  ------------------
   64|    563|}
_ZNK7llvm_ks9StringRef5lowerEv:
  117|  1.39M|std::string StringRef::lower() const {
  118|  1.39M|  std::string Result(size(), char());
  119|  8.26M|  for (size_type i = 0, e = size(); i != e; ++i) {
  ------------------
  |  Branch (119:37): [True: 6.86M, False: 1.39M]
  ------------------
  120|  6.86M|    Result[i] = ascii_tolower(Data[i]);
  121|  6.86M|  }
  122|  1.39M|  return Result;
  123|  1.39M|}
_ZNK7llvm_ks9StringRef4findES0_m:
  142|   440k|size_t StringRef::find(StringRef Str, size_t From) const {
  143|   440k|  if (From > Length)
  ------------------
  |  Branch (143:7): [True: 0, False: 440k]
  ------------------
  144|      0|    return npos;
  145|       |
  146|   440k|  const char *Needle = Str.data();
  147|   440k|  size_t N = Str.size();
  148|   440k|  if (N == 0)
  ------------------
  |  Branch (148:7): [True: 0, False: 440k]
  ------------------
  149|      0|    return From;
  150|       |
  151|   440k|  size_t Size = Length - From;
  152|   440k|  if (Size < N)
  ------------------
  |  Branch (152:7): [True: 0, False: 440k]
  ------------------
  153|      0|    return npos;
  154|       |
  155|   440k|  const char *Start = Data + From;
  156|   440k|  const char *Stop = Start + (Size - N + 1);
  157|       |
  158|       |  // For short haystacks or unsupported needles fall back to the naive algorithm
  159|   440k|  if (Size < 16 || N > 255) {
  ------------------
  |  Branch (159:7): [True: 440k, False: 468]
  |  Branch (159:20): [True: 0, False: 468]
  ------------------
  160|   441k|    do {
  161|   441k|      if (std::memcmp(Start, Needle, N) == 0)
  ------------------
  |  Branch (161:11): [True: 25, False: 441k]
  ------------------
  162|     25|        return Start - Data;
  163|   441k|      ++Start;
  164|   441k|    } while (Start < Stop);
  ------------------
  |  Branch (164:14): [True: 569, False: 440k]
  ------------------
  165|   440k|    return npos;
  166|   440k|  }
  167|       |
  168|       |  // Build the bad char heuristic table, with uint8_t to reduce cache thrashing.
  169|    468|  uint8_t BadCharSkip[256];
  170|    468|  std::memset(BadCharSkip, N, 256);
  171|    936|  for (unsigned i = 0; i != N-1; ++i)
  ------------------
  |  Branch (171:24): [True: 468, False: 468]
  ------------------
  172|    468|    BadCharSkip[(uint8_t)Str[i]] = N-1-i;
  173|       |
  174|  5.65k|  do {
  175|  5.65k|    if (std::memcmp(Start, Needle, N) == 0)
  ------------------
  |  Branch (175:9): [True: 349, False: 5.30k]
  ------------------
  176|    349|      return Start - Data;
  177|       |
  178|       |    // Otherwise skip the appropriate number of bytes.
  179|  5.30k|    Start += BadCharSkip[(uint8_t)Start[N-1]];
  180|  5.30k|  } while (Start < Stop);
  ------------------
  |  Branch (180:12): [True: 5.18k, False: 119]
  ------------------
  181|       |
  182|    119|  return npos;
  183|    468|}
_ZNK7llvm_ks9StringRef17find_first_not_ofES0_m:
  231|   116k|                                                  size_t From) const {
  232|   116k|  std::bitset<1 << CHAR_BIT> CharBits;
  233|   812k|  for (size_type i = 0; i != Chars.size(); ++i)
  ------------------
  |  Branch (233:25): [True: 696k, False: 116k]
  ------------------
  234|   696k|    CharBits.set((unsigned char)Chars[i]);
  235|       |
  236|   138k|  for (size_type i = std::min(From, Length), e = Length; i != e; ++i)
  ------------------
  |  Branch (236:58): [True: 134k, False: 4.26k]
  ------------------
  237|   134k|    if (!CharBits.test((unsigned char)Data[i]))
  ------------------
  |  Branch (237:9): [True: 111k, False: 22.7k]
  ------------------
  238|   111k|      return i;
  239|  4.26k|  return npos;
  240|   116k|}
_ZNK7llvm_ks9StringRef12find_last_ofES0_m:
  247|  85.1k|                                             size_t From) const {
  248|  85.1k|  std::bitset<1 << CHAR_BIT> CharBits;
  249|   255k|  for (size_type i = 0; i != Chars.size(); ++i)
  ------------------
  |  Branch (249:25): [True: 170k, False: 85.1k]
  ------------------
  250|   170k|    CharBits.set((unsigned char)Chars[i]);
  251|       |
  252|  2.27M|  for (size_type i = std::min(From, Length) - 1, e = -1; i != e; --i)
  ------------------
  |  Branch (252:58): [True: 2.22M, False: 56.1k]
  ------------------
  253|  2.22M|    if (CharBits.test((unsigned char)Data[i]))
  ------------------
  |  Branch (253:9): [True: 29.0k, False: 2.19M]
  ------------------
  254|  29.0k|      return i;
  255|  56.1k|  return npos;
  256|  85.1k|}
_ZNK7llvm_ks9StringRef16find_last_not_ofES0_m:
  272|   116k|                                                 size_t From) const {
  273|   116k|  std::bitset<1 << CHAR_BIT> CharBits;
  274|   812k|  for (size_type i = 0, e = Chars.size(); i != e; ++i)
  ------------------
  |  Branch (274:43): [True: 696k, False: 116k]
  ------------------
  275|   696k|    CharBits.set((unsigned char)Chars[i]);
  276|       |
  277|   144k|  for (size_type i = std::min(From, Length) - 1, e = -1; i != e; --i)
  ------------------
  |  Branch (277:58): [True: 139k, False: 4.26k]
  ------------------
  278|   139k|    if (!CharBits.test((unsigned char)Data[i]))
  ------------------
  |  Branch (278:9): [True: 111k, False: 28.1k]
  ------------------
  279|   111k|      return i;
  280|  4.26k|  return npos;
  281|   116k|}
_ZNK7llvm_ks9StringRef5splitERNS_15SmallVectorImplIS0_EEcib:
  311|   276k|                      int MaxSplit, bool KeepEmpty) const {
  312|   276k|  StringRef S = *this;
  313|       |
  314|       |  // Count down from MaxSplit. When MaxSplit is -1, this will just split
  315|       |  // "forever". This doesn't support splitting more than 2^31 times
  316|       |  // intentionally; if we ever want that we can make MaxSplit a 64-bit integer
  317|       |  // but that seems unlikely to be useful.
  318|   315k|  while (MaxSplit-- != 0) {
  ------------------
  |  Branch (318:10): [True: 315k, False: 0]
  ------------------
  319|   315k|    size_t Idx = S.find(Separator);
  320|   315k|    if (Idx == npos)
  ------------------
  |  Branch (320:9): [True: 276k, False: 39.0k]
  ------------------
  321|   276k|      break;
  322|       |
  323|       |    // Push this split.
  324|  39.0k|    if (KeepEmpty || Idx > 0)
  ------------------
  |  Branch (324:9): [True: 38.8k, False: 158]
  |  Branch (324:22): [True: 34, False: 124]
  ------------------
  325|  38.8k|      A.push_back(S.slice(0, Idx));
  326|       |
  327|       |    // Jump forward.
  328|  39.0k|    S = S.slice(Idx + 1, npos);
  329|  39.0k|  }
  330|       |
  331|       |  // Push the tail.
  332|   276k|  if (KeepEmpty || !S.empty())
  ------------------
  |  Branch (332:7): [True: 211k, False: 65.0k]
  |  Branch (332:20): [True: 64.9k, False: 99]
  ------------------
  333|   276k|    A.push_back(S);
  334|   276k|}
_ZNK7llvm_ks9StringRef12getAsIntegerEjRNS_5APIntE:
  445|   799k|bool StringRef::getAsInteger(unsigned Radix, APInt &Result) const {
  446|   799k|  StringRef Str = *this;
  447|       |
  448|       |  // Autosense radix if not specified.
  449|   799k|  if (Radix == 0)
  ------------------
  |  Branch (449:7): [True: 8.48k, False: 790k]
  ------------------
  450|  8.48k|    Radix = GetAutoSenseRadix(Str);
  451|       |
  452|   799k|  assert(Radix > 1 && Radix <= 36);
  ------------------
  |  Branch (452:3): [True: 799k, False: 0]
  |  Branch (452:3): [True: 799k, False: 0]
  |  Branch (452:3): [True: 799k, False: 0]
  ------------------
  453|       |
  454|       |  // Empty strings (after the radix autosense) are invalid.
  455|   799k|  if (Str.empty()) return true;
  ------------------
  |  Branch (455:7): [True: 0, False: 799k]
  ------------------
  456|       |
  457|       |  // Skip leading zeroes.  This can be a significant improvement if
  458|       |  // it means we don't need > 64 bits.
  459|  1.04M|  while (!Str.empty() && Str.front() == '0')
  ------------------
  |  Branch (459:10): [True: 885k, False: 157k]
  |  Branch (459:26): [True: 243k, False: 641k]
  ------------------
  460|   243k|    Str = Str.substr(1);
  461|       |
  462|       |  // If it was nothing but zeroes....
  463|   799k|  if (Str.empty()) {
  ------------------
  |  Branch (463:7): [True: 157k, False: 641k]
  ------------------
  464|   157k|    Result = APInt(64, 0);
  465|   157k|    return false;
  466|   157k|  }
  467|       |
  468|       |  // (Over-)estimate the required number of bits.
  469|   641k|  unsigned Log2Radix = 0;
  470|  3.15M|  while ((1U << Log2Radix) < Radix) Log2Radix++;
  ------------------
  |  Branch (470:10): [True: 2.51M, False: 641k]
  ------------------
  471|   641k|  bool IsPowerOf2Radix = ((1U << Log2Radix) == Radix);
  472|       |
  473|   641k|  unsigned BitWidth = Log2Radix * Str.size();
  474|   641k|  if (BitWidth < Result.getBitWidth())
  ------------------
  |  Branch (474:7): [True: 638k, False: 3.71k]
  ------------------
  475|   638k|    BitWidth = Result.getBitWidth(); // don't shrink the result
  476|  3.71k|  else if (BitWidth > Result.getBitWidth())
  ------------------
  |  Branch (476:12): [True: 2.93k, False: 775]
  ------------------
  477|  2.93k|    Result = Result.zext(BitWidth);
  478|       |
  479|   641k|  APInt RadixAP, CharAP; // unused unless !IsPowerOf2Radix
  480|   641k|  if (!IsPowerOf2Radix) {
  ------------------
  |  Branch (480:7): [True: 0, False: 641k]
  ------------------
  481|       |    // These must have the same bit-width as Result.
  482|      0|    RadixAP = APInt(BitWidth, Radix);
  483|      0|    CharAP = APInt(BitWidth, 0);
  484|      0|  }
  485|       |
  486|       |  // Parse all the bytes of the string given this radix.
  487|   641k|  Result = 0;
  488|  2.20M|  while (!Str.empty()) {
  ------------------
  |  Branch (488:10): [True: 1.56M, False: 639k]
  ------------------
  489|  1.56M|    unsigned CharVal;
  490|  1.56M|    if (Str[0] >= '0' && Str[0] <= '9')
  ------------------
  |  Branch (490:9): [True: 1.56M, False: 0]
  |  Branch (490:26): [True: 1.51M, False: 46.3k]
  ------------------
  491|  1.51M|      CharVal = Str[0]-'0';
  492|  46.3k|    else if (Str[0] >= 'a' && Str[0] <= 'z')
  ------------------
  |  Branch (492:14): [True: 42.3k, False: 4.02k]
  |  Branch (492:31): [True: 42.3k, False: 0]
  ------------------
  493|  42.3k|      CharVal = Str[0]-'a'+10;
  494|  4.02k|    else if (Str[0] >= 'A' && Str[0] <= 'Z')
  ------------------
  |  Branch (494:14): [True: 4.02k, False: 0]
  |  Branch (494:31): [True: 4.02k, False: 0]
  ------------------
  495|  4.02k|      CharVal = Str[0]-'A'+10;
  496|      0|    else
  497|      0|      return true;
  498|       |
  499|       |    // If the parsed value is larger than the integer radix, the string is
  500|       |    // invalid.
  501|  1.56M|    if (CharVal >= Radix)
  ------------------
  |  Branch (501:9): [True: 2.04k, False: 1.56M]
  ------------------
  502|  2.04k|      return true;
  503|       |
  504|       |    // Add in this character.
  505|  1.56M|    if (IsPowerOf2Radix) {
  ------------------
  |  Branch (505:9): [True: 1.56M, False: 0]
  ------------------
  506|  1.56M|      Result <<= Log2Radix;
  507|  1.56M|      Result |= CharVal;
  508|  1.56M|    } else {
  509|      0|      Result *= RadixAP;
  510|      0|      CharAP = CharVal;
  511|      0|      Result += CharAP;
  512|      0|    }
  513|       |
  514|  1.56M|    Str = Str.substr(1);
  515|  1.56M|  }
  516|       |
  517|   639k|  return false;
  518|   641k|}
_ZN7llvm_ks10hash_valueENS_9StringRefE:
  522|  16.5k|hash_code llvm_ks::hash_value(StringRef S) {
  523|  16.5k|  return hash_combine_range(S.begin(), S.end());
  524|  16.5k|}
StringRef.cpp:_ZL17ascii_strncasecmpPKcS0_m:
   41|  7.55k|static int ascii_strncasecmp(const char *LHS, const char *RHS, size_t Length) {
   42|  12.3k|  for (size_t I = 0; I < Length; ++I) {
  ------------------
  |  Branch (42:22): [True: 10.7k, False: 1.57k]
  ------------------
   43|  10.7k|    unsigned char LHC = ascii_tolower(LHS[I]);
   44|  10.7k|    unsigned char RHC = ascii_tolower(RHS[I]);
   45|  10.7k|    if (LHC != RHC)
  ------------------
  |  Branch (45:9): [True: 5.98k, False: 4.80k]
  ------------------
   46|  5.98k|      return LHC < RHC ? -1 : 1;
  ------------------
  |  Branch (46:14): [True: 5.32k, False: 658]
  ------------------
   47|  10.7k|  }
   48|  1.57k|  return 0;
   49|  7.55k|}
StringRef.cpp:_ZL13ascii_tolowerc:
   23|  6.89M|static char ascii_tolower(char x) {
   24|  6.89M|  if (x >= 'A' && x <= 'Z')
  ------------------
  |  Branch (24:7): [True: 5.29M, False: 1.59M]
  |  Branch (24:19): [True: 739k, False: 4.55M]
  ------------------
   25|   739k|    return x - 'A' + 'a';
   26|  6.15M|  return x;
   27|  6.89M|}
StringRef.cpp:_ZL17GetAutoSenseRadixRN7llvm_ks9StringRefE:
  353|  8.48k|static unsigned GetAutoSenseRadix(StringRef &Str) {
  354|  8.48k|  if (Str.startswith("0x") || Str.startswith("0X")) {
  ------------------
  |  Branch (354:7): [True: 7.81k, False: 669]
  |  Branch (354:7): [True: 8.48k, False: 0]
  |  Branch (354:31): [True: 669, False: 0]
  ------------------
  355|  8.48k|    Str = Str.substr(2);
  356|  8.48k|    return 16;
  357|  8.48k|  }
  358|       |  
  359|      0|  if (Str.startswith("0b")) {
  ------------------
  |  Branch (359:7): [True: 0, False: 0]
  ------------------
  360|      0|    Str = Str.substr(2);
  361|      0|    return 2;
  362|      0|  }
  363|       |
  364|      0|  if (Str.startswith("0o")) {
  ------------------
  |  Branch (364:7): [True: 0, False: 0]
  ------------------
  365|      0|    Str = Str.substr(2);
  366|      0|    return 8;
  367|      0|  }
  368|       |
  369|      0|  if (Str.startswith("0"))
  ------------------
  |  Branch (369:7): [True: 0, False: 0]
  ------------------
  370|      0|    return 8;
  371|       |  
  372|      0|  return 10;
  373|      0|}

_ZN7llvm_ks3ARM14getFPUFeaturesEjRNSt3__16vectorIPKcNS1_9allocatorIS4_EEEE:
  220|  9.89k|                               std::vector<const char *> &Features) {
  221|       |
  222|  9.89k|  if (FPUKind >= ARM::FK_LAST || FPUKind == ARM::FK_INVALID)
  ------------------
  |  Branch (222:7): [True: 0, False: 9.89k]
  |  Branch (222:34): [True: 7.05k, False: 2.84k]
  ------------------
  223|  7.05k|    return false;
  224|       |
  225|       |  // fp-only-sp and d16 subtarget features are independent of each other, so we
  226|       |  // must enable/disable both.
  227|  2.84k|  switch (FPUNames[FPUKind].Restriction) {
  ------------------
  |  Branch (227:11): [True: 2.84k, False: 0]
  ------------------
  228|     87|  case ARM::FR_SP_D16:
  ------------------
  |  Branch (228:3): [True: 87, False: 2.75k]
  ------------------
  229|     87|    Features.push_back("+fp-only-sp");
  230|     87|    Features.push_back("+d16");
  231|     87|    break;
  232|    291|  case ARM::FR_D16:
  ------------------
  |  Branch (232:3): [True: 291, False: 2.55k]
  ------------------
  233|    291|    Features.push_back("-fp-only-sp");
  234|    291|    Features.push_back("+d16");
  235|    291|    break;
  236|  2.46k|  case ARM::FR_None:
  ------------------
  |  Branch (236:3): [True: 2.46k, False: 378]
  ------------------
  237|  2.46k|    Features.push_back("-fp-only-sp");
  238|  2.46k|    Features.push_back("-d16");
  239|  2.46k|    break;
  240|  2.84k|  }
  241|       |
  242|       |  // FPU version subtarget features are inclusive of lower-numbered ones, so
  243|       |  // enable the one corresponding to this version and disable all that are
  244|       |  // higher. We also have to make sure to disable fp16 when vfp4 is disabled,
  245|       |  // as +vfp4 implies +fp16 but -vfp4 does not imply -fp16.
  246|  2.84k|  switch (FPUNames[FPUKind].FPUVersion) {
  ------------------
  |  Branch (246:11): [True: 2.84k, False: 0]
  ------------------
  247|    120|  case ARM::FV_VFPV5:
  ------------------
  |  Branch (247:3): [True: 120, False: 2.72k]
  ------------------
  248|    120|    Features.push_back("+fp-armv8");
  249|    120|    break;
  250|  1.32k|  case ARM::FV_VFPV4:
  ------------------
  |  Branch (250:3): [True: 1.32k, False: 1.52k]
  ------------------
  251|  1.32k|    Features.push_back("+vfp4");
  252|  1.32k|    Features.push_back("-fp-armv8");
  253|  1.32k|    break;
  254|      6|  case ARM::FV_VFPV3_FP16:
  ------------------
  |  Branch (254:3): [True: 6, False: 2.83k]
  ------------------
  255|      6|    Features.push_back("+vfp3");
  256|      6|    Features.push_back("+fp16");
  257|      6|    Features.push_back("-vfp4");
  258|      6|    Features.push_back("-fp-armv8");
  259|      6|    break;
  260|    174|  case ARM::FV_VFPV3:
  ------------------
  |  Branch (260:3): [True: 174, False: 2.66k]
  ------------------
  261|    174|    Features.push_back("+vfp3");
  262|    174|    Features.push_back("-fp16");
  263|    174|    Features.push_back("-vfp4");
  264|    174|    Features.push_back("-fp-armv8");
  265|    174|    break;
  266|    973|  case ARM::FV_VFPV2:
  ------------------
  |  Branch (266:3): [True: 973, False: 1.86k]
  ------------------
  267|    973|    Features.push_back("+vfp2");
  268|    973|    Features.push_back("-vfp3");
  269|    973|    Features.push_back("-fp16");
  270|    973|    Features.push_back("-vfp4");
  271|    973|    Features.push_back("-fp-armv8");
  272|    973|    break;
  273|    247|  case ARM::FV_NONE:
  ------------------
  |  Branch (273:3): [True: 247, False: 2.59k]
  ------------------
  274|    247|    Features.push_back("-vfp2");
  275|    247|    Features.push_back("-vfp3");
  276|    247|    Features.push_back("-fp16");
  277|    247|    Features.push_back("-vfp4");
  278|    247|    Features.push_back("-fp-armv8");
  279|    247|    break;
  280|  2.84k|  }
  281|       |
  282|       |  // crypto includes neon, so we handle this similarly to FPU version.
  283|  2.84k|  switch (FPUNames[FPUKind].NeonSupport) {
  ------------------
  |  Branch (283:11): [True: 2.84k, False: 0]
  ------------------
  284|      0|  case ARM::NS_Crypto:
  ------------------
  |  Branch (284:3): [True: 0, False: 2.84k]
  ------------------
  285|      0|    Features.push_back("+neon");
  286|      0|    Features.push_back("+crypto");
  287|      0|    break;
  288|  1.04k|  case ARM::NS_Neon:
  ------------------
  |  Branch (288:3): [True: 1.04k, False: 1.80k]
  ------------------
  289|  1.04k|    Features.push_back("+neon");
  290|  1.04k|    Features.push_back("-crypto");
  291|  1.04k|    break;
  292|  1.80k|  case ARM::NS_None:
  ------------------
  |  Branch (292:3): [True: 1.80k, False: 1.04k]
  ------------------
  293|  1.80k|    Features.push_back("-neon");
  294|  1.80k|    Features.push_back("-crypto");
  295|  1.80k|    break;
  296|  2.84k|  }
  297|       |
  298|  2.84k|  return true;
  299|  2.84k|}
_ZN7llvm_ks3ARM11getArchNameEj:
  301|  64.9k|StringRef llvm_ks::ARM::getArchName(unsigned ArchKind) {
  302|  64.9k|  if (ArchKind >= ARM::AK_LAST)
  ------------------
  |  Branch (302:7): [True: 0, False: 64.9k]
  ------------------
  303|      0|    return StringRef();
  304|  64.9k|  return ARCHNames[ArchKind].getName();
  305|  64.9k|}
_ZN7llvm_ks3ARM20getCanonicalArchNameENS_9StringRefE:
  423|  1.52M|StringRef llvm_ks::ARM::getCanonicalArchName(StringRef Arch) {
  424|  1.52M|  size_t offset = StringRef::npos;
  425|  1.52M|  StringRef A = Arch;
  426|  1.52M|  StringRef Error = "";
  427|       |
  428|       |  // Begins with "arm" / "thumb", move past it.
  429|  1.52M|  if (A.startswith("arm64"))
  ------------------
  |  Branch (429:7): [True: 28, False: 1.52M]
  ------------------
  430|     28|    offset = 5;
  431|  1.52M|  else if (A.startswith("arm"))
  ------------------
  |  Branch (431:12): [True: 444k, False: 1.07M]
  ------------------
  432|   444k|    offset = 3;
  433|  1.07M|  else if (A.startswith("thumb"))
  ------------------
  |  Branch (433:12): [True: 69, False: 1.07M]
  ------------------
  434|     69|    offset = 5;
  435|  1.07M|  else if (A.startswith("aarch64")) {
  ------------------
  |  Branch (435:12): [True: 442, False: 1.07M]
  ------------------
  436|    442|    offset = 7;
  437|       |    // AArch64 uses "_be", not "eb" suffix.
  438|    442|    if (A.find("eb") != StringRef::npos)
  ------------------
  |  Branch (438:9): [True: 323, False: 119]
  ------------------
  439|    323|      return Error;
  440|    119|    if (A.substr(offset, 3) == "_be")
  ------------------
  |  Branch (440:9): [True: 10, False: 109]
  ------------------
  441|     10|      offset += 3;
  442|    119|  }
  443|       |
  444|       |  // Ex. "armebv7", move past the "eb".
  445|  1.52M|  if (offset != StringRef::npos && A.substr(offset, 2) == "eb")
  ------------------
  |  Branch (445:7): [True: 445k, False: 1.07M]
  |  Branch (445:7): [True: 6, False: 1.52M]
  |  Branch (445:36): [True: 6, False: 445k]
  ------------------
  446|      6|    offset += 2;
  447|       |  // Or, if it ends with eb ("armv7eb"), chop it off.
  448|  1.52M|  else if (A.endswith("eb"))
  ------------------
  |  Branch (448:12): [True: 172, False: 1.52M]
  ------------------
  449|    172|    A = A.substr(0, A.size() - 2);
  450|       |  // Trim the head
  451|  1.52M|  if (offset != StringRef::npos)
  ------------------
  |  Branch (451:7): [True: 445k, False: 1.07M]
  ------------------
  452|   445k|    A = A.substr(offset);
  453|       |
  454|       |  // Empty string means offset reached the end, which means it's valid.
  455|  1.52M|  if (A.empty())
  ------------------
  |  Branch (455:7): [True: 743, False: 1.52M]
  ------------------
  456|    743|    return Arch;
  457|       |
  458|       |  // Only match non-marketing names
  459|  1.52M|  if (offset != StringRef::npos) {
  ------------------
  |  Branch (459:7): [True: 445k, False: 1.07M]
  ------------------
  460|       |    // Must start with 'vN'.
  461|   445k|    if (A[0] != 'v' || !std::isdigit(A[1]))
  ------------------
  |  Branch (461:9): [True: 273, False: 444k]
  |  Branch (461:24): [True: 4.27k, False: 440k]
  ------------------
  462|  4.55k|      return Error;
  463|       |    // Can't have an extra 'eb'.
  464|   440k|    if (A.find("eb") != StringRef::npos)
  ------------------
  |  Branch (464:9): [True: 51, False: 440k]
  ------------------
  465|     51|      return Error;
  466|   440k|  }
  467|       |
  468|       |  // Arch will either be a 'v' name (v7a) or a marketing name (xscale).
  469|  1.51M|  return A;
  470|  1.52M|}
_ZN7llvm_ks3ARM8parseFPUENS_9StringRefE:
  481|  9.89k|unsigned llvm_ks::ARM::parseFPU(StringRef FPU) {
  482|  9.89k|  StringRef Syn = getFPUSynonym(FPU);
  483|   187k|  for (const auto F : FPUNames) {
  ------------------
  |  Branch (483:21): [True: 187k, False: 6.95k]
  ------------------
  484|   187k|    if (Syn == F.getName())
  ------------------
  |  Branch (484:9): [True: 2.94k, False: 184k]
  ------------------
  485|  2.94k|      return F.ID;
  486|   187k|  }
  487|  6.95k|  return ARM::FK_INVALID;
  488|  9.89k|}
_ZN7llvm_ks3ARM9parseArchENS_9StringRefE:
  491|   704k|unsigned llvm_ks::ARM::parseArch(StringRef Arch) {
  492|   704k|  Arch = getCanonicalArchName(Arch);
  493|   704k|  StringRef Syn = getArchSynonym(Arch);
  494|  11.4M|  for (const auto A : ARCHNames) {
  ------------------
  |  Branch (494:21): [True: 11.4M, False: 25.5k]
  ------------------
  495|  11.4M|    if (A.getName().endswith(Syn))
  ------------------
  |  Branch (495:9): [True: 678k, False: 10.8M]
  ------------------
  496|   678k|      return A.ID;
  497|  11.4M|  }
  498|  25.5k|  return ARM::AK_INVALID;
  499|   704k|}
_ZN7llvm_ks3ARM12parseArchExtENS_9StringRefE:
  501|    563|unsigned llvm_ks::ARM::parseArchExt(StringRef ArchExt) {
  502|  5.89k|  for (const auto A : ARCHExtNames) {
  ------------------
  |  Branch (502:21): [True: 5.89k, False: 157]
  ------------------
  503|  5.89k|    if (ArchExt == A.getName())
  ------------------
  |  Branch (503:9): [True: 406, False: 5.48k]
  ------------------
  504|    406|      return A.ID;
  505|  5.89k|  }
  506|    157|  return ARM::AEK_INVALID;
  507|    563|}
_ZN7llvm_ks3ARM12parseArchISAENS_9StringRefE:
  518|   209k|unsigned llvm_ks::ARM::parseArchISA(StringRef Arch) {
  519|   209k|  return StringSwitch<unsigned>(Arch)
  520|   209k|      .StartsWith("aarch64", ARM::IK_AARCH64)
  521|   209k|      .StartsWith("arm64", ARM::IK_AARCH64)
  522|   209k|      .StartsWith("thumb", ARM::IK_THUMB)
  523|   209k|      .StartsWith("arm", ARM::IK_ARM)
  524|   209k|      .Default(ARM::EK_INVALID);
  525|   209k|}
_ZN7llvm_ks3ARM15parseArchEndianENS_9StringRefE:
  528|   209k|unsigned llvm_ks::ARM::parseArchEndian(StringRef Arch) {
  529|   209k|  if (Arch.startswith("armeb") || Arch.startswith("thumbeb") ||
  ------------------
  |  Branch (529:7): [True: 0, False: 209k]
  |  Branch (529:7): [True: 0, False: 209k]
  |  Branch (529:35): [True: 0, False: 209k]
  ------------------
  530|   209k|      Arch.startswith("aarch64_be"))
  ------------------
  |  Branch (530:7): [True: 0, False: 209k]
  ------------------
  531|      0|    return ARM::EK_BIG;
  532|       |
  533|   209k|  if (Arch.startswith("arm") || Arch.startswith("thumb")) {
  ------------------
  |  Branch (533:7): [True: 209k, False: 0]
  |  Branch (533:7): [True: 209k, False: 0]
  |  Branch (533:33): [True: 0, False: 0]
  ------------------
  534|   209k|    if (Arch.endswith("eb"))
  ------------------
  |  Branch (534:9): [True: 0, False: 209k]
  ------------------
  535|      0|      return ARM::EK_BIG;
  536|   209k|    else
  537|   209k|      return ARM::EK_LITTLE;
  538|   209k|  }
  539|       |
  540|      0|  if (Arch.startswith("aarch64"))
  ------------------
  |  Branch (540:7): [True: 0, False: 0]
  ------------------
  541|      0|    return ARM::EK_LITTLE;
  542|       |
  543|      0|  return ARM::EK_INVALID;
  544|      0|}
_ZN7llvm_ks3ARM16parseArchProfileENS_9StringRefE:
  547|   209k|unsigned llvm_ks::ARM::parseArchProfile(StringRef Arch) {
  548|   209k|  Arch = getCanonicalArchName(Arch);
  549|   209k|  switch (parseArch(Arch)) {
  ------------------
  |  Branch (549:11): [True: 209k, False: 0]
  ------------------
  550|      0|  case ARM::AK_ARMV6M:
  ------------------
  |  Branch (550:3): [True: 0, False: 209k]
  ------------------
  551|      0|  case ARM::AK_ARMV7M:
  ------------------
  |  Branch (551:3): [True: 0, False: 209k]
  ------------------
  552|      0|  case ARM::AK_ARMV7EM:
  ------------------
  |  Branch (552:3): [True: 0, False: 209k]
  ------------------
  553|      0|  case ARM::AK_ARMV8MMainline:
  ------------------
  |  Branch (553:3): [True: 0, False: 209k]
  ------------------
  554|      0|  case ARM::AK_ARMV8MBaseline:
  ------------------
  |  Branch (554:3): [True: 0, False: 209k]
  ------------------
  555|      0|    return ARM::PK_M;
  556|      0|  case ARM::AK_ARMV7R:
  ------------------
  |  Branch (556:3): [True: 0, False: 209k]
  ------------------
  557|      0|    return ARM::PK_R;
  558|   209k|  case ARM::AK_ARMV7A:
  ------------------
  |  Branch (558:3): [True: 209k, False: 0]
  ------------------
  559|   209k|  case ARM::AK_ARMV7K:
  ------------------
  |  Branch (559:3): [True: 0, False: 209k]
  ------------------
  560|   209k|  case ARM::AK_ARMV8A:
  ------------------
  |  Branch (560:3): [True: 0, False: 209k]
  ------------------
  561|   209k|  case ARM::AK_ARMV8_1A:
  ------------------
  |  Branch (561:3): [True: 0, False: 209k]
  ------------------
  562|   209k|  case ARM::AK_ARMV8_2A:
  ------------------
  |  Branch (562:3): [True: 0, False: 209k]
  ------------------
  563|   209k|    return ARM::PK_A;
  564|   209k|  }
  565|      0|  return ARM::PK_INVALID;
  566|   209k|}
_ZN7llvm_ks3ARM16parseArchVersionENS_9StringRefE:
  569|   209k|unsigned llvm_ks::ARM::parseArchVersion(StringRef Arch) {
  570|   209k|  Arch = getCanonicalArchName(Arch);
  571|   209k|  switch (parseArch(Arch)) {
  ------------------
  |  Branch (571:11): [True: 209k, False: 0]
  ------------------
  572|      0|  case ARM::AK_ARMV2:
  ------------------
  |  Branch (572:3): [True: 0, False: 209k]
  ------------------
  573|      0|  case ARM::AK_ARMV2A:
  ------------------
  |  Branch (573:3): [True: 0, False: 209k]
  ------------------
  574|      0|    return 2;
  575|      0|  case ARM::AK_ARMV3:
  ------------------
  |  Branch (575:3): [True: 0, False: 209k]
  ------------------
  576|      0|  case ARM::AK_ARMV3M:
  ------------------
  |  Branch (576:3): [True: 0, False: 209k]
  ------------------
  577|      0|    return 3;
  578|      0|  case ARM::AK_ARMV4:
  ------------------
  |  Branch (578:3): [True: 0, False: 209k]
  ------------------
  579|      0|  case ARM::AK_ARMV4T:
  ------------------
  |  Branch (579:3): [True: 0, False: 209k]
  ------------------
  580|      0|    return 4;
  581|      0|  case ARM::AK_ARMV5T:
  ------------------
  |  Branch (581:3): [True: 0, False: 209k]
  ------------------
  582|      0|  case ARM::AK_ARMV5TE:
  ------------------
  |  Branch (582:3): [True: 0, False: 209k]
  ------------------
  583|      0|  case ARM::AK_IWMMXT:
  ------------------
  |  Branch (583:3): [True: 0, False: 209k]
  ------------------
  584|      0|  case ARM::AK_IWMMXT2:
  ------------------
  |  Branch (584:3): [True: 0, False: 209k]
  ------------------
  585|      0|  case ARM::AK_XSCALE:
  ------------------
  |  Branch (585:3): [True: 0, False: 209k]
  ------------------
  586|      0|  case ARM::AK_ARMV5TEJ:
  ------------------
  |  Branch (586:3): [True: 0, False: 209k]
  ------------------
  587|      0|    return 5;
  588|      0|  case ARM::AK_ARMV6:
  ------------------
  |  Branch (588:3): [True: 0, False: 209k]
  ------------------
  589|      0|  case ARM::AK_ARMV6K:
  ------------------
  |  Branch (589:3): [True: 0, False: 209k]
  ------------------
  590|      0|  case ARM::AK_ARMV6T2:
  ------------------
  |  Branch (590:3): [True: 0, False: 209k]
  ------------------
  591|      0|  case ARM::AK_ARMV6KZ:
  ------------------
  |  Branch (591:3): [True: 0, False: 209k]
  ------------------
  592|      0|  case ARM::AK_ARMV6M:
  ------------------
  |  Branch (592:3): [True: 0, False: 209k]
  ------------------
  593|      0|    return 6;
  594|   209k|  case ARM::AK_ARMV7A:
  ------------------
  |  Branch (594:3): [True: 209k, False: 0]
  ------------------
  595|   209k|  case ARM::AK_ARMV7R:
  ------------------
  |  Branch (595:3): [True: 0, False: 209k]
  ------------------
  596|   209k|  case ARM::AK_ARMV7M:
  ------------------
  |  Branch (596:3): [True: 0, False: 209k]
  ------------------
  597|   209k|  case ARM::AK_ARMV7S:
  ------------------
  |  Branch (597:3): [True: 0, False: 209k]
  ------------------
  598|   209k|  case ARM::AK_ARMV7EM:
  ------------------
  |  Branch (598:3): [True: 0, False: 209k]
  ------------------
  599|   209k|  case ARM::AK_ARMV7K:
  ------------------
  |  Branch (599:3): [True: 0, False: 209k]
  ------------------
  600|   209k|    return 7;
  601|      0|  case ARM::AK_ARMV8A:
  ------------------
  |  Branch (601:3): [True: 0, False: 209k]
  ------------------
  602|      0|  case ARM::AK_ARMV8_1A:
  ------------------
  |  Branch (602:3): [True: 0, False: 209k]
  ------------------
  603|      0|  case ARM::AK_ARMV8_2A:
  ------------------
  |  Branch (603:3): [True: 0, False: 209k]
  ------------------
  604|      0|  case ARM::AK_ARMV8MBaseline:
  ------------------
  |  Branch (604:3): [True: 0, False: 209k]
  ------------------
  605|      0|  case ARM::AK_ARMV8MMainline:
  ------------------
  |  Branch (605:3): [True: 0, False: 209k]
  ------------------
  606|      0|    return 8;
  607|   209k|  }
  608|      0|  return 0;
  609|   209k|}
TargetParser.cpp:_ZNK12_GLOBAL__N_13$_07getNameEv:
   39|   187k|  StringRef getName() const { return StringRef(NameCStr, NameLength); }
TargetParser.cpp:_ZNK12_GLOBAL__N_13$_17getNameEv:
   66|  11.5M|  StringRef getName() const { return StringRef(NameCStr, NameLength); }
TargetParser.cpp:_ZNK12_GLOBAL__N_13$_27getNameEv:
   89|  5.89k|  StringRef getName() const { return StringRef(NameCStr, NameLength); }
TargetParser.cpp:_ZL13getFPUSynonymN7llvm_ks9StringRefE:
  382|  9.89k|static StringRef getFPUSynonym(StringRef FPU) {
  383|  9.89k|  return StringSwitch<StringRef>(FPU)
  384|  9.89k|      .Cases("fpa", "fpe2", "fpe3", "maverick", "invalid") // Unsupported
  385|  9.89k|      .Case("vfp2", "vfpv2")
  386|  9.89k|      .Case("vfp3", "vfpv3")
  387|  9.89k|      .Case("vfp4", "vfpv4")
  388|  9.89k|      .Case("vfp3-d16", "vfpv3-d16")
  389|  9.89k|      .Case("vfp4-d16", "vfpv4-d16")
  390|  9.89k|      .Cases("fp4-sp-d16", "vfpv4-sp-d16", "fpv4-sp-d16")
  391|  9.89k|      .Cases("fp4-dp-d16", "fpv4-dp-d16", "vfpv4-d16")
  392|  9.89k|      .Case("fp5-sp-d16", "fpv5-sp-d16")
  393|  9.89k|      .Cases("fp5-dp-d16", "fpv5-dp-d16", "fpv5-d16")
  394|       |      // FIXME: Clang uses it, but it's bogus, since neon defaults to vfpv3.
  395|  9.89k|      .Case("neon-vfpv3", "neon")
  396|  9.89k|      .Default(FPU);
  397|  9.89k|}
TargetParser.cpp:_ZL14getArchSynonymN7llvm_ks9StringRefE:
  399|   704k|static StringRef getArchSynonym(StringRef Arch) {
  400|   704k|  return StringSwitch<StringRef>(Arch)
  401|   704k|      .Case("v5", "v5t")
  402|   704k|      .Case("v5e", "v5te")
  403|   704k|      .Case("v6j", "v6")
  404|   704k|      .Case("v6hl", "v6k")
  405|   704k|      .Cases("v6m", "v6sm", "v6s-m", "v6-m")
  406|   704k|      .Cases("v6z", "v6zk", "v6kz")
  407|   704k|      .Cases("v7", "v7a", "v7hl", "v7l", "v7-a")
  408|   704k|      .Case("v7r", "v7-r")
  409|   704k|      .Case("v7m", "v7-m")
  410|   704k|      .Case("v7em", "v7e-m")
  411|   704k|      .Cases("v8", "v8a", "aarch64", "arm64", "v8-a")
  412|   704k|      .Case("v8.1a", "v8.1-a")
  413|   704k|      .Case("v8.2a", "v8.2-a")
  414|   704k|      .Case("v8m.base", "v8-m.base")
  415|   704k|      .Case("v8m.main", "v8-m.main")
  416|   704k|      .Default(Arch);
  417|   704k|}

_ZN7llvm_ks14TargetRegistry7targetsEv:
   21|   146k|iterator_range<TargetRegistry::iterator> TargetRegistry::targets() {
   22|   146k|  return make_range(iterator(FirstTarget), iterator());
   23|   146k|}
_ZN7llvm_ks14TargetRegistry12lookupTargetERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERNS_6TripleERS7_:
   27|  20.9k|                                           std::string &Error) {
   28|       |  // Allocate target machine.  First, check whether the user has explicitly
   29|       |  // specified an architecture to compile for. If so we have to look it up by
   30|       |  // name, because it might be a backend that has no mapping to a target triple.
   31|  20.9k|  const Target *TheTarget = nullptr;
   32|  20.9k|  if (!ArchName.empty()) {
  ------------------
  |  Branch (32:7): [True: 0, False: 20.9k]
  ------------------
   33|      0|    auto I =
   34|      0|        std::find_if(targets().begin(), targets().end(),
   35|      0|                     [&](const Target &T) { return ArchName == T.getName(); });
   36|       |
   37|      0|    if (I == targets().end()) {
  ------------------
  |  Branch (37:9): [True: 0, False: 0]
  ------------------
   38|      0|      Error = "error: invalid target '" + ArchName + "'.\n";
   39|      0|      return nullptr;
   40|      0|    }
   41|       |
   42|      0|    TheTarget = &*I;
   43|       |
   44|       |    // Adjust the triple to match (if known), otherwise stick with the
   45|       |    // given triple.
   46|      0|    Triple::ArchType Type = Triple::getArchTypeForLLVMName(ArchName);
   47|      0|    if (Type != Triple::UnknownArch)
  ------------------
  |  Branch (47:9): [True: 0, False: 0]
  ------------------
   48|      0|      TheTriple.setArch(Type);
   49|  20.9k|  } else {
   50|       |    // Get the target specific parser.
   51|  20.9k|    std::string TempError;
   52|  20.9k|    TheTarget = TargetRegistry::lookupTarget(TheTriple.getTriple(), TempError);
   53|  20.9k|    if (!TheTarget) {
  ------------------
  |  Branch (53:9): [True: 0, False: 20.9k]
  ------------------
   54|      0|      Error = ": error: unable to get target for '"
   55|      0|            + TheTriple.getTriple()
   56|      0|            + "', see --version and --triple.\n";
   57|      0|      return nullptr;
   58|      0|    }
   59|  20.9k|  }
   60|       |
   61|  20.9k|  return TheTarget;
   62|  20.9k|}
_ZN7llvm_ks14TargetRegistry12lookupTargetERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_:
   65|  20.9k|                                           std::string &Error) {
   66|       |  // Provide special warning when no targets are initialized.
   67|  20.9k|  if (targets().begin() == targets().end()) {
  ------------------
  |  Branch (67:7): [True: 0, False: 20.9k]
  ------------------
   68|      0|    Error = "Unable to find target for this triple (no targets are registered)";
   69|      0|    return nullptr;
   70|      0|  }
   71|  20.9k|  Triple::ArchType Arch = Triple(TT).getArch();
   72|  20.9k|  auto ArchMatch = [&](const Target &T) { return T.ArchMatchFn(Arch); };
   73|  20.9k|  auto I = std::find_if(targets().begin(), targets().end(), ArchMatch);
   74|       |
   75|  20.9k|  if (I == targets().end()) {
  ------------------
  |  Branch (75:7): [True: 0, False: 20.9k]
  ------------------
   76|      0|    Error = "No available targets are compatible with this triple.";
   77|      0|    return nullptr;
   78|      0|  }
   79|       |
   80|  20.9k|  auto J = std::find_if(std::next(I), targets().end(), ArchMatch);
   81|  20.9k|  if (J != targets().end()) {
  ------------------
  |  Branch (81:7): [True: 0, False: 20.9k]
  ------------------
   82|      0|    Error = std::string("Cannot choose between targets \"") + I->Name +
   83|      0|            "\" and \"" + J->Name + "\"";
   84|      0|    return nullptr;
   85|      0|  }
   86|       |
   87|  20.9k|  return &*I;
   88|  20.9k|}
_ZN7llvm_ks14TargetRegistry14RegisterTargetERNS_6TargetEPKcS4_PFbNS_6Triple8ArchTypeEE:
   93|     23|                                    Target::ArchMatchFnTy ArchMatchFn) {
   94|     23|  assert(Name && ShortDesc && ArchMatchFn &&
  ------------------
  |  Branch (94:3): [True: 23, False: 0]
  |  Branch (94:3): [True: 23, False: 0]
  |  Branch (94:3): [True: 23, False: 0]
  |  Branch (94:3): [True: 23, Folded]
  |  Branch (94:3): [True: 23, False: 0]
  ------------------
   95|     23|         "Missing required target information!");
   96|       |
   97|       |  // Check if this target has already been initialized, we allow this as a
   98|       |  // convenience to some clients.
   99|     23|  if (T.Name)
  ------------------
  |  Branch (99:7): [True: 0, False: 23]
  ------------------
  100|      0|    return;
  101|       |         
  102|       |  // Add to the list of targets.
  103|     23|  T.Next = FirstTarget;
  104|     23|  FirstTarget = &T;
  105|       |
  106|     23|  T.Name = Name;
  107|     23|  T.ShortDesc = ShortDesc;
  108|     23|  T.ArchMatchFn = ArchMatchFn;
  109|     23|}
TargetRegistry.cpp:_ZZN7llvm_ks14TargetRegistry12lookupTargetERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERS7_ENK3$_0clERKNS_6TargetE:
   72|   482k|  auto ArchMatch = [&](const Target &T) { return T.ArchMatchFn(Arch); };

_ZN7llvm_ks6TripleC2ERKNS_5TwineE:
  618|   188k|    : Data(Str.str()), Arch(UnknownArch), SubArch(NoSubArch),
  619|   188k|      Vendor(UnknownVendor), OS(UnknownOS), Environment(UnknownEnvironment),
  620|   188k|      ObjectFormat(UnknownObjectFormat) {
  621|       |  // Do minimal parsing by hand here.
  622|   188k|  SmallVector<StringRef, 4> Components;
  623|   188k|  StringRef(Data).split(Components, '-', /*MaxSplit*/ 3);
  624|   188k|  if (Components.size() > 0) {
  ------------------
  |  Branch (624:7): [True: 188k, False: 0]
  ------------------
  625|   188k|    Arch = parseArch(Components[0]);
  626|   188k|    SubArch = parseSubArch(Components[0]);
  627|   188k|    if (Components.size() > 1) {
  ------------------
  |  Branch (627:9): [True: 0, False: 188k]
  ------------------
  628|      0|      Vendor = parseVendor(Components[1]);
  629|      0|      if (Components.size() > 2) {
  ------------------
  |  Branch (629:11): [True: 0, False: 0]
  ------------------
  630|      0|        OS = parseOS(Components[2]);
  631|      0|        if (Components.size() > 3) {
  ------------------
  |  Branch (631:13): [True: 0, False: 0]
  ------------------
  632|      0|          Environment = parseEnvironment(Components[3]);
  633|      0|          ObjectFormat = parseFormat(Components[3]);
  634|      0|        }
  635|      0|      }
  636|      0|    }
  637|   188k|  }
  638|   188k|  if (ObjectFormat == UnknownObjectFormat)
  ------------------
  |  Branch (638:7): [True: 188k, False: 0]
  ------------------
  639|   188k|    ObjectFormat = getDefaultFormat(*this);
  640|   188k|}
_ZN7llvm_ks6Triple9normalizeENS_9StringRefE:
  677|  20.9k|std::string Triple::normalize(StringRef Str) {
  678|  20.9k|  bool IsMinGW32 = false;
  679|  20.9k|  bool IsCygwin = false;
  680|       |
  681|       |  // Parse into components.
  682|  20.9k|  SmallVector<StringRef, 4> Components;
  683|  20.9k|  Str.split(Components, '-');
  684|       |
  685|       |  // If the first component corresponds to a known architecture, preferentially
  686|       |  // use it for the architecture.  If the second component corresponds to a
  687|       |  // known vendor, preferentially use it for the vendor, etc.  This avoids silly
  688|       |  // component movement when a component parses as (eg) both a valid arch and a
  689|       |  // valid os.
  690|  20.9k|  ArchType Arch = UnknownArch;
  691|  20.9k|  if (Components.size() > 0)
  ------------------
  |  Branch (691:7): [True: 20.9k, False: 0]
  ------------------
  692|  20.9k|    Arch = parseArch(Components[0]);
  693|  20.9k|  VendorType Vendor = UnknownVendor;
  694|  20.9k|  if (Components.size() > 1)
  ------------------
  |  Branch (694:7): [True: 0, False: 20.9k]
  ------------------
  695|      0|    Vendor = parseVendor(Components[1]);
  696|  20.9k|  OSType OS = UnknownOS;
  697|  20.9k|  if (Components.size() > 2) {
  ------------------
  |  Branch (697:7): [True: 0, False: 20.9k]
  ------------------
  698|      0|    OS = parseOS(Components[2]);
  699|      0|    IsCygwin = Components[2].startswith("cygwin");
  700|      0|    IsMinGW32 = Components[2].startswith("mingw");
  701|      0|  }
  702|  20.9k|  EnvironmentType Environment = UnknownEnvironment;
  703|  20.9k|  if (Components.size() > 3)
  ------------------
  |  Branch (703:7): [True: 0, False: 20.9k]
  ------------------
  704|      0|    Environment = parseEnvironment(Components[3]);
  705|  20.9k|  ObjectFormatType ObjectFormat = UnknownObjectFormat;
  706|  20.9k|  if (Components.size() > 4)
  ------------------
  |  Branch (706:7): [True: 0, False: 20.9k]
  ------------------
  707|      0|    ObjectFormat = parseFormat(Components[4]);
  708|       |
  709|       |  // Note which components are already in their final position.  These will not
  710|       |  // be moved.
  711|  20.9k|  bool Found[4];
  712|  20.9k|  Found[0] = Arch != UnknownArch;
  713|  20.9k|  Found[1] = Vendor != UnknownVendor;
  714|  20.9k|  Found[2] = OS != UnknownOS;
  715|  20.9k|  Found[3] = Environment != UnknownEnvironment;
  716|       |
  717|       |  // If they are not there already, permute the components into their canonical
  718|       |  // positions by seeing if they parse as a valid architecture, and if so moving
  719|       |  // the component to the architecture position etc.
  720|   104k|  for (unsigned Pos = 0; Pos != array_lengthof(Found); ++Pos) {
  ------------------
  |  Branch (720:26): [True: 83.8k, False: 20.9k]
  ------------------
  721|  83.8k|    if (Found[Pos])
  ------------------
  |  Branch (721:9): [True: 20.9k, False: 62.9k]
  ------------------
  722|  20.9k|      continue; // Already in the canonical position.
  723|       |
  724|   125k|    for (unsigned Idx = 0; Idx != Components.size(); ++Idx) {
  ------------------
  |  Branch (724:28): [True: 62.9k, False: 62.9k]
  ------------------
  725|       |      // Do not reparse any components that already matched.
  726|  62.9k|      if (Idx < array_lengthof(Found) && Found[Idx])
  ------------------
  |  Branch (726:11): [True: 62.9k, False: 0]
  |  Branch (726:42): [True: 62.9k, False: 0]
  ------------------
  727|  62.9k|        continue;
  728|       |
  729|       |      // Does this component parse as valid for the target position?
  730|      0|      bool Valid = false;
  731|      0|      StringRef Comp = Components[Idx];
  732|      0|      switch (Pos) {
  733|      0|      default: llvm_unreachable("unexpected component type!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (733:7): [True: 0, False: 0]
  ------------------
  734|      0|      case 0:
  ------------------
  |  Branch (734:7): [True: 0, False: 0]
  ------------------
  735|      0|        Arch = parseArch(Comp);
  736|      0|        Valid = Arch != UnknownArch;
  737|      0|        break;
  738|      0|      case 1:
  ------------------
  |  Branch (738:7): [True: 0, False: 0]
  ------------------
  739|      0|        Vendor = parseVendor(Comp);
  740|      0|        Valid = Vendor != UnknownVendor;
  741|      0|        break;
  742|      0|      case 2:
  ------------------
  |  Branch (742:7): [True: 0, False: 0]
  ------------------
  743|      0|        OS = parseOS(Comp);
  744|      0|        IsCygwin = Comp.startswith("cygwin");
  745|      0|        IsMinGW32 = Comp.startswith("mingw");
  746|      0|        Valid = OS != UnknownOS || IsCygwin || IsMinGW32;
  ------------------
  |  Branch (746:17): [True: 0, False: 0]
  |  Branch (746:36): [True: 0, False: 0]
  |  Branch (746:48): [True: 0, False: 0]
  ------------------
  747|      0|        break;
  748|      0|      case 3:
  ------------------
  |  Branch (748:7): [True: 0, False: 0]
  ------------------
  749|      0|        Environment = parseEnvironment(Comp);
  750|      0|        Valid = Environment != UnknownEnvironment;
  751|      0|        if (!Valid) {
  ------------------
  |  Branch (751:13): [True: 0, False: 0]
  ------------------
  752|      0|          ObjectFormat = parseFormat(Comp);
  753|      0|          Valid = ObjectFormat != UnknownObjectFormat;
  754|      0|        }
  755|      0|        break;
  756|      0|      }
  757|      0|      if (!Valid)
  ------------------
  |  Branch (757:11): [True: 0, False: 0]
  ------------------
  758|      0|        continue; // Nope, try the next component.
  759|       |
  760|       |      // Move the component to the target position, pushing any non-fixed
  761|       |      // components that are in the way to the right.  This tends to give
  762|       |      // good results in the common cases of a forgotten vendor component
  763|       |      // or a wrongly positioned environment.
  764|      0|      if (Pos < Idx) {
  ------------------
  |  Branch (764:11): [True: 0, False: 0]
  ------------------
  765|       |        // Insert left, pushing the existing components to the right.  For
  766|       |        // example, a-b-i386 -> i386-a-b when moving i386 to the front.
  767|      0|        StringRef CurrentComponent(""); // The empty component.
  768|       |        // Replace the component we are moving with an empty component.
  769|      0|        std::swap(CurrentComponent, Components[Idx]);
  770|       |        // Insert the component being moved at Pos, displacing any existing
  771|       |        // components to the right.
  772|      0|        for (unsigned i = Pos; !CurrentComponent.empty(); ++i) {
  ------------------
  |  Branch (772:32): [True: 0, False: 0]
  ------------------
  773|       |          // Skip over any fixed components.
  774|      0|          while (i < array_lengthof(Found) && Found[i])
  ------------------
  |  Branch (774:18): [True: 0, False: 0]
  |  Branch (774:47): [True: 0, False: 0]
  ------------------
  775|      0|            ++i;
  776|       |          // Place the component at the new position, getting the component
  777|       |          // that was at this position - it will be moved right.
  778|      0|          std::swap(CurrentComponent, Components[i]);
  779|      0|        }
  780|      0|      } else if (Pos > Idx) {
  ------------------
  |  Branch (780:18): [True: 0, False: 0]
  ------------------
  781|       |        // Push right by inserting empty components until the component at Idx
  782|       |        // reaches the target position Pos.  For example, pc-a -> -pc-a when
  783|       |        // moving pc to the second position.
  784|      0|        do {
  785|       |          // Insert one empty component at Idx.
  786|      0|          StringRef CurrentComponent(""); // The empty component.
  787|      0|          for (unsigned i = Idx; i < Components.size();) {
  ------------------
  |  Branch (787:34): [True: 0, False: 0]
  ------------------
  788|       |            // Place the component at the new position, getting the component
  789|       |            // that was at this position - it will be moved right.
  790|      0|            std::swap(CurrentComponent, Components[i]);
  791|       |            // If it was placed on top of an empty component then we are done.
  792|      0|            if (CurrentComponent.empty())
  ------------------
  |  Branch (792:17): [True: 0, False: 0]
  ------------------
  793|      0|              break;
  794|       |            // Advance to the next component, skipping any fixed components.
  795|      0|            while (++i < array_lengthof(Found) && Found[i])
  ------------------
  |  Branch (795:20): [True: 0, False: 0]
  |  Branch (795:51): [True: 0, False: 0]
  ------------------
  796|      0|              ;
  797|      0|          }
  798|       |          // The last component was pushed off the end - append it.
  799|      0|          if (!CurrentComponent.empty())
  ------------------
  |  Branch (799:15): [True: 0, False: 0]
  ------------------
  800|      0|            Components.push_back(CurrentComponent);
  801|       |
  802|       |          // Advance Idx to the component's new position.
  803|      0|          while (++Idx < array_lengthof(Found) && Found[Idx])
  ------------------
  |  Branch (803:18): [True: 0, False: 0]
  |  Branch (803:51): [True: 0, False: 0]
  ------------------
  804|      0|            ;
  805|      0|        } while (Idx < Pos); // Add more until the final position is reached.
  ------------------
  |  Branch (805:18): [True: 0, False: 0]
  ------------------
  806|      0|      }
  807|      0|      assert(Pos < Components.size() && Components[Pos] == Comp &&
  ------------------
  |  Branch (807:7): [True: 0, False: 0]
  |  Branch (807:7): [True: 0, False: 0]
  |  Branch (807:7): [True: 0, Folded]
  |  Branch (807:7): [True: 0, False: 0]
  ------------------
  808|      0|             "Component moved wrong!");
  809|      0|      Found[Pos] = true;
  810|      0|      break;
  811|      0|    }
  812|  62.9k|  }
  813|       |
  814|       |  // Special case logic goes here.  At this point Arch, Vendor and OS have the
  815|       |  // correct values for the computed components.
  816|  20.9k|  std::string NormalizedEnvironment;
  817|  20.9k|  if (Environment == Triple::Android && Components[3].startswith("androideabi")) {
  ------------------
  |  Branch (817:7): [True: 0, False: 20.9k]
  |  Branch (817:7): [True: 0, False: 20.9k]
  |  Branch (817:41): [True: 0, False: 0]
  ------------------
  818|      0|    StringRef AndroidVersion = Components[3].drop_front(strlen("androideabi"));
  819|      0|    if (AndroidVersion.empty()) {
  ------------------
  |  Branch (819:9): [True: 0, False: 0]
  ------------------
  820|      0|      Components[3] = "android";
  821|      0|    } else {
  822|      0|      NormalizedEnvironment = Twine("android", AndroidVersion).str();
  823|      0|      Components[3] = NormalizedEnvironment;
  824|      0|    }
  825|      0|  }
  826|       |
  827|  20.9k|  if (OS == Triple::Win32) {
  ------------------
  |  Branch (827:7): [True: 0, False: 20.9k]
  ------------------
  828|      0|    Components.resize(4);
  829|      0|    Components[2] = "windows";
  830|      0|    if (Environment == UnknownEnvironment) {
  ------------------
  |  Branch (830:9): [True: 0, False: 0]
  ------------------
  831|      0|      if (ObjectFormat == UnknownObjectFormat || ObjectFormat == Triple::COFF)
  ------------------
  |  Branch (831:11): [True: 0, False: 0]
  |  Branch (831:50): [True: 0, False: 0]
  ------------------
  832|      0|        Components[3] = "msvc";
  833|      0|      else
  834|      0|        Components[3] = getObjectFormatTypeName(ObjectFormat);
  835|      0|    }
  836|  20.9k|  } else if (IsMinGW32) {
  ------------------
  |  Branch (836:14): [True: 0, False: 20.9k]
  ------------------
  837|      0|    Components.resize(4);
  838|      0|    Components[2] = "windows";
  839|      0|    Components[3] = "gnu";
  840|  20.9k|  } else if (IsCygwin) {
  ------------------
  |  Branch (840:14): [True: 0, False: 20.9k]
  ------------------
  841|      0|    Components.resize(4);
  842|      0|    Components[2] = "windows";
  843|      0|    Components[3] = "cygnus";
  844|      0|  }
  845|  20.9k|  if (IsMinGW32 || IsCygwin ||
  ------------------
  |  Branch (845:7): [True: 0, False: 20.9k]
  |  Branch (845:20): [True: 0, False: 20.9k]
  ------------------
  846|  20.9k|      (OS == Triple::Win32 && Environment != UnknownEnvironment)) {
  ------------------
  |  Branch (846:8): [True: 0, False: 20.9k]
  |  Branch (846:31): [True: 0, False: 0]
  ------------------
  847|      0|    if (ObjectFormat != UnknownObjectFormat && ObjectFormat != Triple::COFF) {
  ------------------
  |  Branch (847:9): [True: 0, False: 0]
  |  Branch (847:48): [True: 0, False: 0]
  ------------------
  848|      0|      Components.resize(5);
  849|      0|      Components[4] = getObjectFormatTypeName(ObjectFormat);
  850|      0|    }
  851|      0|  }
  852|       |
  853|       |  // Stick the corrected components back together to form the normalized string.
  854|  20.9k|  std::string Normalized;
  855|  41.9k|  for (unsigned i = 0, e = Components.size(); i != e; ++i) {
  ------------------
  |  Branch (855:47): [True: 20.9k, False: 20.9k]
  ------------------
  856|  20.9k|    if (i) Normalized += '-';
  ------------------
  |  Branch (856:9): [True: 0, False: 20.9k]
  ------------------
  857|  20.9k|    Normalized += Components[i];
  858|  20.9k|  }
  859|  20.9k|  return Normalized;
  860|  20.9k|}
_ZNK7llvm_ks6Triple11getArchNameEv:
  862|  62.9k|StringRef Triple::getArchName() const {
  863|  62.9k|  return StringRef(Data).split('-').first;           // Isolate first component
  864|  62.9k|}
Triple.cpp:_ZL9parseArchN7llvm_ks9StringRefE:
  341|   209k|static Triple::ArchType parseArch(StringRef ArchName) {
  342|   209k|  auto AT = StringSwitch<Triple::ArchType>(ArchName)
  343|   209k|    .Cases("i386", "i486", "i586", "i686", Triple::x86)
  344|       |    // FIXME: Do we need to support these?
  345|   209k|    .Cases("i786", "i886", "i986", Triple::x86)
  346|   209k|    .Cases("amd64", "x86_64", "x86_64h", Triple::x86_64)
  347|   209k|    .Cases("powerpc", "ppc32", Triple::ppc)
  348|   209k|    .Cases("powerpc64", "ppu", "ppc64", Triple::ppc64)
  349|   209k|    .Cases("powerpc64le", "ppc64le", Triple::ppc64le)
  350|   209k|    .Case("xscale", Triple::arm)
  351|   209k|    .Case("xscaleeb", Triple::armeb)
  352|   209k|    .Case("aarch64", Triple::aarch64)
  353|   209k|    .Case("aarch64_be", Triple::aarch64_be)
  354|   209k|    .Case("arm64", Triple::aarch64)
  355|   209k|    .Case("arm", Triple::arm)
  356|   209k|    .Case("armeb", Triple::armeb)
  357|   209k|    .Case("thumb", Triple::thumb)
  358|   209k|    .Case("thumbeb", Triple::thumbeb)
  359|   209k|    .Case("avr", Triple::avr)
  360|   209k|    .Case("msp430", Triple::msp430)
  361|   209k|    .Cases("mips", "mipseb", "mipsallegrex", Triple::mips)
  362|   209k|    .Cases("mipsel", "mipsallegrexel", Triple::mipsel)
  363|   209k|    .Cases("mips64", "mips64eb", Triple::mips64)
  364|   209k|    .Case("mips64el", Triple::mips64el)
  365|   209k|    .Case("r600", Triple::r600)
  366|   209k|    .Case("amdgcn", Triple::amdgcn)
  367|   209k|    .Case("riscv32", Triple::riscv32)
  368|   209k|    .Case("riscv64", Triple::riscv64)
  369|   209k|    .Case("hexagon", Triple::hexagon)
  370|   209k|    .Cases("s390x", "systemz", Triple::systemz)
  371|   209k|    .Case("sparc", Triple::sparc)
  372|   209k|    .Case("sparcel", Triple::sparcel)
  373|   209k|    .Cases("sparcv9", "sparc64", Triple::sparcv9)
  374|   209k|    .Case("tce", Triple::tce)
  375|   209k|    .Case("xcore", Triple::xcore)
  376|   209k|    .Case("nvptx", Triple::nvptx)
  377|   209k|    .Case("nvptx64", Triple::nvptx64)
  378|   209k|    .Case("le32", Triple::le32)
  379|   209k|    .Case("le64", Triple::le64)
  380|   209k|    .Case("amdil", Triple::amdil)
  381|   209k|    .Case("amdil64", Triple::amdil64)
  382|   209k|    .Case("hsail", Triple::hsail)
  383|   209k|    .Case("hsail64", Triple::hsail64)
  384|   209k|    .Case("spir", Triple::spir)
  385|   209k|    .Case("spir64", Triple::spir64)
  386|   209k|    .StartsWith("kalimba", Triple::kalimba)
  387|   209k|    .Case("shave", Triple::shave)
  388|   209k|    .Case("wasm32", Triple::wasm32)
  389|   209k|    .Case("wasm64", Triple::wasm64)
  390|   209k|    .Default(Triple::UnknownArch);
  391|       |
  392|       |  // Some architectures require special parsing logic just to compute the
  393|       |  // ArchType result.
  394|   209k|  if (AT == Triple::UnknownArch) {
  ------------------
  |  Branch (394:7): [True: 209k, False: 0]
  ------------------
  395|   209k|    if (ArchName.startswith("arm") || ArchName.startswith("thumb") ||
  ------------------
  |  Branch (395:9): [True: 209k, False: 0]
  |  Branch (395:9): [True: 209k, False: 0]
  |  Branch (395:39): [True: 0, False: 0]
  ------------------
  396|      0|        ArchName.startswith("aarch64"))
  ------------------
  |  Branch (396:9): [True: 0, False: 0]
  ------------------
  397|   209k|      return parseARMArch(ArchName);
  398|      0|    if (ArchName.startswith("bpf"))
  ------------------
  |  Branch (398:9): [True: 0, False: 0]
  ------------------
  399|      0|      return parseBPFArch(ArchName);
  400|      0|  }
  401|       |
  402|      0|  return AT;
  403|   209k|}
Triple.cpp:_ZL12parseARMArchN7llvm_ks9StringRefE:
  283|   209k|static Triple::ArchType parseARMArch(StringRef ArchName) {
  284|   209k|  unsigned ISA = ARM::parseArchISA(ArchName);
  285|   209k|  unsigned ENDIAN = ARM::parseArchEndian(ArchName);
  286|       |
  287|   209k|  Triple::ArchType arch = Triple::UnknownArch;
  288|   209k|  switch (ENDIAN) {
  ------------------
  |  Branch (288:11): [True: 209k, False: 0]
  ------------------
  289|   209k|  case ARM::EK_LITTLE: {
  ------------------
  |  Branch (289:3): [True: 209k, False: 0]
  ------------------
  290|   209k|    switch (ISA) {
  ------------------
  |  Branch (290:13): [True: 209k, False: 0]
  ------------------
  291|   209k|    case ARM::IK_ARM:
  ------------------
  |  Branch (291:5): [True: 209k, False: 0]
  ------------------
  292|   209k|      arch = Triple::arm;
  293|   209k|      break;
  294|      0|    case ARM::IK_THUMB:
  ------------------
  |  Branch (294:5): [True: 0, False: 209k]
  ------------------
  295|      0|      arch = Triple::thumb;
  296|      0|      break;
  297|      0|    case ARM::IK_AARCH64:
  ------------------
  |  Branch (297:5): [True: 0, False: 209k]
  ------------------
  298|      0|      arch = Triple::aarch64;
  299|      0|      break;
  300|   209k|    }
  301|   209k|    break;
  302|   209k|  }
  303|   209k|  case ARM::EK_BIG: {
  ------------------
  |  Branch (303:3): [True: 0, False: 209k]
  ------------------
  304|      0|    switch (ISA) {
  ------------------
  |  Branch (304:13): [True: 0, False: 0]
  ------------------
  305|      0|    case ARM::IK_ARM:
  ------------------
  |  Branch (305:5): [True: 0, False: 0]
  ------------------
  306|      0|      arch = Triple::armeb;
  307|      0|      break;
  308|      0|    case ARM::IK_THUMB:
  ------------------
  |  Branch (308:5): [True: 0, False: 0]
  ------------------
  309|      0|      arch = Triple::thumbeb;
  310|      0|      break;
  311|      0|    case ARM::IK_AARCH64:
  ------------------
  |  Branch (311:5): [True: 0, False: 0]
  ------------------
  312|      0|      arch = Triple::aarch64_be;
  313|      0|      break;
  314|      0|    }
  315|      0|    break;
  316|      0|  }
  317|   209k|  }
  318|       |
  319|   209k|  ArchName = ARM::getCanonicalArchName(ArchName);
  320|   209k|  if (ArchName.empty())
  ------------------
  |  Branch (320:7): [True: 0, False: 209k]
  ------------------
  321|      0|    return Triple::UnknownArch;
  322|       |
  323|       |  // Thumb only exists in v4+
  324|   209k|  if (ISA == ARM::IK_THUMB &&
  ------------------
  |  Branch (324:7): [True: 0, False: 209k]
  |  Branch (324:7): [True: 0, False: 209k]
  ------------------
  325|      0|      (ArchName.startswith("v2") || ArchName.startswith("v3")))
  ------------------
  |  Branch (325:8): [True: 0, False: 0]
  |  Branch (325:37): [True: 0, False: 0]
  ------------------
  326|      0|    return Triple::UnknownArch;
  327|       |
  328|       |  // Thumb only for v6m
  329|   209k|  unsigned Profile = ARM::parseArchProfile(ArchName);
  330|   209k|  unsigned Version = ARM::parseArchVersion(ArchName);
  331|   209k|  if (Profile == ARM::PK_M && Version == 6) {
  ------------------
  |  Branch (331:7): [True: 0, False: 209k]
  |  Branch (331:31): [True: 0, False: 0]
  ------------------
  332|      0|    if (ENDIAN == ARM::EK_BIG)
  ------------------
  |  Branch (332:9): [True: 0, False: 0]
  ------------------
  333|      0|      return Triple::thumbeb;
  334|      0|    else
  335|      0|      return Triple::thumb;
  336|      0|  }
  337|       |
  338|   209k|  return arch;
  339|   209k|}
Triple.cpp:_ZL12parseSubArchN7llvm_ks9StringRefE:
  481|   188k|static Triple::SubArchType parseSubArch(StringRef SubArchName) {
  482|   188k|  StringRef ARMSubArch = ARM::getCanonicalArchName(SubArchName);
  483|       |
  484|       |  // For now, this is the small part. Early return.
  485|   188k|  if (ARMSubArch.empty())
  ------------------
  |  Branch (485:7): [True: 0, False: 188k]
  ------------------
  486|      0|    return StringSwitch<Triple::SubArchType>(SubArchName)
  487|      0|      .EndsWith("kalimba3", Triple::KalimbaSubArch_v3)
  488|      0|      .EndsWith("kalimba4", Triple::KalimbaSubArch_v4)
  489|      0|      .EndsWith("kalimba5", Triple::KalimbaSubArch_v5)
  490|      0|      .Default(Triple::NoSubArch);
  491|       |
  492|       |  // ARM sub arch.
  493|   188k|  switch(ARM::parseArch(ARMSubArch)) {
  494|      0|  case ARM::AK_ARMV4:
  ------------------
  |  Branch (494:3): [True: 0, False: 188k]
  ------------------
  495|      0|    return Triple::NoSubArch;
  496|      0|  case ARM::AK_ARMV4T:
  ------------------
  |  Branch (496:3): [True: 0, False: 188k]
  ------------------
  497|      0|    return Triple::ARMSubArch_v4t;
  498|      0|  case ARM::AK_ARMV5T:
  ------------------
  |  Branch (498:3): [True: 0, False: 188k]
  ------------------
  499|      0|    return Triple::ARMSubArch_v5;
  500|      0|  case ARM::AK_ARMV5TE:
  ------------------
  |  Branch (500:3): [True: 0, False: 188k]
  ------------------
  501|      0|  case ARM::AK_IWMMXT:
  ------------------
  |  Branch (501:3): [True: 0, False: 188k]
  ------------------
  502|      0|  case ARM::AK_IWMMXT2:
  ------------------
  |  Branch (502:3): [True: 0, False: 188k]
  ------------------
  503|      0|  case ARM::AK_XSCALE:
  ------------------
  |  Branch (503:3): [True: 0, False: 188k]
  ------------------
  504|      0|  case ARM::AK_ARMV5TEJ:
  ------------------
  |  Branch (504:3): [True: 0, False: 188k]
  ------------------
  505|      0|    return Triple::ARMSubArch_v5te;
  506|      0|  case ARM::AK_ARMV6:
  ------------------
  |  Branch (506:3): [True: 0, False: 188k]
  ------------------
  507|      0|    return Triple::ARMSubArch_v6;
  508|      0|  case ARM::AK_ARMV6K:
  ------------------
  |  Branch (508:3): [True: 0, False: 188k]
  ------------------
  509|      0|  case ARM::AK_ARMV6KZ:
  ------------------
  |  Branch (509:3): [True: 0, False: 188k]
  ------------------
  510|      0|    return Triple::ARMSubArch_v6k;
  511|      0|  case ARM::AK_ARMV6T2:
  ------------------
  |  Branch (511:3): [True: 0, False: 188k]
  ------------------
  512|      0|    return Triple::ARMSubArch_v6t2;
  513|      0|  case ARM::AK_ARMV6M:
  ------------------
  |  Branch (513:3): [True: 0, False: 188k]
  ------------------
  514|      0|    return Triple::ARMSubArch_v6m;
  515|   188k|  case ARM::AK_ARMV7A:
  ------------------
  |  Branch (515:3): [True: 188k, False: 0]
  ------------------
  516|   188k|  case ARM::AK_ARMV7R:
  ------------------
  |  Branch (516:3): [True: 0, False: 188k]
  ------------------
  517|   188k|    return Triple::ARMSubArch_v7;
  518|      0|  case ARM::AK_ARMV7K:
  ------------------
  |  Branch (518:3): [True: 0, False: 188k]
  ------------------
  519|      0|    return Triple::ARMSubArch_v7k;
  520|      0|  case ARM::AK_ARMV7M:
  ------------------
  |  Branch (520:3): [True: 0, False: 188k]
  ------------------
  521|      0|    return Triple::ARMSubArch_v7m;
  522|      0|  case ARM::AK_ARMV7S:
  ------------------
  |  Branch (522:3): [True: 0, False: 188k]
  ------------------
  523|      0|    return Triple::ARMSubArch_v7s;
  524|      0|  case ARM::AK_ARMV7EM:
  ------------------
  |  Branch (524:3): [True: 0, False: 188k]
  ------------------
  525|      0|    return Triple::ARMSubArch_v7em;
  526|      0|  case ARM::AK_ARMV8A:
  ------------------
  |  Branch (526:3): [True: 0, False: 188k]
  ------------------
  527|      0|    return Triple::ARMSubArch_v8;
  528|      0|  case ARM::AK_ARMV8_1A:
  ------------------
  |  Branch (528:3): [True: 0, False: 188k]
  ------------------
  529|      0|    return Triple::ARMSubArch_v8_1a;
  530|      0|  case ARM::AK_ARMV8_2A:
  ------------------
  |  Branch (530:3): [True: 0, False: 188k]
  ------------------
  531|      0|    return Triple::ARMSubArch_v8_2a;
  532|      0|  case ARM::AK_ARMV8MBaseline:
  ------------------
  |  Branch (532:3): [True: 0, False: 188k]
  ------------------
  533|      0|    return Triple::ARMSubArch_v8m_baseline;
  534|      0|  case ARM::AK_ARMV8MMainline:
  ------------------
  |  Branch (534:3): [True: 0, False: 188k]
  ------------------
  535|      0|    return Triple::ARMSubArch_v8m_mainline;
  536|      0|  default:
  ------------------
  |  Branch (536:3): [True: 0, False: 188k]
  ------------------
  537|      0|    return Triple::NoSubArch;
  538|   188k|  }
  539|   188k|}
Triple.cpp:_ZL16getDefaultFormatRKN7llvm_ks6TripleE:
  551|   188k|static Triple::ObjectFormatType getDefaultFormat(const Triple &T) {
  552|   188k|  switch (T.getArch()) {
  ------------------
  |  Branch (552:11): [True: 188k, False: 0]
  ------------------
  553|      0|  case Triple::UnknownArch:
  ------------------
  |  Branch (553:3): [True: 0, False: 188k]
  ------------------
  554|      0|  case Triple::aarch64:
  ------------------
  |  Branch (554:3): [True: 0, False: 188k]
  ------------------
  555|   188k|  case Triple::arm:
  ------------------
  |  Branch (555:3): [True: 188k, False: 0]
  ------------------
  556|   188k|  case Triple::thumb:
  ------------------
  |  Branch (556:3): [True: 0, False: 188k]
  ------------------
  557|   188k|  case Triple::x86:
  ------------------
  |  Branch (557:3): [True: 0, False: 188k]
  ------------------
  558|   188k|  case Triple::x86_64:
  ------------------
  |  Branch (558:3): [True: 0, False: 188k]
  ------------------
  559|   188k|    if (T.isOSDarwin())
  ------------------
  |  Branch (559:9): [True: 0, False: 188k]
  ------------------
  560|      0|      return Triple::MachO;
  561|   188k|    else if (T.isOSWindows())
  ------------------
  |  Branch (561:14): [True: 0, False: 188k]
  ------------------
  562|      0|      return Triple::COFF;
  563|   188k|    return Triple::ELF;
  564|       |
  565|      0|  case Triple::aarch64_be:
  ------------------
  |  Branch (565:3): [True: 0, False: 188k]
  ------------------
  566|      0|  case Triple::amdgcn:
  ------------------
  |  Branch (566:3): [True: 0, False: 188k]
  ------------------
  567|      0|  case Triple::amdil:
  ------------------
  |  Branch (567:3): [True: 0, False: 188k]
  ------------------
  568|      0|  case Triple::amdil64:
  ------------------
  |  Branch (568:3): [True: 0, False: 188k]
  ------------------
  569|      0|  case Triple::armeb:
  ------------------
  |  Branch (569:3): [True: 0, False: 188k]
  ------------------
  570|      0|  case Triple::avr:
  ------------------
  |  Branch (570:3): [True: 0, False: 188k]
  ------------------
  571|      0|  case Triple::bpfeb:
  ------------------
  |  Branch (571:3): [True: 0, False: 188k]
  ------------------
  572|      0|  case Triple::bpfel:
  ------------------
  |  Branch (572:3): [True: 0, False: 188k]
  ------------------
  573|      0|  case Triple::hexagon:
  ------------------
  |  Branch (573:3): [True: 0, False: 188k]
  ------------------
  574|      0|  case Triple::hsail:
  ------------------
  |  Branch (574:3): [True: 0, False: 188k]
  ------------------
  575|      0|  case Triple::hsail64:
  ------------------
  |  Branch (575:3): [True: 0, False: 188k]
  ------------------
  576|      0|  case Triple::kalimba:
  ------------------
  |  Branch (576:3): [True: 0, False: 188k]
  ------------------
  577|      0|  case Triple::le32:
  ------------------
  |  Branch (577:3): [True: 0, False: 188k]
  ------------------
  578|      0|  case Triple::le64:
  ------------------
  |  Branch (578:3): [True: 0, False: 188k]
  ------------------
  579|      0|  case Triple::mips:
  ------------------
  |  Branch (579:3): [True: 0, False: 188k]
  ------------------
  580|      0|  case Triple::mips64:
  ------------------
  |  Branch (580:3): [True: 0, False: 188k]
  ------------------
  581|      0|  case Triple::mips64el:
  ------------------
  |  Branch (581:3): [True: 0, False: 188k]
  ------------------
  582|      0|  case Triple::mipsel:
  ------------------
  |  Branch (582:3): [True: 0, False: 188k]
  ------------------
  583|      0|  case Triple::msp430:
  ------------------
  |  Branch (583:3): [True: 0, False: 188k]
  ------------------
  584|      0|  case Triple::nvptx:
  ------------------
  |  Branch (584:3): [True: 0, False: 188k]
  ------------------
  585|      0|  case Triple::nvptx64:
  ------------------
  |  Branch (585:3): [True: 0, False: 188k]
  ------------------
  586|      0|  case Triple::ppc64le:
  ------------------
  |  Branch (586:3): [True: 0, False: 188k]
  ------------------
  587|      0|  case Triple::r600:
  ------------------
  |  Branch (587:3): [True: 0, False: 188k]
  ------------------
  588|      0|  case Triple::riscv32:
  ------------------
  |  Branch (588:3): [True: 0, False: 188k]
  ------------------
  589|      0|  case Triple::riscv64:
  ------------------
  |  Branch (589:3): [True: 0, False: 188k]
  ------------------
  590|      0|  case Triple::shave:
  ------------------
  |  Branch (590:3): [True: 0, False: 188k]
  ------------------
  591|      0|  case Triple::sparc:
  ------------------
  |  Branch (591:3): [True: 0, False: 188k]
  ------------------
  592|      0|  case Triple::sparcel:
  ------------------
  |  Branch (592:3): [True: 0, False: 188k]
  ------------------
  593|      0|  case Triple::sparcv9:
  ------------------
  |  Branch (593:3): [True: 0, False: 188k]
  ------------------
  594|      0|  case Triple::spir:
  ------------------
  |  Branch (594:3): [True: 0, False: 188k]
  ------------------
  595|      0|  case Triple::spir64:
  ------------------
  |  Branch (595:3): [True: 0, False: 188k]
  ------------------
  596|      0|  case Triple::systemz:
  ------------------
  |  Branch (596:3): [True: 0, False: 188k]
  ------------------
  597|      0|  case Triple::tce:
  ------------------
  |  Branch (597:3): [True: 0, False: 188k]
  ------------------
  598|      0|  case Triple::thumbeb:
  ------------------
  |  Branch (598:3): [True: 0, False: 188k]
  ------------------
  599|      0|  case Triple::wasm32:
  ------------------
  |  Branch (599:3): [True: 0, False: 188k]
  ------------------
  600|      0|  case Triple::wasm64:
  ------------------
  |  Branch (600:3): [True: 0, False: 188k]
  ------------------
  601|      0|  case Triple::xcore:
  ------------------
  |  Branch (601:3): [True: 0, False: 188k]
  ------------------
  602|      0|    return Triple::ELF;
  603|       |
  604|      0|  case Triple::ppc:
  ------------------
  |  Branch (604:3): [True: 0, False: 188k]
  ------------------
  605|      0|  case Triple::ppc64:
  ------------------
  |  Branch (605:3): [True: 0, False: 188k]
  ------------------
  606|      0|    if (T.isOSDarwin())
  ------------------
  |  Branch (606:9): [True: 0, False: 0]
  ------------------
  607|      0|      return Triple::MachO;
  608|      0|    return Triple::ELF;
  609|   188k|  }
  610|      0|  llvm_unreachable("unknown architecture");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  611|   188k|}

_ZNK7llvm_ks5Twine3strEv:
   16|   334k|std::string Twine::str() const {
   17|       |  // If we're storing only a std::string, just return it.
   18|   334k|  if (LHSKind == StdStringKind && RHSKind == EmptyKind)
  ------------------
  |  Branch (18:7): [True: 146k, False: 187k]
  |  Branch (18:35): [True: 104k, False: 41.9k]
  ------------------
   19|   104k|    return *LHS.stdString;
   20|       |
   21|       |  // Otherwise, flatten and copy the contents first.
   22|   229k|  SmallString<256> Vec;
   23|   229k|  return toStringRef(Vec).str();
   24|   334k|}
_ZNK7llvm_ks5Twine8toVectorERNS_15SmallVectorImplIcEE:
   26|  69.4k|void Twine::toVector(SmallVectorImpl<char> &Out) const {
   27|  69.4k|  raw_svector_ostream OS(Out);
   28|  69.4k|  print(OS);
   29|  69.4k|}
_ZNK7llvm_ks5Twine25toNullTerminatedStringRefERNS_15SmallVectorImplIcEE:
   31|  41.9k|StringRef Twine::toNullTerminatedStringRef(SmallVectorImpl<char> &Out) const {
   32|  41.9k|  if (isUnary()) {
  ------------------
  |  Branch (32:7): [True: 41.9k, False: 0]
  ------------------
   33|  41.9k|    switch (getLHSKind()) {
   34|  41.9k|    case CStringKind:
  ------------------
  |  Branch (34:5): [True: 41.9k, False: 7]
  ------------------
   35|       |      // Already null terminated, yay!
   36|  41.9k|      return StringRef(LHS.cString);
   37|      7|    case StdStringKind: {
  ------------------
  |  Branch (37:5): [True: 7, False: 41.9k]
  ------------------
   38|      7|      const std::string *str = LHS.stdString;
   39|      7|      return StringRef(str->c_str(), str->size());
   40|      0|    }
   41|      0|    default:
  ------------------
  |  Branch (41:5): [True: 0, False: 41.9k]
  ------------------
   42|      0|      break;
   43|  41.9k|    }
   44|  41.9k|  }
   45|      0|  toVector(Out);
   46|      0|  Out.push_back(0);
   47|      0|  Out.pop_back();
   48|      0|  return StringRef(Out.data(), Out.size());
   49|  41.9k|}
_ZNK7llvm_ks5Twine13printOneChildERNS_11raw_ostreamENS0_5ChildENS0_8NodeKindE:
   52|   804k|                          NodeKind Kind) const {
   53|   804k|  switch (Kind) {
  ------------------
  |  Branch (53:11): [True: 804k, False: 0]
  ------------------
   54|      0|  case Twine::NullKind: break;
  ------------------
  |  Branch (54:3): [True: 0, False: 804k]
  ------------------
   55|   328k|  case Twine::EmptyKind: break;
  ------------------
  |  Branch (55:3): [True: 328k, False: 476k]
  ------------------
   56|  4.52k|  case Twine::TwineKind:
  ------------------
  |  Branch (56:3): [True: 4.52k, False: 799k]
  ------------------
   57|  4.52k|    Ptr.twine->print(OS);
   58|  4.52k|    break;
   59|   360k|  case Twine::CStringKind:
  ------------------
  |  Branch (59:3): [True: 360k, False: 444k]
  ------------------
   60|   360k|    OS << Ptr.cString;
   61|   360k|    break;
   62|  41.9k|  case Twine::StdStringKind:
  ------------------
  |  Branch (62:3): [True: 41.9k, False: 762k]
  ------------------
   63|  41.9k|    OS << *Ptr.stdString;
   64|  41.9k|    break;
   65|  69.4k|  case Twine::StringRefKind:
  ------------------
  |  Branch (65:3): [True: 69.4k, False: 734k]
  ------------------
   66|  69.4k|    OS << *Ptr.stringRef;
   67|  69.4k|    break;
   68|      0|  case Twine::SmallStringKind:
  ------------------
  |  Branch (68:3): [True: 0, False: 804k]
  ------------------
   69|      0|    OS << *Ptr.smallString;
   70|      0|    break;
   71|      0|  case Twine::CharKind:
  ------------------
  |  Branch (71:3): [True: 0, False: 804k]
  ------------------
   72|      0|    OS << Ptr.character;
   73|      0|    break;
   74|      0|  case Twine::DecUIKind:
  ------------------
  |  Branch (74:3): [True: 0, False: 804k]
  ------------------
   75|      0|    OS << Ptr.decUI;
   76|      0|    break;
   77|      0|  case Twine::DecIKind:
  ------------------
  |  Branch (77:3): [True: 0, False: 804k]
  ------------------
   78|      0|    OS << Ptr.decI;
   79|      0|    break;
   80|      0|  case Twine::DecULKind:
  ------------------
  |  Branch (80:3): [True: 0, False: 804k]
  ------------------
   81|      0|    OS << *Ptr.decUL;
   82|      0|    break;
   83|      0|  case Twine::DecLKind:
  ------------------
  |  Branch (83:3): [True: 0, False: 804k]
  ------------------
   84|      0|    OS << *Ptr.decL;
   85|      0|    break;
   86|      0|  case Twine::DecULLKind:
  ------------------
  |  Branch (86:3): [True: 0, False: 804k]
  ------------------
   87|      0|    OS << *Ptr.decULL;
   88|      0|    break;
   89|      0|  case Twine::DecLLKind:
  ------------------
  |  Branch (89:3): [True: 0, False: 804k]
  ------------------
   90|      0|    OS << *Ptr.decLL;
   91|      0|    break;
   92|      0|  case Twine::UHexKind:
  ------------------
  |  Branch (92:3): [True: 0, False: 804k]
  ------------------
   93|      0|    OS.write_hex(*Ptr.uHex);
   94|      0|    break;
   95|   804k|  }
   96|   804k|}
_ZNK7llvm_ks5Twine5printERNS_11raw_ostreamE:
  151|   402k|void Twine::print(raw_ostream &OS) const {
  152|   402k|  printOneChild(OS, LHS, getLHSKind());
  153|   402k|  printOneChild(OS, RHS, getRHSKind());
  154|   402k|}

_ZNK7llvm_ks3sys2fs11file_status11getUniqueIDEv:
  177|  41.9k|UniqueID file_status::getUniqueID() const {
  178|  41.9k|  return UniqueID(fs_st_dev, fs_st_ino);
  179|  41.9k|}
_ZN7llvm_ks3sys2fs12current_pathERNS_15SmallVectorImplIcEE:
  181|  20.9k|std::error_code current_path(SmallVectorImpl<char> &result) {
  182|  20.9k|  result.clear();
  183|       |
  184|  20.9k|  const char *pwd = ::getenv("PWD");
  185|  20.9k|  llvm_ks::sys::fs::file_status PWDStatus, DotStatus;
  186|  20.9k|  if (pwd && llvm_ks::sys::path::is_absolute(pwd) &&
  ------------------
  |  Branch (186:7): [True: 20.9k, False: 0]
  |  Branch (186:7): [True: 20.9k, False: 0]
  |  Branch (186:14): [True: 20.9k, False: 0]
  ------------------
  187|  20.9k|      !llvm_ks::sys::fs::status(pwd, PWDStatus) &&
  ------------------
  |  Branch (187:7): [True: 20.9k, False: 0]
  ------------------
  188|  20.9k|      !llvm_ks::sys::fs::status(".", DotStatus) &&
  ------------------
  |  Branch (188:7): [True: 20.9k, False: 0]
  ------------------
  189|  20.9k|      PWDStatus.getUniqueID() == DotStatus.getUniqueID()) {
  ------------------
  |  Branch (189:7): [True: 20.9k, False: 0]
  ------------------
  190|  20.9k|    result.append(pwd, pwd + strlen(pwd));
  191|  20.9k|    return std::error_code();
  192|  20.9k|  }
  193|       |
  194|      0|#ifdef MAXPATHLEN
  195|      0|  result.reserve(MAXPATHLEN);
  196|       |#else
  197|       |// For GNU Hurd
  198|       |  result.reserve(1024);
  199|       |#endif
  200|       |
  201|      0|  while (true) {
  ------------------
  |  Branch (201:10): [True: 0, Folded]
  ------------------
  202|      0|    if (::getcwd(result.data(), result.capacity()) == nullptr) {
  ------------------
  |  Branch (202:9): [True: 0, False: 0]
  ------------------
  203|       |      // See if there was a real error.
  204|      0|      if (errno != ENOMEM)
  ------------------
  |  Branch (204:11): [True: 0, False: 0]
  ------------------
  205|      0|        return std::error_code(errno, std::generic_category());
  206|       |      // Otherwise there just wasn't enough space.
  207|      0|      result.reserve(result.capacity() * 2);
  208|      0|    } else
  209|      0|      break;
  210|      0|  }
  211|       |
  212|      0|  result.set_size(strlen(result.data()));
  213|      0|  return std::error_code();
  214|      0|}
_ZN7llvm_ks3sys2fs6statusERKNS_5TwineERNS1_11file_statusE:
  376|  41.9k|std::error_code status(const Twine &Path, file_status &Result) {
  377|  41.9k|  SmallString<128> PathStorage;
  378|  41.9k|  StringRef P = Path.toNullTerminatedStringRef(PathStorage);
  379|       |
  380|  41.9k|  struct stat Status;
  381|  41.9k|  int StatRet = ::stat(P.begin(), &Status);
  382|  41.9k|  return fillStatus(StatRet, Status, Result);
  383|  41.9k|}
_ZN7llvm_ks3sys2fs6statusEiRNS1_11file_statusE:
  385|      1|std::error_code status(int FD, file_status &Result) {
  386|      1|  struct stat Status;
  387|      1|  int StatRet = ::fstat(FD, &Status);
  388|      1|  return fillStatus(StatRet, Status, Result);
  389|      1|}
_ZN7llvm_ks3sys2fs15openFileForReadERKNS_5TwineERi:
  480|      7|std::error_code openFileForRead(const Twine &Name, int &ResultFD) {
  481|      7|  SmallString<128> Storage;
  482|      7|  StringRef P = Name.toNullTerminatedStringRef(Storage);
  483|      7|  while ((ResultFD = open(P.begin(), O_RDONLY)) < 0) {
  ------------------
  |  Branch (483:10): [True: 6, False: 1]
  ------------------
  484|      6|    if (errno != EINTR)
  ------------------
  |  Branch (484:9): [True: 6, False: 0]
  ------------------
  485|      6|      return std::error_code(errno, std::generic_category());
  486|      6|  }
  487|      1|  return std::error_code();
  488|      7|}
Path.cpp:_ZN7llvm_ks3sys2fsL10fillStatusEiRK4statRNS1_11file_statusE:
  343|  41.9k|                             file_status &Result) {
  344|  41.9k|  if (StatRet != 0) {
  ------------------
  |  Branch (344:7): [True: 0, False: 41.9k]
  ------------------
  345|      0|    std::error_code ec(errno, std::generic_category());
  346|      0|    if (ec == errc::no_such_file_or_directory)
  ------------------
  |  Branch (346:9): [True: 0, False: 0]
  ------------------
  347|      0|      Result = file_status(file_type::file_not_found);
  348|      0|    else
  349|      0|      Result = file_status(file_type::status_error);
  350|      0|    return ec;
  351|      0|  }
  352|       |
  353|  41.9k|  file_type Type = file_type::type_unknown;
  354|       |
  355|  41.9k|  if (S_ISDIR(Status.st_mode))
  ------------------
  |  Branch (355:7): [True: 41.9k, False: 0]
  ------------------
  356|  41.9k|    Type = file_type::directory_file;
  357|      0|  else if (S_ISREG(Status.st_mode))
  ------------------
  |  Branch (357:12): [True: 0, False: 0]
  ------------------
  358|      0|    Type = file_type::regular_file;
  359|      0|  else if (S_ISBLK(Status.st_mode))
  ------------------
  |  Branch (359:12): [True: 0, False: 0]
  ------------------
  360|      0|    Type = file_type::block_file;
  361|      0|  else if (S_ISCHR(Status.st_mode))
  ------------------
  |  Branch (361:12): [True: 0, False: 0]
  ------------------
  362|      0|    Type = file_type::character_file;
  363|      0|  else if (S_ISFIFO(Status.st_mode))
  ------------------
  |  Branch (363:12): [True: 0, False: 0]
  ------------------
  364|      0|    Type = file_type::fifo_file;
  365|      0|  else if (S_ISSOCK(Status.st_mode))
  ------------------
  |  Branch (365:12): [True: 0, False: 0]
  ------------------
  366|      0|    Type = file_type::socket_file;
  367|       |
  368|  41.9k|  perms Perms = static_cast<perms>(Status.st_mode);
  369|  41.9k|  Result =
  370|  41.9k|      file_status(Type, Perms, Status.st_dev, Status.st_ino, Status.st_mtime,
  371|  41.9k|                  Status.st_uid, Status.st_gid, Status.st_size);
  372|       |
  373|  41.9k|  return std::error_code();
  374|  41.9k|}

_ZN7llvm_ks11raw_ostreamD2Ev:
   64|   617k|raw_ostream::~raw_ostream() {
   65|       |  // raw_ostream's subclasses should take care to flush the buffer
   66|       |  // in their destructors.
   67|   617k|  assert(OutBufCur == OutBufStart &&
  ------------------
  |  Branch (67:3): [True: 617k, False: 0]
  |  Branch (67:3): [True: 617k, Folded]
  |  Branch (67:3): [True: 617k, False: 0]
  ------------------
   68|   617k|         "raw_ostream destructor called with non-empty buffer!");
   69|       |
   70|   617k|  if (BufferMode == InternalBuffer)
  ------------------
  |  Branch (70:7): [True: 0, False: 617k]
  ------------------
   71|      0|    delete [] OutBufStart;
   72|   617k|}
_ZN7llvm_ks11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE:
   92|   617k|                                   BufferKind Mode) {
   93|   617k|  assert(((Mode == Unbuffered && !BufferStart && Size == 0) ||
  ------------------
  |  Branch (93:3): [True: 617k, False: 0]
  |  Branch (93:3): [True: 617k, False: 0]
  |  Branch (93:3): [True: 617k, False: 0]
  |  Branch (93:3): [True: 0, False: 0]
  |  Branch (93:3): [True: 0, False: 0]
  |  Branch (93:3): [True: 0, False: 0]
  |  Branch (93:3): [True: 617k, Folded]
  |  Branch (93:3): [True: 617k, False: 0]
  ------------------
   94|   617k|          (Mode != Unbuffered && BufferStart && Size != 0)) &&
   95|   617k|         "stream must be unbuffered or have at least one byte");
   96|       |  // Make sure the current buffer is free of content (we can't flush here; the
   97|       |  // child buffer management logic will be in write_impl).
   98|   617k|  assert(GetNumBytesInBuffer() == 0 && "Current buffer is non-empty!");
  ------------------
  |  Branch (98:3): [True: 617k, False: 0]
  |  Branch (98:3): [True: 617k, Folded]
  |  Branch (98:3): [True: 617k, False: 0]
  ------------------
   99|       |
  100|   617k|  if (BufferMode == InternalBuffer)
  ------------------
  |  Branch (100:7): [True: 617k, False: 0]
  ------------------
  101|   617k|    delete [] OutBufStart;
  102|   617k|  OutBufStart = BufferStart;
  103|   617k|  OutBufEnd = OutBufStart+Size;
  104|   617k|  OutBufCur = OutBufStart;
  105|   617k|  BufferMode = Mode;
  106|       |
  107|       |  assert(OutBufStart <= OutBufEnd && "Invalid size!");
  ------------------
  |  Branch (107:3): [True: 617k, False: 0]
  |  Branch (107:3): [True: 617k, Folded]
  |  Branch (107:3): [True: 617k, False: 0]
  ------------------
  108|   617k|}
_ZN7llvm_ks11raw_ostreamlsEm:
  110|   335k|raw_ostream &raw_ostream::operator<<(unsigned long N) {
  111|       |  // Zero is a special case.
  112|   335k|  if (N == 0)
  ------------------
  |  Branch (112:7): [True: 94.1k, False: 240k]
  ------------------
  113|  94.1k|    return *this << '0';
  114|       |
  115|   240k|  char NumberBuffer[20];
  116|   240k|  char *EndPtr = NumberBuffer+sizeof(NumberBuffer);
  117|   240k|  char *CurPtr = EndPtr;
  118|       |
  119|   792k|  while (N) {
  ------------------
  |  Branch (119:10): [True: 551k, False: 240k]
  ------------------
  120|   551k|    *--CurPtr = '0' + char(N % 10);
  121|   551k|    N /= 10;
  122|   551k|  }
  123|   240k|  return write(CurPtr, EndPtr-CurPtr);
  124|   335k|}
_ZN7llvm_ks11raw_ostreamlsEl:
  126|   124k|raw_ostream &raw_ostream::operator<<(long N) {
  127|   124k|  if (N <  0) {
  ------------------
  |  Branch (127:7): [True: 705, False: 123k]
  ------------------
  128|    705|    *this << '-';
  129|       |    // Avoid undefined behavior on LONG_MIN with a cast.
  130|    705|    N = -(unsigned long)N;
  131|    705|  }
  132|       |
  133|   124k|  return this->operator<<(static_cast<unsigned long>(N));
  134|   124k|}
_ZN7llvm_ks11raw_ostream5writeEh:
  278|   140M|raw_ostream &raw_ostream::write(unsigned char C) {
  279|       |  // Group exceptional cases into a single branch.
  280|   140M|  if (LLVM_UNLIKELY(OutBufCur >= OutBufEnd)) {
  ------------------
  |  |  172|   140M|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 140M, False: 0]
  |  |  ------------------
  ------------------
  281|   140M|    if (LLVM_UNLIKELY(!OutBufStart)) {
  ------------------
  |  |  172|   140M|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 140M, False: 0]
  |  |  ------------------
  ------------------
  282|   140M|      if (BufferMode == Unbuffered) {
  ------------------
  |  Branch (282:11): [True: 140M, False: 0]
  ------------------
  283|   140M|        write_impl(reinterpret_cast<char*>(&C), 1);
  284|   140M|        return *this;
  285|   140M|      }
  286|       |      // Set up a buffer and start over.
  287|      0|      SetBuffered();
  288|      0|      return write(C);
  289|   140M|    }
  290|       |
  291|      0|    flush_nonempty();
  292|      0|  }
  293|       |
  294|      0|  *OutBufCur++ = C;
  295|      0|  return *this;
  296|   140M|}
_ZN7llvm_ks11raw_ostream5writeEPKcm:
  298|  17.6M|raw_ostream &raw_ostream::write(const char *Ptr, size_t Size) {
  299|       |  // Group exceptional cases into a single branch.
  300|  17.6M|  if (LLVM_UNLIKELY(size_t(OutBufEnd - OutBufCur) < Size)) {
  ------------------
  |  |  172|  17.6M|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 17.6M, False: 15]
  |  |  ------------------
  ------------------
  301|  17.6M|    if (LLVM_UNLIKELY(!OutBufStart)) {
  ------------------
  |  |  172|  17.6M|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 17.6M, False: 0]
  |  |  ------------------
  ------------------
  302|  17.6M|      if (BufferMode == Unbuffered) {
  ------------------
  |  Branch (302:11): [True: 17.6M, False: 0]
  ------------------
  303|  17.6M|        write_impl(Ptr, Size);
  304|  17.6M|        return *this;
  305|  17.6M|      }
  306|       |      // Set up a buffer and start over.
  307|      0|      SetBuffered();
  308|      0|      return write(Ptr, Size);
  309|  17.6M|    }
  310|       |
  311|      0|    size_t NumBytes = OutBufEnd - OutBufCur;
  312|       |
  313|       |    // If the buffer is empty at this point we have a string that is larger
  314|       |    // than the buffer. Directly write the chunk that is a multiple of the
  315|       |    // preferred buffer size and put the remainder in the buffer.
  316|      0|    if (LLVM_UNLIKELY(OutBufCur == OutBufStart)) {
  ------------------
  |  |  172|      0|#define LLVM_UNLIKELY(EXPR) __builtin_expect((bool)(EXPR), false)
  |  |  ------------------
  |  |  |  Branch (172:29): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  317|      0|      assert(NumBytes != 0 && "undefined behavior");
  ------------------
  |  Branch (317:7): [True: 0, False: 0]
  |  Branch (317:7): [True: 0, Folded]
  |  Branch (317:7): [True: 0, False: 0]
  ------------------
  318|      0|      size_t BytesToWrite = Size - (Size % NumBytes);
  319|      0|      write_impl(Ptr, BytesToWrite);
  320|      0|      size_t BytesRemaining = Size - BytesToWrite;
  321|      0|      if (BytesRemaining > size_t(OutBufEnd - OutBufCur)) {
  ------------------
  |  Branch (321:11): [True: 0, False: 0]
  ------------------
  322|       |        // Too much left over to copy into our buffer.
  323|      0|        return write(Ptr + BytesToWrite, BytesRemaining);
  324|      0|      }
  325|      0|      copy_to_buffer(Ptr + BytesToWrite, BytesRemaining);
  326|      0|      return *this;
  327|      0|    }
  328|       |
  329|       |    // We don't have enough space in the buffer to fit the string in. Insert as
  330|       |    // much as possible, flush and start over with the remainder.
  331|      0|    copy_to_buffer(Ptr, NumBytes);
  332|      0|    flush_nonempty();
  333|      0|    return write(Ptr + NumBytes, Size - NumBytes);
  334|      0|  }
  335|       |
  336|     15|  copy_to_buffer(Ptr, Size);
  337|       |
  338|     15|  return *this;
  339|  17.6M|}
_ZN7llvm_ks11raw_ostream14copy_to_bufferEPKcm:
  341|     15|void raw_ostream::copy_to_buffer(const char *Ptr, size_t Size) {
  342|     15|  assert(Size <= size_t(OutBufEnd - OutBufCur) && "Buffer overrun!");
  ------------------
  |  Branch (342:3): [True: 15, False: 0]
  |  Branch (342:3): [True: 15, Folded]
  |  Branch (342:3): [True: 15, False: 0]
  ------------------
  343|       |
  344|       |  // Handle short strings specially, memcpy isn't very good at very short
  345|       |  // strings.
  346|     15|  switch (Size) {
  347|      0|  case 4: OutBufCur[3] = Ptr[3]; // FALL THROUGH
  ------------------
  |  Branch (347:3): [True: 0, False: 15]
  ------------------
  348|      0|  case 3: OutBufCur[2] = Ptr[2]; // FALL THROUGH
  ------------------
  |  Branch (348:3): [True: 0, False: 15]
  ------------------
  349|      0|  case 2: OutBufCur[1] = Ptr[1]; // FALL THROUGH
  ------------------
  |  Branch (349:3): [True: 0, False: 15]
  ------------------
  350|      0|  case 1: OutBufCur[0] = Ptr[0]; // FALL THROUGH
  ------------------
  |  Branch (350:3): [True: 0, False: 15]
  ------------------
  351|     15|  case 0: break;
  ------------------
  |  Branch (351:3): [True: 15, False: 0]
  ------------------
  352|      0|  default:
  ------------------
  |  Branch (352:3): [True: 0, False: 15]
  ------------------
  353|      0|    memcpy(OutBufCur, Ptr, Size);
  354|      0|    break;
  355|     15|  }
  356|       |
  357|     15|  OutBufCur += Size;
  358|     15|}
_ZN7llvm_ks14raw_fd_ostreamC2Eibb:
  517|      1|    : raw_pwrite_stream(unbuffered), FD(fd), ShouldClose(shouldClose),
  518|      1|      Error(false) {
  519|      1|  if (FD < 0 ) {
  ------------------
  |  Branch (519:7): [True: 0, False: 1]
  ------------------
  520|      0|    ShouldClose = false;
  521|      0|    return;
  522|      0|  }
  523|       |
  524|       |  // Get the starting position.
  525|      1|  off_t loc = ::lseek(FD, 0, SEEK_CUR);
  526|       |#ifdef LLVM_ON_WIN32
  527|       |  // MSVCRT's _lseek(SEEK_CUR) doesn't return -1 for pipes.
  528|       |  sys::fs::file_status Status;
  529|       |  std::error_code EC = status(FD, Status);
  530|       |  SupportsSeeking = !EC && Status.type() == sys::fs::file_type::regular_file;
  531|       |#else
  532|      1|  SupportsSeeking = loc != (off_t)-1;
  533|      1|#endif
  534|      1|  if (!SupportsSeeking)
  ------------------
  |  Branch (534:7): [True: 0, False: 1]
  ------------------
  535|      0|    pos = 0;
  536|      1|  else
  537|      1|    pos = static_cast<uint64_t>(loc);
  538|      1|}
_ZN7llvm_ks14raw_fd_ostreamD2Ev:
  540|      1|raw_fd_ostream::~raw_fd_ostream() {
  541|      1|  if (FD >= 0) {
  ------------------
  |  Branch (541:7): [True: 1, False: 0]
  ------------------
  542|      1|    flush();
  543|      1|  }
  544|       |
  545|       |#ifdef __MINGW32__
  546|       |  // On mingw, global dtors should not call exit().
  547|       |  // report_fatal_error() invokes exit(). We know report_fatal_error()
  548|       |  // might not write messages to stderr when any errors were detected
  549|       |  // on FD == 2.
  550|       |  if (FD == 2) return;
  551|       |#endif
  552|       |
  553|       |  // If there are any pending errors, report them now. Clients wishing
  554|       |  // to avoid report_fatal_error calls should check for errors with
  555|       |  // has_error() and clear the error flag with clear_error() before
  556|       |  // destructing raw_ostream objects which may have errors.
  557|      1|  if (has_error())
  ------------------
  |  Branch (557:7): [True: 0, False: 1]
  ------------------
  558|      0|    report_fatal_error("IO failure on output stream.", /*GenCrashDiag=*/false);
  559|      1|}
_ZN7llvm_ks14raw_fd_ostream10write_implEPKcm:
  562|  8.00M|void raw_fd_ostream::write_impl(const char *Ptr, size_t Size) {
  563|  8.00M|  assert(FD >= 0 && "File already closed.");
  ------------------
  |  Branch (563:3): [True: 8.00M, False: 0]
  |  Branch (563:3): [True: 8.00M, Folded]
  |  Branch (563:3): [True: 8.00M, False: 0]
  ------------------
  564|  8.00M|  pos += Size;
  565|       |
  566|  8.00M|#ifndef LLVM_ON_WIN32
  567|  8.00M|  bool ShouldWriteInChunks = false;
  568|       |#else
  569|       |  // Writing a large size of output to Windows console returns ENOMEM. It seems
  570|       |  // that, prior to Windows 8, WriteFile() is redirecting to WriteConsole(), and
  571|       |  // the latter has a size limit (66000 bytes or less, depending on heap usage).
  572|       |  bool ShouldWriteInChunks = !!::_isatty(FD) && !RunningWindows8OrGreater();
  573|       |#endif
  574|       |
  575|  8.00M|  do {
  576|  8.00M|    size_t ChunkSize = Size;
  577|  8.00M|    if (ChunkSize > 32767 && ShouldWriteInChunks)
  ------------------
  |  Branch (577:9): [True: 0, False: 8.00M]
  |  Branch (577:30): [True: 0, False: 0]
  ------------------
  578|      0|        ChunkSize = 32767;
  579|       |
  580|  8.00M|    ssize_t ret = ::write(FD, Ptr, ChunkSize);
  581|       |
  582|  8.00M|    if (ret < 0) {
  ------------------
  |  Branch (582:9): [True: 0, False: 8.00M]
  ------------------
  583|       |      // If it's a recoverable error, swallow it and retry the write.
  584|       |      //
  585|       |      // Ideally we wouldn't ever see EAGAIN or EWOULDBLOCK here, since
  586|       |      // raw_ostream isn't designed to do non-blocking I/O. However, some
  587|       |      // programs, such as old versions of bjam, have mistakenly used
  588|       |      // O_NONBLOCK. For compatibility, emulate blocking semantics by
  589|       |      // spinning until the write succeeds. If you don't want spinning,
  590|       |      // don't use O_NONBLOCK file descriptors with raw_ostream.
  591|      0|      if (errno == EINTR || errno == EAGAIN
  ------------------
  |  Branch (591:11): [True: 0, False: 0]
  |  Branch (591:29): [True: 0, False: 0]
  ------------------
  592|      0|#ifdef EWOULDBLOCK
  593|      0|          || errno == EWOULDBLOCK
  ------------------
  |  Branch (593:14): [True: 0, False: 0]
  ------------------
  594|      0|#endif
  595|      0|          )
  596|      0|        continue;
  597|       |
  598|       |      // Otherwise it's a non-recoverable error. Note it and quit.
  599|      0|      error_detected();
  600|      0|      break;
  601|      0|    }
  602|       |
  603|       |    // The write may have written some or all of the data. Update the
  604|       |    // size and buffer pointer to reflect the remainder that needs
  605|       |    // to be written. If there are no bytes left, we're done.
  606|  8.00M|    Ptr += ret;
  607|  8.00M|    Size -= ret;
  608|  8.00M|  } while (Size > 0);
  ------------------
  |  Branch (608:12): [True: 0, False: 8.00M]
  ------------------
  609|  8.00M|}
_ZN7llvm_ks14raw_fd_ostream11changeColorENS_11raw_ostream6ColorsEbb:
  655|   314k|                                         bool bg) {
  656|   314k|  return *this;
  657|   314k|}
_ZN7llvm_ks14raw_fd_ostream10resetColorEv:
  659|   233k|raw_ostream &raw_fd_ostream::resetColor() {
  660|   233k|  return *this;
  661|   233k|}
_ZNK7llvm_ks14raw_fd_ostream10has_colorsEv:
  671|  80.5k|bool raw_fd_ostream::has_colors() const {
  672|  80.5k|  return true;
  673|  80.5k|}
_ZN7llvm_ks4errsEv:
  693|   161k|raw_ostream &llvm_ks::errs() {
  694|       |  // Set standard error to be unbuffered by default.
  695|       |  static raw_fd_ostream S(STDERR_FILENO, false, true);
  696|   161k|  return S;
  697|   161k|}
_ZNK7llvm_ks19raw_svector_ostream11current_posEv:
  722|  99.1k|uint64_t raw_svector_ostream::current_pos() const { return OS.size(); }
_ZN7llvm_ks19raw_svector_ostream10write_implEPKcm:
  724|   150M|void raw_svector_ostream::write_impl(const char *Ptr, size_t Size) {
  725|   150M|  OS.append(Ptr, Ptr + Size);
  726|   150M|}

LLVMInitializeAArch64AsmParser:
 4658|      1|extern "C" void LLVMInitializeAArch64AsmParser() {
 4659|      1|  RegisterMCAsmParser<AArch64AsmParser> X(TheAArch64leTarget);
 4660|      1|  RegisterMCAsmParser<AArch64AsmParser> Y(TheAArch64beTarget);
 4661|      1|  RegisterMCAsmParser<AArch64AsmParser> Z(TheARM64Target);
 4662|      1|}

LLVMInitializeAArch64TargetMC:
   75|      1|extern "C" void LLVMInitializeAArch64TargetMC() {
   76|      1|  for (Target *T :
  ------------------
  |  Branch (76:18): [True: 3, False: 1]
  ------------------
   77|      3|       {&TheAArch64leTarget, &TheAArch64beTarget, &TheARM64Target}) {
   78|       |    // Register the MC asm info.
   79|      3|    RegisterMCAsmInfoFn X(*T, createAArch64MCAsmInfo);
   80|       |
   81|       |    // Register the MC instruction info.
   82|      3|    TargetRegistry::RegisterMCInstrInfo(*T, createAArch64MCInstrInfo);
   83|       |
   84|       |    // Register the MC register info.
   85|      3|    TargetRegistry::RegisterMCRegInfo(*T, createAArch64MCRegisterInfo);
   86|       |
   87|       |    // Register the MC subtarget info.
   88|      3|    TargetRegistry::RegisterMCSubtargetInfo(*T, createAArch64MCSubtargetInfo);
   89|       |
   90|       |    // Register the MC Code Emitter
   91|      3|    TargetRegistry::RegisterMCCodeEmitter(*T, createAArch64MCCodeEmitter);
   92|      3|  }
   93|       |
   94|       |  // Register the asm backend.
   95|      1|  for (Target *T : {&TheAArch64leTarget, &TheARM64Target})
  ------------------
  |  Branch (95:18): [True: 2, False: 1]
  ------------------
   96|      2|    TargetRegistry::RegisterMCAsmBackend(*T, createAArch64leAsmBackend);
   97|      1|  TargetRegistry::RegisterMCAsmBackend(TheAArch64beTarget,
   98|      1|                                       createAArch64beAsmBackend);
   99|      1|}

LLVMInitializeAArch64TargetInfo:
   20|      1|extern "C" void LLVMInitializeAArch64TargetInfo() {
   21|       |  // Now register the "arm64" name for use with "-march". We don't want it to
   22|       |  // take possession of the Triple::aarch64 tag though.
   23|      1|  TargetRegistry::RegisterTarget(TheARM64Target, "arm64",
   24|      1|                                 "ARM64 (little endian)",
   25|      1|                                 [](Triple::ArchType) { return false; });
   26|       |
   27|      1|  RegisterTarget<Triple::aarch64> Z(
   28|      1|      TheAArch64leTarget, "aarch64", "AArch64 (little endian)");
   29|      1|  RegisterTarget<Triple::aarch64_be> W(
   30|      1|      TheAArch64beTarget, "aarch64_be", "AArch64 (big endian)");
   31|       |
   32|      1|}
AArch64TargetInfo.cpp:_ZZ31LLVMInitializeAArch64TargetInfoENK3$_0clEN7llvm_ks6Triple8ArchTypeE:
   25|  20.9k|                                 [](Triple::ArchType) { return false; });

_ZN7llvm_ks17isV8EligibleForITINS_6MCInstEEEbPT_:
   25|     14|inline bool isV8EligibleForIT(InstrType *Instr) {
   26|     14|  switch (Instr->getOpcode()) {
   27|     14|  default:
  ------------------
  |  Branch (27:3): [True: 14, False: 0]
  ------------------
   28|     14|    return false;
   29|      0|  case ARM::tADC:
  ------------------
  |  Branch (29:3): [True: 0, False: 14]
  ------------------
   30|      0|  case ARM::tADDi3:
  ------------------
  |  Branch (30:3): [True: 0, False: 14]
  ------------------
   31|      0|  case ARM::tADDi8:
  ------------------
  |  Branch (31:3): [True: 0, False: 14]
  ------------------
   32|      0|  case ARM::tADDrr:
  ------------------
  |  Branch (32:3): [True: 0, False: 14]
  ------------------
   33|      0|  case ARM::tAND:
  ------------------
  |  Branch (33:3): [True: 0, False: 14]
  ------------------
   34|      0|  case ARM::tASRri:
  ------------------
  |  Branch (34:3): [True: 0, False: 14]
  ------------------
   35|      0|  case ARM::tASRrr:
  ------------------
  |  Branch (35:3): [True: 0, False: 14]
  ------------------
   36|      0|  case ARM::tBIC:
  ------------------
  |  Branch (36:3): [True: 0, False: 14]
  ------------------
   37|      0|  case ARM::tEOR:
  ------------------
  |  Branch (37:3): [True: 0, False: 14]
  ------------------
   38|      0|  case ARM::tLSLri:
  ------------------
  |  Branch (38:3): [True: 0, False: 14]
  ------------------
   39|      0|  case ARM::tLSLrr:
  ------------------
  |  Branch (39:3): [True: 0, False: 14]
  ------------------
   40|      0|  case ARM::tLSRri:
  ------------------
  |  Branch (40:3): [True: 0, False: 14]
  ------------------
   41|      0|  case ARM::tLSRrr:
  ------------------
  |  Branch (41:3): [True: 0, False: 14]
  ------------------
   42|      0|  case ARM::tMOVi8:
  ------------------
  |  Branch (42:3): [True: 0, False: 14]
  ------------------
   43|      0|  case ARM::tMUL:
  ------------------
  |  Branch (43:3): [True: 0, False: 14]
  ------------------
   44|      0|  case ARM::tMVN:
  ------------------
  |  Branch (44:3): [True: 0, False: 14]
  ------------------
   45|      0|  case ARM::tORR:
  ------------------
  |  Branch (45:3): [True: 0, False: 14]
  ------------------
   46|      0|  case ARM::tROR:
  ------------------
  |  Branch (46:3): [True: 0, False: 14]
  ------------------
   47|      0|  case ARM::tRSB:
  ------------------
  |  Branch (47:3): [True: 0, False: 14]
  ------------------
   48|      0|  case ARM::tSBC:
  ------------------
  |  Branch (48:3): [True: 0, False: 14]
  ------------------
   49|      0|  case ARM::tSUBi3:
  ------------------
  |  Branch (49:3): [True: 0, False: 14]
  ------------------
   50|      0|  case ARM::tSUBi8:
  ------------------
  |  Branch (50:3): [True: 0, False: 14]
  ------------------
   51|      0|  case ARM::tSUBrr:
  ------------------
  |  Branch (51:3): [True: 0, False: 14]
  ------------------
   52|       |    // Outside of an IT block, these set CPSR.
   53|      0|    return IsCPSRDead(Instr);
   54|      0|  case ARM::tADDrSPi:
  ------------------
  |  Branch (54:3): [True: 0, False: 14]
  ------------------
   55|      0|  case ARM::tCMNz:
  ------------------
  |  Branch (55:3): [True: 0, False: 14]
  ------------------
   56|      0|  case ARM::tCMPi8:
  ------------------
  |  Branch (56:3): [True: 0, False: 14]
  ------------------
   57|      0|  case ARM::tCMPr:
  ------------------
  |  Branch (57:3): [True: 0, False: 14]
  ------------------
   58|      0|  case ARM::tLDRBi:
  ------------------
  |  Branch (58:3): [True: 0, False: 14]
  ------------------
   59|      0|  case ARM::tLDRBr:
  ------------------
  |  Branch (59:3): [True: 0, False: 14]
  ------------------
   60|      0|  case ARM::tLDRHi:
  ------------------
  |  Branch (60:3): [True: 0, False: 14]
  ------------------
   61|      0|  case ARM::tLDRHr:
  ------------------
  |  Branch (61:3): [True: 0, False: 14]
  ------------------
   62|      0|  case ARM::tLDRSB:
  ------------------
  |  Branch (62:3): [True: 0, False: 14]
  ------------------
   63|      0|  case ARM::tLDRSH:
  ------------------
  |  Branch (63:3): [True: 0, False: 14]
  ------------------
   64|      0|  case ARM::tLDRi:
  ------------------
  |  Branch (64:3): [True: 0, False: 14]
  ------------------
   65|      0|  case ARM::tLDRr:
  ------------------
  |  Branch (65:3): [True: 0, False: 14]
  ------------------
   66|      0|  case ARM::tLDRspi:
  ------------------
  |  Branch (66:3): [True: 0, False: 14]
  ------------------
   67|      0|  case ARM::tSTRBi:
  ------------------
  |  Branch (67:3): [True: 0, False: 14]
  ------------------
   68|      0|  case ARM::tSTRBr:
  ------------------
  |  Branch (68:3): [True: 0, False: 14]
  ------------------
   69|      0|  case ARM::tSTRHi:
  ------------------
  |  Branch (69:3): [True: 0, False: 14]
  ------------------
   70|      0|  case ARM::tSTRHr:
  ------------------
  |  Branch (70:3): [True: 0, False: 14]
  ------------------
   71|      0|  case ARM::tSTRi:
  ------------------
  |  Branch (71:3): [True: 0, False: 14]
  ------------------
   72|      0|  case ARM::tSTRr:
  ------------------
  |  Branch (72:3): [True: 0, False: 14]
  ------------------
   73|      0|  case ARM::tSTRspi:
  ------------------
  |  Branch (73:3): [True: 0, False: 14]
  ------------------
   74|      0|  case ARM::tTST:
  ------------------
  |  Branch (74:3): [True: 0, False: 14]
  ------------------
   75|      0|    return true;
   76|       |// there are some "conditionally deprecated" opcodes
   77|      0|  case ARM::tADDspr:
  ------------------
  |  Branch (77:3): [True: 0, False: 14]
  ------------------
   78|      0|  case ARM::tBLXr:
  ------------------
  |  Branch (78:3): [True: 0, False: 14]
  ------------------
   79|      0|    return Instr->getOperand(2).getReg() != ARM::PC;
   80|       |  // ADD PC, SP and BLX PC were always unpredictable,
   81|       |  // now on top of it they're deprecated
   82|      0|  case ARM::tADDrSP:
  ------------------
  |  Branch (82:3): [True: 0, False: 14]
  ------------------
   83|      0|  case ARM::tBX:
  ------------------
  |  Branch (83:3): [True: 0, False: 14]
  ------------------
   84|      0|    return Instr->getOperand(0).getReg() != ARM::PC;
   85|      0|  case ARM::tADDhirr:
  ------------------
  |  Branch (85:3): [True: 0, False: 14]
  ------------------
   86|      0|    return Instr->getOperand(0).getReg() != ARM::PC &&
  ------------------
  |  Branch (86:12): [True: 0, False: 0]
  ------------------
   87|      0|           Instr->getOperand(2).getReg() != ARM::PC;
  ------------------
  |  Branch (87:12): [True: 0, False: 0]
  ------------------
   88|      0|  case ARM::tCMPhir:
  ------------------
  |  Branch (88:3): [True: 0, False: 14]
  ------------------
   89|      0|  case ARM::tMOVr:
  ------------------
  |  Branch (89:3): [True: 0, False: 14]
  ------------------
   90|      0|    return Instr->getOperand(0).getReg() != ARM::PC &&
  ------------------
  |  Branch (90:12): [True: 0, False: 0]
  ------------------
   91|      0|           Instr->getOperand(1).getReg() != ARM::PC;
  ------------------
  |  Branch (91:12): [True: 0, False: 0]
  ------------------
   92|     14|  }
   93|     14|}

ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser24ComputeAvailableFeaturesERKN7llvm_ks13FeatureBitsetE:
 6536|  48.5k|ComputeAvailableFeatures(const FeatureBitset& FB) const {
 6537|  48.5k|  uint64_t Features = 0;
 6538|  48.5k|  if ((FB[ARM::HasV4TOps]))
  ------------------
  |  Branch (6538:7): [True: 46.3k, False: 2.25k]
  ------------------
 6539|  46.3k|    Features |= Feature_HasV4T;
 6540|  48.5k|  if ((FB[ARM::HasV5TOps]))
  ------------------
  |  Branch (6540:7): [True: 41.4k, False: 7.15k]
  ------------------
 6541|  41.4k|    Features |= Feature_HasV5T;
 6542|  48.5k|  if ((FB[ARM::HasV5TEOps]))
  ------------------
  |  Branch (6542:7): [True: 40.6k, False: 7.89k]
  ------------------
 6543|  40.6k|    Features |= Feature_HasV5TE;
 6544|  48.5k|  if ((FB[ARM::HasV6Ops]))
  ------------------
  |  Branch (6544:7): [True: 40.3k, False: 8.28k]
  ------------------
 6545|  40.3k|    Features |= Feature_HasV6;
 6546|  48.5k|  if ((FB[ARM::HasV6MOps]))
  ------------------
  |  Branch (6546:7): [True: 39.7k, False: 8.81k]
  ------------------
 6547|  39.7k|    Features |= Feature_HasV6M;
 6548|  48.5k|  if ((FB[ARM::HasV8MBaselineOps]))
  ------------------
  |  Branch (6548:7): [True: 36.7k, False: 11.8k]
  ------------------
 6549|  36.7k|    Features |= Feature_HasV8MBaseline;
 6550|  48.5k|  if ((FB[ARM::HasV8MMainlineOps]))
  ------------------
  |  Branch (6550:7): [True: 7.35k, False: 41.2k]
  ------------------
 6551|  7.35k|    Features |= Feature_HasV8MMainline;
 6552|  48.5k|  if ((FB[ARM::HasV6T2Ops]))
  ------------------
  |  Branch (6552:7): [True: 36.6k, False: 11.8k]
  ------------------
 6553|  36.6k|    Features |= Feature_HasV6T2;
 6554|  48.5k|  if ((FB[ARM::HasV6KOps]))
  ------------------
  |  Branch (6554:7): [True: 36.7k, False: 11.8k]
  ------------------
 6555|  36.7k|    Features |= Feature_HasV6K;
 6556|  48.5k|  if ((FB[ARM::HasV7Ops]))
  ------------------
  |  Branch (6556:7): [True: 36.6k, False: 11.9k]
  ------------------
 6557|  36.6k|    Features |= Feature_HasV7;
 6558|  48.5k|  if ((FB[ARM::HasV8Ops]))
  ------------------
  |  Branch (6558:7): [True: 1.01k, False: 47.5k]
  ------------------
 6559|  1.01k|    Features |= Feature_HasV8;
 6560|  48.5k|  if ((!FB[ARM::HasV8Ops]))
  ------------------
  |  Branch (6560:7): [True: 47.5k, False: 1.01k]
  ------------------
 6561|  47.5k|    Features |= Feature_PreV8;
 6562|  48.5k|  if ((FB[ARM::HasV8_1aOps]))
  ------------------
  |  Branch (6562:7): [True: 682, False: 47.9k]
  ------------------
 6563|    682|    Features |= Feature_HasV8_1a;
 6564|  48.5k|  if ((FB[ARM::HasV8_2aOps]))
  ------------------
  |  Branch (6564:7): [True: 144, False: 48.4k]
  ------------------
 6565|    144|    Features |= Feature_HasV8_2a;
 6566|  48.5k|  if ((FB[ARM::FeatureVFP2]))
  ------------------
  |  Branch (6566:7): [True: 28.6k, False: 19.9k]
  ------------------
 6567|  28.6k|    Features |= Feature_HasVFP2;
 6568|  48.5k|  if ((FB[ARM::FeatureVFP3]))
  ------------------
  |  Branch (6568:7): [True: 27.6k, False: 20.9k]
  ------------------
 6569|  27.6k|    Features |= Feature_HasVFP3;
 6570|  48.5k|  if ((FB[ARM::FeatureVFP4]))
  ------------------
  |  Branch (6570:7): [True: 2.45k, False: 46.1k]
  ------------------
 6571|  2.45k|    Features |= Feature_HasVFP4;
 6572|  48.5k|  if ((!FB[ARM::FeatureVFPOnlySP]))
  ------------------
  |  Branch (6572:7): [True: 48.4k, False: 87]
  ------------------
 6573|  48.4k|    Features |= Feature_HasDPVFP;
 6574|  48.5k|  if ((FB[ARM::FeatureFPARMv8]))
  ------------------
  |  Branch (6574:7): [True: 1.13k, False: 47.4k]
  ------------------
 6575|  1.13k|    Features |= Feature_HasFPARMv8;
 6576|  48.5k|  if ((FB[ARM::FeatureNEON]))
  ------------------
  |  Branch (6576:7): [True: 27.0k, False: 21.5k]
  ------------------
 6577|  27.0k|    Features |= Feature_HasNEON;
 6578|  48.5k|  if ((FB[ARM::FeatureCrypto]))
  ------------------
  |  Branch (6578:7): [True: 1.01k, False: 47.5k]
  ------------------
 6579|  1.01k|    Features |= Feature_HasCrypto;
 6580|  48.5k|  if ((FB[ARM::FeatureCRC]))
  ------------------
  |  Branch (6580:7): [True: 1.01k, False: 47.5k]
  ------------------
 6581|  1.01k|    Features |= Feature_HasCRC;
 6582|  48.5k|  if ((FB[ARM::FeatureFP16]))
  ------------------
  |  Branch (6582:7): [True: 2.46k, False: 46.1k]
  ------------------
 6583|  2.46k|    Features |= Feature_HasFP16;
 6584|  48.5k|  if ((FB[ARM::FeatureFullFP16]))
  ------------------
  |  Branch (6584:7): [True: 0, False: 48.5k]
  ------------------
 6585|      0|    Features |= Feature_HasFullFP16;
 6586|  48.5k|  if ((FB[ARM::FeatureHWDiv]))
  ------------------
  |  Branch (6586:7): [True: 9.01k, False: 39.5k]
  ------------------
 6587|  9.01k|    Features |= Feature_HasDivide;
 6588|  48.5k|  if ((FB[ARM::FeatureHWDivARM]))
  ------------------
  |  Branch (6588:7): [True: 1.01k, False: 47.5k]
  ------------------
 6589|  1.01k|    Features |= Feature_HasDivideInARM;
 6590|  48.5k|  if ((FB[ARM::FeatureT2XtPk]))
  ------------------
  |  Branch (6590:7): [True: 91, False: 48.4k]
  ------------------
 6591|     91|    Features |= Feature_HasT2ExtractPack;
 6592|  48.5k|  if ((FB[ARM::FeatureDSP]))
  ------------------
  |  Branch (6592:7): [True: 28.7k, False: 19.7k]
  ------------------
 6593|  28.7k|    Features |= Feature_HasDSP;
 6594|  48.5k|  if ((FB[ARM::FeatureDB]))
  ------------------
  |  Branch (6594:7): [True: 39.7k, False: 8.81k]
  ------------------
 6595|  39.7k|    Features |= Feature_HasDB;
 6596|  48.5k|  if ((FB[ARM::FeatureV7Clrex]))
  ------------------
  |  Branch (6596:7): [True: 36.7k, False: 11.8k]
  ------------------
 6597|  36.7k|    Features |= Feature_HasV7Clrex;
 6598|  48.5k|  if ((FB[ARM::FeatureAcquireRelease]))
  ------------------
  |  Branch (6598:7): [True: 8.44k, False: 40.1k]
  ------------------
 6599|  8.44k|    Features |= Feature_HasAcquireRelease;
 6600|  48.5k|  if ((FB[ARM::FeatureMP]))
  ------------------
  |  Branch (6600:7): [True: 1.12k, False: 47.4k]
  ------------------
 6601|  1.12k|    Features |= Feature_HasMP;
 6602|  48.5k|  if ((FB[ARM::FeatureVirtualization]))
  ------------------
  |  Branch (6602:7): [True: 1.01k, False: 47.5k]
  ------------------
 6603|  1.01k|    Features |= Feature_HasVirtualization;
 6604|  48.5k|  if ((FB[ARM::FeatureTrustZone]))
  ------------------
  |  Branch (6604:7): [True: 1.02k, False: 47.5k]
  ------------------
 6605|  1.02k|    Features |= Feature_HasTrustZone;
 6606|  48.5k|  if ((FB[ARM::Feature8MSecExt]))
  ------------------
  |  Branch (6606:7): [True: 7.43k, False: 41.1k]
  ------------------
 6607|  7.43k|    Features |= Feature_Has8MSecExt;
 6608|  48.5k|  if ((FB[ARM::ModeThumb]))
  ------------------
  |  Branch (6608:7): [True: 12.6k, False: 35.9k]
  ------------------
 6609|  12.6k|    Features |= Feature_IsThumb;
 6610|  48.5k|  if ((FB[ARM::ModeThumb]) && (FB[ARM::FeatureThumb2]))
  ------------------
  |  Branch (6610:7): [True: 12.6k, False: 35.9k]
  |  Branch (6610:7): [True: 9.45k, False: 39.1k]
  |  Branch (6610:31): [True: 9.45k, False: 3.14k]
  ------------------
 6611|  9.45k|    Features |= Feature_IsThumb2;
 6612|  48.5k|  if ((FB[ARM::FeatureMClass]))
  ------------------
  |  Branch (6612:7): [True: 10.9k, False: 37.5k]
  ------------------
 6613|  10.9k|    Features |= Feature_IsMClass;
 6614|  48.5k|  if ((!FB[ARM::FeatureMClass]))
  ------------------
  |  Branch (6614:7): [True: 37.5k, False: 10.9k]
  ------------------
 6615|  37.5k|    Features |= Feature_IsNotMClass;
 6616|  48.5k|  if ((!FB[ARM::ModeThumb]))
  ------------------
  |  Branch (6616:7): [True: 35.9k, False: 12.6k]
  ------------------
 6617|  35.9k|    Features |= Feature_IsARM;
 6618|  48.5k|  if ((FB[ARM::FeatureNaClTrap]))
  ------------------
  |  Branch (6618:7): [True: 0, False: 48.5k]
  ------------------
 6619|      0|    Features |= Feature_UseNaClTrap;
 6620|  48.5k|  return Features;
 6621|  48.5k|}
ARMAsmParser.cpp:_ZL17MatchRegisterNameN7llvm_ks9StringRefE:
  108|  76.5k|static unsigned MatchRegisterName(StringRef Name) {
  109|  76.5k|  switch (Name.size()) {
  110|  11.5k|  default: break;
  ------------------
  |  Branch (110:3): [True: 11.5k, False: 64.9k]
  ------------------
  111|  40.5k|  case 2:	 // 43 strings to match.
  ------------------
  |  Branch (111:3): [True: 40.5k, False: 35.9k]
  ------------------
  112|  40.5k|    switch (Name[0]) {
  113|  24.3k|    default: break;
  ------------------
  |  Branch (113:5): [True: 24.3k, False: 16.1k]
  ------------------
  114|  24.3k|    case 'd':	 // 10 strings to match.
  ------------------
  |  Branch (114:5): [True: 2.44k, False: 38.1k]
  ------------------
  115|  2.44k|      switch (Name[1]) {
  116|  1.27k|      default: break;
  ------------------
  |  Branch (116:7): [True: 1.27k, False: 1.16k]
  ------------------
  117|  1.27k|      case '0':	 // 1 string to match.
  ------------------
  |  Branch (117:7): [True: 448, False: 1.99k]
  ------------------
  118|    448|        return 14;	 // "d0"
  119|    411|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (119:7): [True: 411, False: 2.02k]
  ------------------
  120|    411|        return 15;	 // "d1"
  121|     86|      case '2':	 // 1 string to match.
  ------------------
  |  Branch (121:7): [True: 86, False: 2.35k]
  ------------------
  122|     86|        return 16;	 // "d2"
  123|     32|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (123:7): [True: 32, False: 2.40k]
  ------------------
  124|     32|        return 17;	 // "d3"
  125|     34|      case '4':	 // 1 string to match.
  ------------------
  |  Branch (125:7): [True: 34, False: 2.40k]
  ------------------
  126|     34|        return 18;	 // "d4"
  127|     29|      case '5':	 // 1 string to match.
  ------------------
  |  Branch (127:7): [True: 29, False: 2.41k]
  ------------------
  128|     29|        return 19;	 // "d5"
  129|     47|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (129:7): [True: 47, False: 2.39k]
  ------------------
  130|     47|        return 20;	 // "d6"
  131|     26|      case '7':	 // 1 string to match.
  ------------------
  |  Branch (131:7): [True: 26, False: 2.41k]
  ------------------
  132|     26|        return 21;	 // "d7"
  133|     28|      case '8':	 // 1 string to match.
  ------------------
  |  Branch (133:7): [True: 28, False: 2.41k]
  ------------------
  134|     28|        return 22;	 // "d8"
  135|     27|      case '9':	 // 1 string to match.
  ------------------
  |  Branch (135:7): [True: 27, False: 2.41k]
  ------------------
  136|     27|        return 23;	 // "d9"
  137|  2.44k|      }
  138|  1.27k|      break;
  139|  1.27k|    case 'l':	 // 1 string to match.
  ------------------
  |  Branch (139:5): [True: 528, False: 40.0k]
  ------------------
  140|    528|      if (Name[1] != 'r')
  ------------------
  |  Branch (140:11): [True: 210, False: 318]
  ------------------
  141|    210|        break;
  142|    318|      return 10;	 // "lr"
  143|    196|    case 'p':	 // 1 string to match.
  ------------------
  |  Branch (143:5): [True: 196, False: 40.3k]
  ------------------
  144|    196|      if (Name[1] != 'c')
  ------------------
  |  Branch (144:11): [True: 128, False: 68]
  ------------------
  145|    128|        break;
  146|     68|      return 11;	 // "pc"
  147|  1.53k|    case 'q':	 // 10 strings to match.
  ------------------
  |  Branch (147:5): [True: 1.53k, False: 39.0k]
  ------------------
  148|  1.53k|      switch (Name[1]) {
  149|    714|      default: break;
  ------------------
  |  Branch (149:7): [True: 714, False: 822]
  ------------------
  150|    714|      case '0':	 // 1 string to match.
  ------------------
  |  Branch (150:7): [True: 118, False: 1.41k]
  ------------------
  151|    118|        return 50;	 // "q0"
  152|    150|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (152:7): [True: 150, False: 1.38k]
  ------------------
  153|    150|        return 51;	 // "q1"
  154|    242|      case '2':	 // 1 string to match.
  ------------------
  |  Branch (154:7): [True: 242, False: 1.29k]
  ------------------
  155|    242|        return 52;	 // "q2"
  156|     34|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (156:7): [True: 34, False: 1.50k]
  ------------------
  157|     34|        return 53;	 // "q3"
  158|     50|      case '4':	 // 1 string to match.
  ------------------
  |  Branch (158:7): [True: 50, False: 1.48k]
  ------------------
  159|     50|        return 54;	 // "q4"
  160|     39|      case '5':	 // 1 string to match.
  ------------------
  |  Branch (160:7): [True: 39, False: 1.49k]
  ------------------
  161|     39|        return 55;	 // "q5"
  162|     44|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (162:7): [True: 44, False: 1.49k]
  ------------------
  163|     44|        return 56;	 // "q6"
  164|     88|      case '7':	 // 1 string to match.
  ------------------
  |  Branch (164:7): [True: 88, False: 1.44k]
  ------------------
  165|     88|        return 57;	 // "q7"
  166|     33|      case '8':	 // 1 string to match.
  ------------------
  |  Branch (166:7): [True: 33, False: 1.50k]
  ------------------
  167|     33|        return 58;	 // "q8"
  168|     24|      case '9':	 // 1 string to match.
  ------------------
  |  Branch (168:7): [True: 24, False: 1.51k]
  ------------------
  169|     24|        return 59;	 // "q9"
  170|  1.53k|      }
  171|    714|      break;
  172|  8.46k|    case 'r':	 // 10 strings to match.
  ------------------
  |  Branch (172:5): [True: 8.46k, False: 32.1k]
  ------------------
  173|  8.46k|      switch (Name[1]) {
  174|  1.14k|      default: break;
  ------------------
  |  Branch (174:7): [True: 1.14k, False: 7.31k]
  ------------------
  175|  1.14k|      case '0':	 // 1 string to match.
  ------------------
  |  Branch (175:7): [True: 976, False: 7.48k]
  ------------------
  176|    976|        return 66;	 // "r0"
  177|  1.27k|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (177:7): [True: 1.27k, False: 7.18k]
  ------------------
  178|  1.27k|        return 67;	 // "r1"
  179|    439|      case '2':	 // 1 string to match.
  ------------------
  |  Branch (179:7): [True: 439, False: 8.02k]
  ------------------
  180|    439|        return 68;	 // "r2"
  181|  1.08k|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (181:7): [True: 1.08k, False: 7.37k]
  ------------------
  182|  1.08k|        return 69;	 // "r3"
  183|    231|      case '4':	 // 1 string to match.
  ------------------
  |  Branch (183:7): [True: 231, False: 8.22k]
  ------------------
  184|    231|        return 70;	 // "r4"
  185|    813|      case '5':	 // 1 string to match.
  ------------------
  |  Branch (185:7): [True: 813, False: 7.64k]
  ------------------
  186|    813|        return 71;	 // "r5"
  187|  1.89k|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (187:7): [True: 1.89k, False: 6.56k]
  ------------------
  188|  1.89k|        return 72;	 // "r6"
  189|    427|      case '7':	 // 1 string to match.
  ------------------
  |  Branch (189:7): [True: 427, False: 8.03k]
  ------------------
  190|    427|        return 73;	 // "r7"
  191|    100|      case '8':	 // 1 string to match.
  ------------------
  |  Branch (191:7): [True: 100, False: 8.36k]
  ------------------
  192|    100|        return 74;	 // "r8"
  193|     76|      case '9':	 // 1 string to match.
  ------------------
  |  Branch (193:7): [True: 76, False: 8.38k]
  ------------------
  194|     76|        return 75;	 // "r9"
  195|  8.46k|      }
  196|  1.14k|      break;
  197|  3.03k|    case 's':	 // 11 strings to match.
  ------------------
  |  Branch (197:5): [True: 3.03k, False: 37.5k]
  ------------------
  198|  3.03k|      switch (Name[1]) {
  199|    620|      default: break;
  ------------------
  |  Branch (199:7): [True: 620, False: 2.41k]
  ------------------
  200|    620|      case '0':	 // 1 string to match.
  ------------------
  |  Branch (200:7): [True: 413, False: 2.61k]
  ------------------
  201|    413|        return 79;	 // "s0"
  202|    150|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (202:7): [True: 150, False: 2.88k]
  ------------------
  203|    150|        return 80;	 // "s1"
  204|     57|      case '2':	 // 1 string to match.
  ------------------
  |  Branch (204:7): [True: 57, False: 2.97k]
  ------------------
  205|     57|        return 81;	 // "s2"
  206|    177|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (206:7): [True: 177, False: 2.85k]
  ------------------
  207|    177|        return 82;	 // "s3"
  208|     78|      case '4':	 // 1 string to match.
  ------------------
  |  Branch (208:7): [True: 78, False: 2.95k]
  ------------------
  209|     78|        return 83;	 // "s4"
  210|    183|      case '5':	 // 1 string to match.
  ------------------
  |  Branch (210:7): [True: 183, False: 2.84k]
  ------------------
  211|    183|        return 84;	 // "s5"
  212|    221|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (212:7): [True: 221, False: 2.81k]
  ------------------
  213|    221|        return 85;	 // "s6"
  214|     32|      case '7':	 // 1 string to match.
  ------------------
  |  Branch (214:7): [True: 32, False: 3.00k]
  ------------------
  215|     32|        return 86;	 // "s7"
  216|     60|      case '8':	 // 1 string to match.
  ------------------
  |  Branch (216:7): [True: 60, False: 2.97k]
  ------------------
  217|     60|        return 87;	 // "s8"
  218|     59|      case '9':	 // 1 string to match.
  ------------------
  |  Branch (218:7): [True: 59, False: 2.97k]
  ------------------
  219|     59|        return 88;	 // "s9"
  220|    982|      case 'p':	 // 1 string to match.
  ------------------
  |  Branch (220:7): [True: 982, False: 2.05k]
  ------------------
  221|    982|        return 12;	 // "sp"
  222|  3.03k|      }
  223|    620|      break;
  224|  40.5k|    }
  225|  28.4k|    break;
  226|  28.4k|  case 3:	 // 53 strings to match.
  ------------------
  |  Branch (226:3): [True: 12.0k, False: 64.4k]
  ------------------
  227|  12.0k|    switch (Name[0]) {
  228|  4.08k|    default: break;
  ------------------
  |  Branch (228:5): [True: 4.08k, False: 8.00k]
  ------------------
  229|  4.08k|    case 'd':	 // 22 strings to match.
  ------------------
  |  Branch (229:5): [True: 3.52k, False: 8.56k]
  ------------------
  230|  3.52k|      switch (Name[1]) {
  231|  2.20k|      default: break;
  ------------------
  |  Branch (231:7): [True: 2.20k, False: 1.31k]
  ------------------
  232|  2.20k|      case '1':	 // 10 strings to match.
  ------------------
  |  Branch (232:7): [True: 654, False: 2.87k]
  ------------------
  233|    654|        switch (Name[2]) {
  234|    502|        default: break;
  ------------------
  |  Branch (234:9): [True: 502, False: 152]
  ------------------
  235|    502|        case '0':	 // 1 string to match.
  ------------------
  |  Branch (235:9): [True: 17, False: 637]
  ------------------
  236|     17|          return 24;	 // "d10"
  237|     16|        case '1':	 // 1 string to match.
  ------------------
  |  Branch (237:9): [True: 16, False: 638]
  ------------------
  238|     16|          return 25;	 // "d11"
  239|     21|        case '2':	 // 1 string to match.
  ------------------
  |  Branch (239:9): [True: 21, False: 633]
  ------------------
  240|     21|          return 26;	 // "d12"
  241|     12|        case '3':	 // 1 string to match.
  ------------------
  |  Branch (241:9): [True: 12, False: 642]
  ------------------
  242|     12|          return 27;	 // "d13"
  243|     10|        case '4':	 // 1 string to match.
  ------------------
  |  Branch (243:9): [True: 10, False: 644]
  ------------------
  244|     10|          return 28;	 // "d14"
  245|     10|        case '5':	 // 1 string to match.
  ------------------
  |  Branch (245:9): [True: 10, False: 644]
  ------------------
  246|     10|          return 29;	 // "d15"
  247|      7|        case '6':	 // 1 string to match.
  ------------------
  |  Branch (247:9): [True: 7, False: 647]
  ------------------
  248|      7|          return 30;	 // "d16"
  249|      7|        case '7':	 // 1 string to match.
  ------------------
  |  Branch (249:9): [True: 7, False: 647]
  ------------------
  250|      7|          return 31;	 // "d17"
  251|     15|        case '8':	 // 1 string to match.
  ------------------
  |  Branch (251:9): [True: 15, False: 639]
  ------------------
  252|     15|          return 32;	 // "d18"
  253|     37|        case '9':	 // 1 string to match.
  ------------------
  |  Branch (253:9): [True: 37, False: 617]
  ------------------
  254|     37|          return 33;	 // "d19"
  255|    654|        }
  256|    502|        break;
  257|    502|      case '2':	 // 10 strings to match.
  ------------------
  |  Branch (257:7): [True: 365, False: 3.16k]
  ------------------
  258|    365|        switch (Name[2]) {
  259|    242|        default: break;
  ------------------
  |  Branch (259:9): [True: 242, False: 123]
  ------------------
  260|    242|        case '0':	 // 1 string to match.
  ------------------
  |  Branch (260:9): [True: 6, False: 359]
  ------------------
  261|      6|          return 34;	 // "d20"
  262|      6|        case '1':	 // 1 string to match.
  ------------------
  |  Branch (262:9): [True: 6, False: 359]
  ------------------
  263|      6|          return 35;	 // "d21"
  264|     12|        case '2':	 // 1 string to match.
  ------------------
  |  Branch (264:9): [True: 12, False: 353]
  ------------------
  265|     12|          return 36;	 // "d22"
  266|      8|        case '3':	 // 1 string to match.
  ------------------
  |  Branch (266:9): [True: 8, False: 357]
  ------------------
  267|      8|          return 37;	 // "d23"
  268|      9|        case '4':	 // 1 string to match.
  ------------------
  |  Branch (268:9): [True: 9, False: 356]
  ------------------
  269|      9|          return 38;	 // "d24"
  270|     11|        case '5':	 // 1 string to match.
  ------------------
  |  Branch (270:9): [True: 11, False: 354]
  ------------------
  271|     11|          return 39;	 // "d25"
  272|     14|        case '6':	 // 1 string to match.
  ------------------
  |  Branch (272:9): [True: 14, False: 351]
  ------------------
  273|     14|          return 40;	 // "d26"
  274|     10|        case '7':	 // 1 string to match.
  ------------------
  |  Branch (274:9): [True: 10, False: 355]
  ------------------
  275|     10|          return 41;	 // "d27"
  276|     34|        case '8':	 // 1 string to match.
  ------------------
  |  Branch (276:9): [True: 34, False: 331]
  ------------------
  277|     34|          return 42;	 // "d28"
  278|     13|        case '9':	 // 1 string to match.
  ------------------
  |  Branch (278:9): [True: 13, False: 352]
  ------------------
  279|     13|          return 43;	 // "d29"
  280|    365|        }
  281|    242|        break;
  282|    300|      case '3':	 // 2 strings to match.
  ------------------
  |  Branch (282:7): [True: 300, False: 3.22k]
  ------------------
  283|    300|        switch (Name[2]) {
  284|    262|        default: break;
  ------------------
  |  Branch (284:9): [True: 262, False: 38]
  ------------------
  285|    262|        case '0':	 // 1 string to match.
  ------------------
  |  Branch (285:9): [True: 34, False: 266]
  ------------------
  286|     34|          return 44;	 // "d30"
  287|      4|        case '1':	 // 1 string to match.
  ------------------
  |  Branch (287:9): [True: 4, False: 296]
  ------------------
  288|      4|          return 45;	 // "d31"
  289|    300|        }
  290|    262|        break;
  291|  3.52k|      }
  292|  3.21k|      break;
  293|  3.21k|    case 'q':	 // 6 strings to match.
  ------------------
  |  Branch (293:5): [True: 516, False: 11.5k]
  ------------------
  294|    516|      if (Name[1] != '1')
  ------------------
  |  Branch (294:11): [True: 159, False: 357]
  ------------------
  295|    159|        break;
  296|    357|      switch (Name[2]) {
  297|    134|      default: break;
  ------------------
  |  Branch (297:7): [True: 134, False: 223]
  ------------------
  298|    134|      case '0':	 // 1 string to match.
  ------------------
  |  Branch (298:7): [True: 32, False: 325]
  ------------------
  299|     32|        return 60;	 // "q10"
  300|     38|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (300:7): [True: 38, False: 319]
  ------------------
  301|     38|        return 61;	 // "q11"
  302|     50|      case '2':	 // 1 string to match.
  ------------------
  |  Branch (302:7): [True: 50, False: 307]
  ------------------
  303|     50|        return 62;	 // "q12"
  304|     55|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (304:7): [True: 55, False: 302]
  ------------------
  305|     55|        return 63;	 // "q13"
  306|     13|      case '4':	 // 1 string to match.
  ------------------
  |  Branch (306:7): [True: 13, False: 344]
  ------------------
  307|     13|        return 64;	 // "q14"
  308|     35|      case '5':	 // 1 string to match.
  ------------------
  |  Branch (308:7): [True: 35, False: 322]
  ------------------
  309|     35|        return 65;	 // "q15"
  310|    357|      }
  311|    134|      break;
  312|  2.15k|    case 'r':	 // 3 strings to match.
  ------------------
  |  Branch (312:5): [True: 2.15k, False: 9.93k]
  ------------------
  313|  2.15k|      if (Name[1] != '1')
  ------------------
  |  Branch (313:11): [True: 618, False: 1.53k]
  ------------------
  314|    618|        break;
  315|  1.53k|      switch (Name[2]) {
  316|  1.40k|      default: break;
  ------------------
  |  Branch (316:7): [True: 1.40k, False: 138]
  ------------------
  317|  1.40k|      case '0':	 // 1 string to match.
  ------------------
  |  Branch (317:7): [True: 19, False: 1.52k]
  ------------------
  318|     19|        return 76;	 // "r10"
  319|     74|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (319:7): [True: 74, False: 1.46k]
  ------------------
  320|     74|        return 77;	 // "r11"
  321|     45|      case '2':	 // 1 string to match.
  ------------------
  |  Branch (321:7): [True: 45, False: 1.49k]
  ------------------
  322|     45|        return 78;	 // "r12"
  323|  1.53k|      }
  324|  1.40k|      break;
  325|  1.80k|    case 's':	 // 22 strings to match.
  ------------------
  |  Branch (325:5): [True: 1.80k, False: 10.2k]
  ------------------
  326|  1.80k|      switch (Name[1]) {
  327|    902|      default: break;
  ------------------
  |  Branch (327:7): [True: 902, False: 899]
  ------------------
  328|    902|      case '1':	 // 10 strings to match.
  ------------------
  |  Branch (328:7): [True: 303, False: 1.49k]
  ------------------
  329|    303|        switch (Name[2]) {
  330|    134|        default: break;
  ------------------
  |  Branch (330:9): [True: 134, False: 169]
  ------------------
  331|    134|        case '0':	 // 1 string to match.
  ------------------
  |  Branch (331:9): [True: 4, False: 299]
  ------------------
  332|      4|          return 89;	 // "s10"
  333|     17|        case '1':	 // 1 string to match.
  ------------------
  |  Branch (333:9): [True: 17, False: 286]
  ------------------
  334|     17|          return 90;	 // "s11"
  335|     13|        case '2':	 // 1 string to match.
  ------------------
  |  Branch (335:9): [True: 13, False: 290]
  ------------------
  336|     13|          return 91;	 // "s12"
  337|    100|        case '3':	 // 1 string to match.
  ------------------
  |  Branch (337:9): [True: 100, False: 203]
  ------------------
  338|    100|          return 92;	 // "s13"
  339|      9|        case '4':	 // 1 string to match.
  ------------------
  |  Branch (339:9): [True: 9, False: 294]
  ------------------
  340|      9|          return 93;	 // "s14"
  341|      5|        case '5':	 // 1 string to match.
  ------------------
  |  Branch (341:9): [True: 5, False: 298]
  ------------------
  342|      5|          return 94;	 // "s15"
  343|      6|        case '6':	 // 1 string to match.
  ------------------
  |  Branch (343:9): [True: 6, False: 297]
  ------------------
  344|      6|          return 95;	 // "s16"
  345|      7|        case '7':	 // 1 string to match.
  ------------------
  |  Branch (345:9): [True: 7, False: 296]
  ------------------
  346|      7|          return 96;	 // "s17"
  347|      1|        case '8':	 // 1 string to match.
  ------------------
  |  Branch (347:9): [True: 1, False: 302]
  ------------------
  348|      1|          return 97;	 // "s18"
  349|      7|        case '9':	 // 1 string to match.
  ------------------
  |  Branch (349:9): [True: 7, False: 296]
  ------------------
  350|      7|          return 98;	 // "s19"
  351|    303|        }
  352|    134|        break;
  353|    460|      case '2':	 // 10 strings to match.
  ------------------
  |  Branch (353:7): [True: 460, False: 1.34k]
  ------------------
  354|    460|        switch (Name[2]) {
  355|    340|        default: break;
  ------------------
  |  Branch (355:9): [True: 340, False: 120]
  ------------------
  356|    340|        case '0':	 // 1 string to match.
  ------------------
  |  Branch (356:9): [True: 5, False: 455]
  ------------------
  357|      5|          return 99;	 // "s20"
  358|      8|        case '1':	 // 1 string to match.
  ------------------
  |  Branch (358:9): [True: 8, False: 452]
  ------------------
  359|      8|          return 100;	 // "s21"
  360|     13|        case '2':	 // 1 string to match.
  ------------------
  |  Branch (360:9): [True: 13, False: 447]
  ------------------
  361|     13|          return 101;	 // "s22"
  362|     22|        case '3':	 // 1 string to match.
  ------------------
  |  Branch (362:9): [True: 22, False: 438]
  ------------------
  363|     22|          return 102;	 // "s23"
  364|      7|        case '4':	 // 1 string to match.
  ------------------
  |  Branch (364:9): [True: 7, False: 453]
  ------------------
  365|      7|          return 103;	 // "s24"
  366|     22|        case '5':	 // 1 string to match.
  ------------------
  |  Branch (366:9): [True: 22, False: 438]
  ------------------
  367|     22|          return 104;	 // "s25"
  368|      8|        case '6':	 // 1 string to match.
  ------------------
  |  Branch (368:9): [True: 8, False: 452]
  ------------------
  369|      8|          return 105;	 // "s26"
  370|     11|        case '7':	 // 1 string to match.
  ------------------
  |  Branch (370:9): [True: 11, False: 449]
  ------------------
  371|     11|          return 106;	 // "s27"
  372|     12|        case '8':	 // 1 string to match.
  ------------------
  |  Branch (372:9): [True: 12, False: 448]
  ------------------
  373|     12|          return 107;	 // "s28"
  374|     12|        case '9':	 // 1 string to match.
  ------------------
  |  Branch (374:9): [True: 12, False: 448]
  ------------------
  375|     12|          return 108;	 // "s29"
  376|    460|        }
  377|    340|        break;
  378|    340|      case '3':	 // 2 strings to match.
  ------------------
  |  Branch (378:7): [True: 136, False: 1.66k]
  ------------------
  379|    136|        switch (Name[2]) {
  380|    113|        default: break;
  ------------------
  |  Branch (380:9): [True: 113, False: 23]
  ------------------
  381|    113|        case '0':	 // 1 string to match.
  ------------------
  |  Branch (381:9): [True: 10, False: 126]
  ------------------
  382|     10|          return 109;	 // "s30"
  383|     13|        case '1':	 // 1 string to match.
  ------------------
  |  Branch (383:9): [True: 13, False: 123]
  ------------------
  384|     13|          return 110;	 // "s31"
  385|    136|        }
  386|    113|        break;
  387|  1.80k|      }
  388|  1.48k|      break;
  389|  12.0k|    }
  390|  11.1k|    break;
  391|  11.1k|  case 4:	 // 3 strings to match.
  ------------------
  |  Branch (391:3): [True: 5.32k, False: 71.1k]
  ------------------
  392|  5.32k|    switch (Name[0]) {
  393|  4.53k|    default: break;
  ------------------
  |  Branch (393:5): [True: 4.53k, False: 789]
  ------------------
  394|  4.53k|    case 'a':	 // 1 string to match.
  ------------------
  |  Branch (394:5): [True: 202, False: 5.12k]
  ------------------
  395|    202|      if (memcmp(Name.data()+1, "psr", 3))
  ------------------
  |  Branch (395:11): [True: 181, False: 21]
  ------------------
  396|    181|        break;
  397|     21|      return 1;	 // "apsr"
  398|     99|    case 'c':	 // 1 string to match.
  ------------------
  |  Branch (398:5): [True: 99, False: 5.22k]
  ------------------
  399|     99|      if (memcmp(Name.data()+1, "psr", 3))
  ------------------
  |  Branch (399:11): [True: 88, False: 11]
  ------------------
  400|     88|        break;
  401|     11|      return 3;	 // "cpsr"
  402|    488|    case 's':	 // 1 string to match.
  ------------------
  |  Branch (402:5): [True: 488, False: 4.83k]
  ------------------
  403|    488|      if (memcmp(Name.data()+1, "psr", 3))
  ------------------
  |  Branch (403:11): [True: 486, False: 2]
  ------------------
  404|    486|        break;
  405|      2|      return 13;	 // "spsr"
  406|  5.32k|    }
  407|  5.29k|    break;
  408|  5.29k|  case 5:	 // 6 strings to match.
  ------------------
  |  Branch (408:3): [True: 3.09k, False: 73.4k]
  ------------------
  409|  3.09k|    switch (Name[0]) {
  410|  1.90k|    default: break;
  ------------------
  |  Branch (410:5): [True: 1.90k, False: 1.19k]
  ------------------
  411|  1.90k|    case 'f':	 // 3 strings to match.
  ------------------
  |  Branch (411:5): [True: 1.11k, False: 1.98k]
  ------------------
  412|  1.11k|      if (Name[1] != 'p')
  ------------------
  |  Branch (412:11): [True: 170, False: 944]
  ------------------
  413|    170|        break;
  414|    944|      switch (Name[2]) {
  415|    370|      default: break;
  ------------------
  |  Branch (415:7): [True: 370, False: 574]
  ------------------
  416|    370|      case 'e':	 // 1 string to match.
  ------------------
  |  Branch (416:7): [True: 264, False: 680]
  ------------------
  417|    264|        if (memcmp(Name.data()+3, "xc", 2))
  ------------------
  |  Branch (417:13): [True: 181, False: 83]
  ------------------
  418|    181|          break;
  419|     83|        return 4;	 // "fpexc"
  420|    310|      case 's':	 // 2 strings to match.
  ------------------
  |  Branch (420:7): [True: 310, False: 634]
  ------------------
  421|    310|        switch (Name[3]) {
  422|    107|        default: break;
  ------------------
  |  Branch (422:9): [True: 107, False: 203]
  ------------------
  423|    112|        case 'c':	 // 1 string to match.
  ------------------
  |  Branch (423:9): [True: 112, False: 198]
  ------------------
  424|    112|          if (Name[4] != 'r')
  ------------------
  |  Branch (424:15): [True: 87, False: 25]
  ------------------
  425|     87|            break;
  426|     25|          return 6;	 // "fpscr"
  427|     91|        case 'i':	 // 1 string to match.
  ------------------
  |  Branch (427:9): [True: 91, False: 219]
  ------------------
  428|     91|          if (Name[4] != 'd')
  ------------------
  |  Branch (428:15): [True: 79, False: 12]
  ------------------
  429|     79|            break;
  430|     12|          return 8;	 // "fpsid"
  431|    310|        }
  432|    273|        break;
  433|    944|      }
  434|    824|      break;
  435|    824|    case 'm':	 // 3 strings to match.
  ------------------
  |  Branch (435:5): [True: 81, False: 3.01k]
  ------------------
  436|     81|      if (memcmp(Name.data()+1, "vfr", 3))
  ------------------
  |  Branch (436:11): [True: 79, False: 2]
  ------------------
  437|     79|        break;
  438|      2|      switch (Name[4]) {
  439|      1|      default: break;
  ------------------
  |  Branch (439:7): [True: 1, False: 1]
  ------------------
  440|      1|      case '0':	 // 1 string to match.
  ------------------
  |  Branch (440:7): [True: 0, False: 2]
  ------------------
  441|      0|        return 47;	 // "mvfr0"
  442|      1|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (442:7): [True: 1, False: 1]
  ------------------
  443|      1|        return 48;	 // "mvfr1"
  444|      0|      case '2':	 // 1 string to match.
  ------------------
  |  Branch (444:7): [True: 0, False: 2]
  ------------------
  445|      0|        return 49;	 // "mvfr2"
  446|      2|      }
  447|      1|      break;
  448|  3.09k|    }
  449|  2.97k|    break;
  450|  2.97k|  case 6:	 // 1 string to match.
  ------------------
  |  Branch (450:3): [True: 2.32k, False: 74.2k]
  ------------------
  451|  2.32k|    if (memcmp(Name.data()+0, "fpinst", 6))
  ------------------
  |  Branch (451:9): [True: 2.32k, False: 1]
  ------------------
  452|  2.32k|      break;
  453|      1|    return 5;	 // "fpinst"
  454|    732|  case 7:	 // 2 strings to match.
  ------------------
  |  Branch (454:3): [True: 732, False: 75.7k]
  ------------------
  455|    732|    switch (Name[0]) {
  456|    419|    default: break;
  ------------------
  |  Branch (456:5): [True: 419, False: 313]
  ------------------
  457|    419|    case 'f':	 // 1 string to match.
  ------------------
  |  Branch (457:5): [True: 207, False: 525]
  ------------------
  458|    207|      if (memcmp(Name.data()+1, "pinst2", 6))
  ------------------
  |  Branch (458:11): [True: 197, False: 10]
  ------------------
  459|    197|        break;
  460|     10|      return 46;	 // "fpinst2"
  461|    106|    case 'i':	 // 1 string to match.
  ------------------
  |  Branch (461:5): [True: 106, False: 626]
  ------------------
  462|    106|      if (memcmp(Name.data()+1, "tstate", 6))
  ------------------
  |  Branch (462:11): [True: 94, False: 12]
  ------------------
  463|     94|        break;
  464|     12|      return 9;	 // "itstate"
  465|    732|    }
  466|    710|    break;
  467|    710|  case 9:	 // 1 string to match.
  ------------------
  |  Branch (467:3): [True: 394, False: 76.1k]
  ------------------
  468|    394|    if (memcmp(Name.data()+0, "apsr_nzcv", 9))
  ------------------
  |  Branch (468:9): [True: 349, False: 45]
  ------------------
  469|    349|      break;
  470|     45|    return 2;	 // "apsr_nzcv"
  471|    426|  case 10:	 // 1 string to match.
  ------------------
  |  Branch (471:3): [True: 426, False: 76.0k]
  ------------------
  472|    426|    if (memcmp(Name.data()+0, "fpscr_nzcv", 10))
  ------------------
  |  Branch (472:9): [True: 426, False: 0]
  ------------------
  473|    426|      break;
  474|      0|    return 7;	 // "fpscr_nzcv"
  475|  76.5k|  }
  476|  63.2k|  return 0;
  477|  76.5k|}
ARMAsmParser.cpp:_ZL20applyMnemonicAliasesRN7llvm_ks9StringRefEmj:
  485|  86.9k|static void applyMnemonicAliases(StringRef &Mnemonic, uint64_t Features, unsigned VariantID) {
  486|  86.9k|  switch (VariantID) {
  ------------------
  |  Branch (486:11): [True: 86.9k, False: 0]
  ------------------
  487|  86.9k|    case 0:
  ------------------
  |  Branch (487:5): [True: 86.9k, False: 0]
  ------------------
  488|  86.9k|    break;
  489|  86.9k|  }
  490|  86.9k|  switch (Mnemonic.size()) {
  491|  26.5k|  default: break;
  ------------------
  |  Branch (491:3): [True: 26.5k, False: 60.3k]
  ------------------
  492|  40.8k|  case 3:	 // 4 strings to match.
  ------------------
  |  Branch (492:3): [True: 40.8k, False: 46.1k]
  ------------------
  493|  40.8k|    switch (Mnemonic[0]) {
  494|  37.5k|    default: break;
  ------------------
  |  Branch (494:5): [True: 37.5k, False: 3.25k]
  ------------------
  495|  37.5k|    case 'r':	 // 1 string to match.
  ------------------
  |  Branch (495:5): [True: 1.35k, False: 39.4k]
  ------------------
  496|  1.35k|      if (memcmp(Mnemonic.data()+1, "fe", 2))
  ------------------
  |  Branch (496:11): [True: 1.21k, False: 140]
  ------------------
  497|  1.21k|        break;
  498|    140|      Mnemonic = "rfeia";	 // "rfe"
  499|    140|      return;
  500|  1.90k|    case 's':	 // 3 strings to match.
  ------------------
  |  Branch (500:5): [True: 1.90k, False: 38.9k]
  ------------------
  501|  1.90k|      switch (Mnemonic[1]) {
  502|  1.60k|      default: break;
  ------------------
  |  Branch (502:7): [True: 1.60k, False: 299]
  ------------------
  503|  1.60k|      case 'm':	 // 1 string to match.
  ------------------
  |  Branch (503:7): [True: 87, False: 1.81k]
  ------------------
  504|     87|        if (Mnemonic[2] != 'i')
  ------------------
  |  Branch (504:13): [True: 85, False: 2]
  ------------------
  505|     85|          break;
  506|      2|        Mnemonic = "smc";	 // "smi"
  507|      2|        return;
  508|    177|      case 'r':	 // 1 string to match.
  ------------------
  |  Branch (508:7): [True: 177, False: 1.72k]
  ------------------
  509|    177|        if (Mnemonic[2] != 's')
  ------------------
  |  Branch (509:13): [True: 23, False: 154]
  ------------------
  510|     23|          break;
  511|    154|        Mnemonic = "srsia";	 // "srs"
  512|    154|        return;
  513|     35|      case 'w':	 // 1 string to match.
  ------------------
  |  Branch (513:7): [True: 35, False: 1.86k]
  ------------------
  514|     35|        if (Mnemonic[2] != 'i')
  ------------------
  |  Branch (514:13): [True: 8, False: 27]
  ------------------
  515|      8|          break;
  516|     27|        Mnemonic = "svc";	 // "swi"
  517|     27|        return;
  518|  1.90k|      }
  519|  1.71k|      break;
  520|  40.8k|    }
  521|  40.5k|    break;
  522|  40.5k|  case 4:	 // 10 strings to match.
  ------------------
  |  Branch (522:3): [True: 12.5k, False: 74.4k]
  ------------------
  523|  12.5k|    switch (Mnemonic[0]) {
  524|  10.2k|    default: break;
  ------------------
  |  Branch (524:5): [True: 10.2k, False: 2.24k]
  ------------------
  525|  10.2k|    case 'f':	 // 8 strings to match.
  ------------------
  |  Branch (525:5): [True: 771, False: 11.7k]
  ------------------
  526|    771|      switch (Mnemonic[1]) {
  527|     39|      default: break;
  ------------------
  |  Branch (527:7): [True: 39, False: 732]
  ------------------
  528|    385|      case 'l':	 // 2 strings to match.
  ------------------
  |  Branch (528:7): [True: 385, False: 386]
  ------------------
  529|    385|        if (Mnemonic[2] != 'd')
  ------------------
  |  Branch (529:13): [True: 184, False: 201]
  ------------------
  530|    184|          break;
  531|    201|        switch (Mnemonic[3]) {
  532|     17|        default: break;
  ------------------
  |  Branch (532:9): [True: 17, False: 184]
  ------------------
  533|    171|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (533:9): [True: 171, False: 30]
  ------------------
  534|    171|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldd"
  ------------------
  |  Branch (534:15): [True: 168, False: 3]
  ------------------
  535|    168|            Mnemonic = "vldr";
  536|    171|          return;
  537|     13|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (537:9): [True: 13, False: 188]
  ------------------
  538|     13|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "flds"
  ------------------
  |  Branch (538:15): [True: 10, False: 3]
  ------------------
  539|     10|            Mnemonic = "vldr";
  540|     13|          return;
  541|    201|        }
  542|     17|        break;
  543|    236|      case 'm':	 // 4 strings to match.
  ------------------
  |  Branch (543:7): [True: 236, False: 535]
  ------------------
  544|    236|        switch (Mnemonic[2]) {
  545|      7|        default: break;
  ------------------
  |  Branch (545:9): [True: 7, False: 229]
  ------------------
  546|    147|        case 'r':	 // 2 strings to match.
  ------------------
  |  Branch (546:9): [True: 147, False: 89]
  ------------------
  547|    147|          switch (Mnemonic[3]) {
  548|     14|          default: break;
  ------------------
  |  Branch (548:11): [True: 14, False: 133]
  ------------------
  549|    100|          case 's':	 // 1 string to match.
  ------------------
  |  Branch (549:11): [True: 100, False: 47]
  ------------------
  550|    100|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmrs"
  ------------------
  |  Branch (550:17): [True: 97, False: 3]
  ------------------
  551|     97|              Mnemonic = "vmov";
  552|    100|            return;
  553|     33|          case 'x':	 // 1 string to match.
  ------------------
  |  Branch (553:11): [True: 33, False: 114]
  ------------------
  554|     33|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmrx"
  ------------------
  |  Branch (554:17): [True: 27, False: 6]
  ------------------
  555|     27|              Mnemonic = "vmrs";
  556|     33|            return;
  557|    147|          }
  558|     14|          break;
  559|     49|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (559:9): [True: 49, False: 187]
  ------------------
  560|     49|          if (Mnemonic[3] != 'r')
  ------------------
  |  Branch (560:15): [True: 3, False: 46]
  ------------------
  561|      3|            break;
  562|     46|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmsr"
  ------------------
  |  Branch (562:15): [True: 43, False: 3]
  ------------------
  563|     43|            Mnemonic = "vmov";
  564|     46|          return;
  565|     33|        case 'x':	 // 1 string to match.
  ------------------
  |  Branch (565:9): [True: 33, False: 203]
  ------------------
  566|     33|          if (Mnemonic[3] != 'r')
  ------------------
  |  Branch (566:15): [True: 15, False: 18]
  ------------------
  567|     15|            break;
  568|     18|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmxr"
  ------------------
  |  Branch (568:15): [True: 12, False: 6]
  ------------------
  569|     12|            Mnemonic = "vmsr";
  570|     18|          return;
  571|    236|        }
  572|     39|        break;
  573|    111|      case 's':	 // 2 strings to match.
  ------------------
  |  Branch (573:7): [True: 111, False: 660]
  ------------------
  574|    111|        if (Mnemonic[2] != 't')
  ------------------
  |  Branch (574:13): [True: 19, False: 92]
  ------------------
  575|     19|          break;
  576|     92|        switch (Mnemonic[3]) {
  577|      5|        default: break;
  ------------------
  |  Branch (577:9): [True: 5, False: 87]
  ------------------
  578|     40|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (578:9): [True: 40, False: 52]
  ------------------
  579|     40|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstd"
  ------------------
  |  Branch (579:15): [True: 29, False: 11]
  ------------------
  580|     29|            Mnemonic = "vstr";
  581|     40|          return;
  582|     47|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (582:9): [True: 47, False: 45]
  ------------------
  583|     47|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fsts"
  ------------------
  |  Branch (583:15): [True: 44, False: 3]
  ------------------
  584|     44|            Mnemonic = "vstr";
  585|     47|          return;
  586|     92|        }
  587|      5|        break;
  588|    771|      }
  589|    303|      break;
  590|  1.47k|    case 'v':	 // 2 strings to match.
  ------------------
  |  Branch (590:5): [True: 1.47k, False: 11.0k]
  ------------------
  591|  1.47k|      switch (Mnemonic[1]) {
  592|    901|      default: break;
  ------------------
  |  Branch (592:7): [True: 901, False: 573]
  ------------------
  593|    901|      case 'l':	 // 1 string to match.
  ------------------
  |  Branch (593:7): [True: 328, False: 1.14k]
  ------------------
  594|    328|        if (memcmp(Mnemonic.data()+2, "dm", 2))
  ------------------
  |  Branch (594:13): [True: 326, False: 2]
  ------------------
  595|    326|          break;
  596|      2|        Mnemonic = "vldmia";	 // "vldm"
  597|      2|        return;
  598|    245|      case 's':	 // 1 string to match.
  ------------------
  |  Branch (598:7): [True: 245, False: 1.22k]
  ------------------
  599|    245|        if (memcmp(Mnemonic.data()+2, "tm", 2))
  ------------------
  |  Branch (599:13): [True: 243, False: 2]
  ------------------
  600|    243|          break;
  601|      2|        Mnemonic = "vstmia";	 // "vstm"
  602|      2|        return;
  603|  1.47k|      }
  604|  1.47k|      break;
  605|  12.5k|    }
  606|  12.0k|    break;
  607|  12.0k|  case 5:	 // 51 strings to match.
  ------------------
  |  Branch (607:3): [True: 3.28k, False: 83.6k]
  ------------------
  608|  3.28k|    switch (Mnemonic[0]) {
  609|    980|    default: break;
  ------------------
  |  Branch (609:5): [True: 980, False: 2.30k]
  ------------------
  610|    980|    case 'f':	 // 18 strings to match.
  ------------------
  |  Branch (610:5): [True: 406, False: 2.87k]
  ------------------
  611|    406|      switch (Mnemonic[1]) {
  612|     63|      default: break;
  ------------------
  |  Branch (612:7): [True: 63, False: 343]
  ------------------
  613|     63|      case 'a':	 // 2 strings to match.
  ------------------
  |  Branch (613:7): [True: 20, False: 386]
  ------------------
  614|     20|        if (memcmp(Mnemonic.data()+2, "dd", 2))
  ------------------
  |  Branch (614:13): [True: 12, False: 8]
  ------------------
  615|     12|          break;
  616|      8|        switch (Mnemonic[4]) {
  617|      3|        default: break;
  ------------------
  |  Branch (617:9): [True: 3, False: 5]
  ------------------
  618|      4|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (618:9): [True: 4, False: 4]
  ------------------
  619|      4|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "faddd"
  ------------------
  |  Branch (619:15): [True: 1, False: 3]
  ------------------
  620|      1|            Mnemonic = "vadd.f64";
  621|      4|          return;
  622|      1|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (622:9): [True: 1, False: 7]
  ------------------
  623|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fadds"
  ------------------
  |  Branch (623:15): [True: 1, False: 0]
  ------------------
  624|      1|            Mnemonic = "vadd.f32";
  625|      1|          return;
  626|      8|        }
  627|      3|        break;
  628|    196|      case 'c':	 // 4 strings to match.
  ------------------
  |  Branch (628:7): [True: 196, False: 210]
  ------------------
  629|    196|        switch (Mnemonic[2]) {
  630|      6|        default: break;
  ------------------
  |  Branch (630:9): [True: 6, False: 190]
  ------------------
  631|      8|        case 'm':	 // 2 strings to match.
  ------------------
  |  Branch (631:9): [True: 8, False: 188]
  ------------------
  632|      8|          if (Mnemonic[3] != 'p')
  ------------------
  |  Branch (632:15): [True: 3, False: 5]
  ------------------
  633|      3|            break;
  634|      5|          switch (Mnemonic[4]) {
  635|      3|          default: break;
  ------------------
  |  Branch (635:11): [True: 3, False: 2]
  ------------------
  636|      3|          case 'd':	 // 1 string to match.
  ------------------
  |  Branch (636:11): [True: 1, False: 4]
  ------------------
  637|      1|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fcmpd"
  ------------------
  |  Branch (637:17): [True: 1, False: 0]
  ------------------
  638|      1|              Mnemonic = "vcmp.f64";
  639|      1|            return;
  640|      1|          case 's':	 // 1 string to match.
  ------------------
  |  Branch (640:11): [True: 1, False: 4]
  ------------------
  641|      1|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fcmps"
  ------------------
  |  Branch (641:17): [True: 1, False: 0]
  ------------------
  642|      1|              Mnemonic = "vcmp.f32";
  643|      1|            return;
  644|      5|          }
  645|      3|          break;
  646|    182|        case 'p':	 // 2 strings to match.
  ------------------
  |  Branch (646:9): [True: 182, False: 14]
  ------------------
  647|    182|          if (Mnemonic[3] != 'y')
  ------------------
  |  Branch (647:15): [True: 17, False: 165]
  ------------------
  648|     17|            break;
  649|    165|          switch (Mnemonic[4]) {
  650|      3|          default: break;
  ------------------
  |  Branch (650:11): [True: 3, False: 162]
  ------------------
  651|     33|          case 'd':	 // 1 string to match.
  ------------------
  |  Branch (651:11): [True: 33, False: 132]
  ------------------
  652|     33|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fcpyd"
  ------------------
  |  Branch (652:17): [True: 30, False: 3]
  ------------------
  653|     30|              Mnemonic = "vmov.f64";
  654|     33|            return;
  655|    129|          case 's':	 // 1 string to match.
  ------------------
  |  Branch (655:11): [True: 129, False: 36]
  ------------------
  656|    129|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fcpys"
  ------------------
  |  Branch (656:17): [True: 126, False: 3]
  ------------------
  657|    126|              Mnemonic = "vmov.f32";
  658|    129|            return;
  659|    165|          }
  660|      3|          break;
  661|    196|        }
  662|     32|        break;
  663|     32|      case 'd':	 // 2 strings to match.
  ------------------
  |  Branch (663:7): [True: 24, False: 382]
  ------------------
  664|     24|        if (memcmp(Mnemonic.data()+2, "iv", 2))
  ------------------
  |  Branch (664:13): [True: 15, False: 9]
  ------------------
  665|     15|          break;
  666|      9|        switch (Mnemonic[4]) {
  667|      3|        default: break;
  ------------------
  |  Branch (667:9): [True: 3, False: 6]
  ------------------
  668|      4|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (668:9): [True: 4, False: 5]
  ------------------
  669|      4|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fdivd"
  ------------------
  |  Branch (669:15): [True: 1, False: 3]
  ------------------
  670|      1|            Mnemonic = "vdiv.f64";
  671|      4|          return;
  672|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (672:9): [True: 2, False: 7]
  ------------------
  673|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fdivs"
  ------------------
  |  Branch (673:15): [True: 1, False: 1]
  ------------------
  674|      1|            Mnemonic = "vdiv.f32";
  675|      2|          return;
  676|      9|        }
  677|      3|        break;
  678|     94|      case 'm':	 // 8 strings to match.
  ------------------
  |  Branch (678:7): [True: 94, False: 312]
  ------------------
  679|     94|        switch (Mnemonic[2]) {
  680|      8|        default: break;
  ------------------
  |  Branch (680:9): [True: 8, False: 86]
  ------------------
  681|     15|        case 'a':	 // 2 strings to match.
  ------------------
  |  Branch (681:9): [True: 15, False: 79]
  ------------------
  682|     15|          if (Mnemonic[3] != 'c')
  ------------------
  |  Branch (682:15): [True: 7, False: 8]
  ------------------
  683|      7|            break;
  684|      8|          switch (Mnemonic[4]) {
  685|      3|          default: break;
  ------------------
  |  Branch (685:11): [True: 3, False: 5]
  ------------------
  686|      4|          case 'd':	 // 1 string to match.
  ------------------
  |  Branch (686:11): [True: 4, False: 4]
  ------------------
  687|      4|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmacd"
  ------------------
  |  Branch (687:17): [True: 1, False: 3]
  ------------------
  688|      1|              Mnemonic = "vmla.f64";
  689|      4|            return;
  690|      1|          case 's':	 // 1 string to match.
  ------------------
  |  Branch (690:11): [True: 1, False: 7]
  ------------------
  691|      1|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmacs"
  ------------------
  |  Branch (691:17): [True: 1, False: 0]
  ------------------
  692|      1|              Mnemonic = "vmla.f32";
  693|      1|            return;
  694|      8|          }
  695|      3|          break;
  696|      7|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (696:9): [True: 7, False: 87]
  ------------------
  697|      7|          if (memcmp(Mnemonic.data()+3, "rr", 2))
  ------------------
  |  Branch (697:15): [True: 4, False: 3]
  ------------------
  698|      4|            break;
  699|      3|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmdrr"
  ------------------
  |  Branch (699:15): [True: 1, False: 2]
  ------------------
  700|      1|            Mnemonic = "vmov";
  701|      3|          return;
  702|     52|        case 'r':	 // 3 strings to match.
  ------------------
  |  Branch (702:9): [True: 52, False: 42]
  ------------------
  703|     52|          switch (Mnemonic[3]) {
  704|      4|          default: break;
  ------------------
  |  Branch (704:11): [True: 4, False: 48]
  ------------------
  705|     20|          case 'd':	 // 2 strings to match.
  ------------------
  |  Branch (705:11): [True: 20, False: 32]
  ------------------
  706|     20|            switch (Mnemonic[4]) {
  707|      3|            default: break;
  ------------------
  |  Branch (707:13): [True: 3, False: 17]
  ------------------
  708|     15|            case 'd':	 // 1 string to match.
  ------------------
  |  Branch (708:13): [True: 15, False: 5]
  ------------------
  709|     15|              if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmrdd"
  ------------------
  |  Branch (709:19): [True: 12, False: 3]
  ------------------
  710|     12|                Mnemonic = "vmov";
  711|     15|              return;
  712|      2|            case 's':	 // 1 string to match.
  ------------------
  |  Branch (712:13): [True: 2, False: 18]
  ------------------
  713|      2|              if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmrds"
  ------------------
  |  Branch (713:19): [True: 1, False: 1]
  ------------------
  714|      1|                Mnemonic = "vmov";
  715|      2|              return;
  716|     20|            }
  717|      3|            break;
  718|     28|          case 'r':	 // 1 string to match.
  ------------------
  |  Branch (718:11): [True: 28, False: 24]
  ------------------
  719|     28|            if (Mnemonic[4] != 'd')
  ------------------
  |  Branch (719:17): [True: 7, False: 21]
  ------------------
  720|      7|              break;
  721|     21|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmrrd"
  ------------------
  |  Branch (721:17): [True: 9, False: 12]
  ------------------
  722|      9|              Mnemonic = "vmov";
  723|     21|            return;
  724|     52|          }
  725|     14|          break;
  726|     14|        case 'u':	 // 2 strings to match.
  ------------------
  |  Branch (726:9): [True: 12, False: 82]
  ------------------
  727|     12|          if (Mnemonic[3] != 'l')
  ------------------
  |  Branch (727:15): [True: 3, False: 9]
  ------------------
  728|      3|            break;
  729|      9|          switch (Mnemonic[4]) {
  730|      3|          default: break;
  ------------------
  |  Branch (730:11): [True: 3, False: 6]
  ------------------
  731|      3|          case 'd':	 // 1 string to match.
  ------------------
  |  Branch (731:11): [True: 1, False: 8]
  ------------------
  732|      1|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmuld"
  ------------------
  |  Branch (732:17): [True: 1, False: 0]
  ------------------
  733|      1|              Mnemonic = "vmul.f64";
  734|      1|            return;
  735|      5|          case 's':	 // 1 string to match.
  ------------------
  |  Branch (735:11): [True: 5, False: 4]
  ------------------
  736|      5|            if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fmuls"
  ------------------
  |  Branch (736:17): [True: 2, False: 3]
  ------------------
  737|      2|              Mnemonic = "vmul.f32";
  738|      5|            return;
  739|      9|          }
  740|      3|          break;
  741|     94|        }
  742|     42|        break;
  743|     42|      case 'n':	 // 2 strings to match.
  ------------------
  |  Branch (743:7): [True: 9, False: 397]
  ------------------
  744|      9|        if (memcmp(Mnemonic.data()+2, "eg", 2))
  ------------------
  |  Branch (744:13): [True: 3, False: 6]
  ------------------
  745|      3|          break;
  746|      6|        switch (Mnemonic[4]) {
  747|      3|        default: break;
  ------------------
  |  Branch (747:9): [True: 3, False: 3]
  ------------------
  748|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (748:9): [True: 1, False: 5]
  ------------------
  749|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fnegd"
  ------------------
  |  Branch (749:15): [True: 1, False: 0]
  ------------------
  750|      1|            Mnemonic = "vneg.f64";
  751|      1|          return;
  752|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (752:9): [True: 2, False: 4]
  ------------------
  753|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fnegs"
  ------------------
  |  Branch (753:15): [True: 1, False: 1]
  ------------------
  754|      1|            Mnemonic = "vneg.f32";
  755|      2|          return;
  756|      6|        }
  757|      3|        break;
  758|    406|      }
  759|    176|      break;
  760|    332|    case 'l':	 // 3 strings to match.
  ------------------
  |  Branch (760:5): [True: 332, False: 2.95k]
  ------------------
  761|    332|      if (memcmp(Mnemonic.data()+1, "dm", 2))
  ------------------
  |  Branch (761:11): [True: 315, False: 17]
  ------------------
  762|    315|        break;
  763|     17|      switch (Mnemonic[3]) {
  764|      5|      default: break;
  ------------------
  |  Branch (764:7): [True: 5, False: 12]
  ------------------
  765|      5|      case 'e':	 // 1 string to match.
  ------------------
  |  Branch (765:7): [True: 4, False: 13]
  ------------------
  766|      4|        if (Mnemonic[4] != 'a')
  ------------------
  |  Branch (766:13): [True: 3, False: 1]
  ------------------
  767|      3|          break;
  768|      1|        Mnemonic = "ldmdb";	 // "ldmea"
  769|      1|        return;
  770|      4|      case 'f':	 // 1 string to match.
  ------------------
  |  Branch (770:7): [True: 4, False: 13]
  ------------------
  771|      4|        if (Mnemonic[4] != 'd')
  ------------------
  |  Branch (771:13): [True: 3, False: 1]
  ------------------
  772|      3|          break;
  773|      1|        Mnemonic = "ldm";	 // "ldmfd"
  774|      1|        return;
  775|      4|      case 'i':	 // 1 string to match.
  ------------------
  |  Branch (775:7): [True: 4, False: 13]
  ------------------
  776|      4|        if (Mnemonic[4] != 'a')
  ------------------
  |  Branch (776:13): [True: 3, False: 1]
  ------------------
  777|      3|          break;
  778|      1|        Mnemonic = "ldm";	 // "ldmia"
  779|      1|        return;
  780|     17|      }
  781|     14|      break;
  782|    371|    case 'r':	 // 4 strings to match.
  ------------------
  |  Branch (782:5): [True: 371, False: 2.91k]
  ------------------
  783|    371|      if (memcmp(Mnemonic.data()+1, "fe", 2))
  ------------------
  |  Branch (783:11): [True: 112, False: 259]
  ------------------
  784|    112|        break;
  785|    259|      switch (Mnemonic[3]) {
  786|    206|      default: break;
  ------------------
  |  Branch (786:7): [True: 206, False: 53]
  ------------------
  787|    206|      case 'e':	 // 2 strings to match.
  ------------------
  |  Branch (787:7): [True: 35, False: 224]
  ------------------
  788|     35|        switch (Mnemonic[4]) {
  789|      4|        default: break;
  ------------------
  |  Branch (789:9): [True: 4, False: 31]
  ------------------
  790|     24|        case 'a':	 // 1 string to match.
  ------------------
  |  Branch (790:9): [True: 24, False: 11]
  ------------------
  791|     24|          Mnemonic = "rfedb";	 // "rfeea"
  792|     24|          return;
  793|      7|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (793:9): [True: 7, False: 28]
  ------------------
  794|      7|          Mnemonic = "rfeib";	 // "rfeed"
  795|      7|          return;
  796|     35|        }
  797|      4|        break;
  798|     18|      case 'f':	 // 2 strings to match.
  ------------------
  |  Branch (798:7): [True: 18, False: 241]
  ------------------
  799|     18|        switch (Mnemonic[4]) {
  800|      3|        default: break;
  ------------------
  |  Branch (800:9): [True: 3, False: 15]
  ------------------
  801|      3|        case 'a':	 // 1 string to match.
  ------------------
  |  Branch (801:9): [True: 1, False: 17]
  ------------------
  802|      1|          Mnemonic = "rfeda";	 // "rfefa"
  803|      1|          return;
  804|     14|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (804:9): [True: 14, False: 4]
  ------------------
  805|     14|          Mnemonic = "rfeia";	 // "rfefd"
  806|     14|          return;
  807|     18|        }
  808|      3|        break;
  809|    259|      }
  810|    213|      break;
  811|    647|    case 's':	 // 7 strings to match.
  ------------------
  |  Branch (811:5): [True: 647, False: 2.63k]
  ------------------
  812|    647|      switch (Mnemonic[1]) {
  813|    178|      default: break;
  ------------------
  |  Branch (813:7): [True: 178, False: 469]
  ------------------
  814|    423|      case 'r':	 // 4 strings to match.
  ------------------
  |  Branch (814:7): [True: 423, False: 224]
  ------------------
  815|    423|        if (Mnemonic[2] != 's')
  ------------------
  |  Branch (815:13): [True: 6, False: 417]
  ------------------
  816|      6|          break;
  817|    417|        switch (Mnemonic[3]) {
  818|    280|        default: break;
  ------------------
  |  Branch (818:9): [True: 280, False: 137]
  ------------------
  819|    280|        case 'e':	 // 2 strings to match.
  ------------------
  |  Branch (819:9): [True: 31, False: 386]
  ------------------
  820|     31|          switch (Mnemonic[4]) {
  821|      3|          default: break;
  ------------------
  |  Branch (821:11): [True: 3, False: 28]
  ------------------
  822|     14|          case 'a':	 // 1 string to match.
  ------------------
  |  Branch (822:11): [True: 14, False: 17]
  ------------------
  823|     14|            Mnemonic = "srsia";	 // "srsea"
  824|     14|            return;
  825|     14|          case 'd':	 // 1 string to match.
  ------------------
  |  Branch (825:11): [True: 14, False: 17]
  ------------------
  826|     14|            Mnemonic = "srsda";	 // "srsed"
  827|     14|            return;
  828|     31|          }
  829|      3|          break;
  830|    106|        case 'f':	 // 2 strings to match.
  ------------------
  |  Branch (830:9): [True: 106, False: 311]
  ------------------
  831|    106|          switch (Mnemonic[4]) {
  832|      3|          default: break;
  ------------------
  |  Branch (832:11): [True: 3, False: 103]
  ------------------
  833|     22|          case 'a':	 // 1 string to match.
  ------------------
  |  Branch (833:11): [True: 22, False: 84]
  ------------------
  834|     22|            Mnemonic = "srsib";	 // "srsfa"
  835|     22|            return;
  836|     81|          case 'd':	 // 1 string to match.
  ------------------
  |  Branch (836:11): [True: 81, False: 25]
  ------------------
  837|     81|            Mnemonic = "srsdb";	 // "srsfd"
  838|     81|            return;
  839|    106|          }
  840|      3|          break;
  841|    417|        }
  842|    286|        break;
  843|    286|      case 't':	 // 3 strings to match.
  ------------------
  |  Branch (843:7): [True: 46, False: 601]
  ------------------
  844|     46|        if (Mnemonic[2] != 'm')
  ------------------
  |  Branch (844:13): [True: 30, False: 16]
  ------------------
  845|     30|          break;
  846|     16|        switch (Mnemonic[3]) {
  847|      4|        default: break;
  ------------------
  |  Branch (847:9): [True: 4, False: 12]
  ------------------
  848|      4|        case 'e':	 // 1 string to match.
  ------------------
  |  Branch (848:9): [True: 4, False: 12]
  ------------------
  849|      4|          if (Mnemonic[4] != 'a')
  ------------------
  |  Branch (849:15): [True: 3, False: 1]
  ------------------
  850|      3|            break;
  851|      1|          Mnemonic = "stm";	 // "stmea"
  852|      1|          return;
  853|      4|        case 'f':	 // 1 string to match.
  ------------------
  |  Branch (853:9): [True: 4, False: 12]
  ------------------
  854|      4|          if (Mnemonic[4] != 'd')
  ------------------
  |  Branch (854:15): [True: 3, False: 1]
  ------------------
  855|      3|            break;
  856|      1|          Mnemonic = "stmdb";	 // "stmfd"
  857|      1|          return;
  858|      4|        case 'i':	 // 1 string to match.
  ------------------
  |  Branch (858:9): [True: 4, False: 12]
  ------------------
  859|      4|          if (Mnemonic[4] != 'a')
  ------------------
  |  Branch (859:15): [True: 3, False: 1]
  ------------------
  860|      3|            break;
  861|      1|          Mnemonic = "stm";	 // "stmia"
  862|      1|          return;
  863|     16|        }
  864|     13|        break;
  865|    647|      }
  866|    513|      break;
  867|    549|    case 'v':	 // 19 strings to match.
  ------------------
  |  Branch (867:5): [True: 549, False: 2.73k]
  ------------------
  868|    549|      switch (Mnemonic[1]) {
  869|    210|      default: break;
  ------------------
  |  Branch (869:7): [True: 210, False: 339]
  ------------------
  870|    210|      case 'a':	 // 3 strings to match.
  ------------------
  |  Branch (870:7): [True: 27, False: 522]
  ------------------
  871|     27|        switch (Mnemonic[2]) {
  872|      8|        default: break;
  ------------------
  |  Branch (872:9): [True: 8, False: 19]
  ------------------
  873|      8|        case 'b':	 // 1 string to match.
  ------------------
  |  Branch (873:9): [True: 5, False: 22]
  ------------------
  874|      5|          if (memcmp(Mnemonic.data()+3, "sq", 2))
  ------------------
  |  Branch (874:15): [True: 4, False: 1]
  ------------------
  875|      4|            break;
  876|      1|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vabsq"
  ------------------
  |  Branch (876:15): [True: 1, False: 0]
  ------------------
  877|      1|            Mnemonic = "vabs";
  878|      1|          return;
  879|      7|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (879:9): [True: 7, False: 20]
  ------------------
  880|      7|          if (memcmp(Mnemonic.data()+3, "dq", 2))
  ------------------
  |  Branch (880:15): [True: 3, False: 4]
  ------------------
  881|      3|            break;
  882|      4|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vaddq"
  ------------------
  |  Branch (882:15): [True: 1, False: 3]
  ------------------
  883|      1|            Mnemonic = "vadd";
  884|      4|          return;
  885|      7|        case 'n':	 // 1 string to match.
  ------------------
  |  Branch (885:9): [True: 7, False: 20]
  ------------------
  886|      7|          if (memcmp(Mnemonic.data()+3, "dq", 2))
  ------------------
  |  Branch (886:15): [True: 3, False: 4]
  ------------------
  887|      3|            break;
  888|      4|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vandq"
  ------------------
  |  Branch (888:15): [True: 1, False: 3]
  ------------------
  889|      1|            Mnemonic = "vand";
  890|      4|          return;
  891|     27|        }
  892|     18|        break;
  893|     18|      case 'b':	 // 1 string to match.
  ------------------
  |  Branch (893:7): [True: 7, False: 542]
  ------------------
  894|      7|        if (memcmp(Mnemonic.data()+2, "icq", 3))
  ------------------
  |  Branch (894:13): [True: 6, False: 1]
  ------------------
  895|      6|          break;
  896|      1|        if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vbicq"
  ------------------
  |  Branch (896:13): [True: 1, False: 0]
  ------------------
  897|      1|          Mnemonic = "vbic";
  898|      1|        return;
  899|     40|      case 'c':	 // 3 strings to match.
  ------------------
  |  Branch (899:7): [True: 40, False: 509]
  ------------------
  900|     40|        switch (Mnemonic[2]) {
  901|      8|        default: break;
  ------------------
  |  Branch (901:9): [True: 8, False: 32]
  ------------------
  902|      8|        case 'e':	 // 1 string to match.
  ------------------
  |  Branch (902:9): [True: 4, False: 36]
  ------------------
  903|      4|          if (memcmp(Mnemonic.data()+3, "qq", 2))
  ------------------
  |  Branch (903:15): [True: 3, False: 1]
  ------------------
  904|      3|            break;
  905|      1|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vceqq"
  ------------------
  |  Branch (905:15): [True: 1, False: 0]
  ------------------
  906|      1|            Mnemonic = "vceq";
  907|      1|          return;
  908|     10|        case 'l':	 // 1 string to match.
  ------------------
  |  Branch (908:9): [True: 10, False: 30]
  ------------------
  909|     10|          if (memcmp(Mnemonic.data()+3, "eq", 2))
  ------------------
  |  Branch (909:15): [True: 8, False: 2]
  ------------------
  910|      8|            break;
  911|      2|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vcleq"
  ------------------
  |  Branch (911:15): [True: 1, False: 1]
  ------------------
  912|      1|            Mnemonic = "vcle";
  913|      2|          return;
  914|     18|        case 'v':	 // 1 string to match.
  ------------------
  |  Branch (914:9): [True: 18, False: 22]
  ------------------
  915|     18|          if (memcmp(Mnemonic.data()+3, "tq", 2))
  ------------------
  |  Branch (915:15): [True: 17, False: 1]
  ------------------
  916|     17|            break;
  917|      1|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vcvtq"
  ------------------
  |  Branch (917:15): [True: 1, False: 0]
  ------------------
  918|      1|            Mnemonic = "vcvt";
  919|      1|          return;
  920|     40|        }
  921|     36|        break;
  922|     36|      case 'e':	 // 1 string to match.
  ------------------
  |  Branch (922:7): [True: 23, False: 526]
  ------------------
  923|     23|        if (memcmp(Mnemonic.data()+2, "orq", 3))
  ------------------
  |  Branch (923:13): [True: 14, False: 9]
  ------------------
  924|     14|          break;
  925|      9|        if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "veorq"
  ------------------
  |  Branch (925:13): [True: 3, False: 6]
  ------------------
  926|      3|          Mnemonic = "veor";
  927|      9|        return;
  928|    144|      case 'm':	 // 5 strings to match.
  ------------------
  |  Branch (928:7): [True: 144, False: 405]
  ------------------
  929|    144|        switch (Mnemonic[2]) {
  930|     12|        default: break;
  ------------------
  |  Branch (930:9): [True: 12, False: 132]
  ------------------
  931|     13|        case 'a':	 // 1 string to match.
  ------------------
  |  Branch (931:9): [True: 13, False: 131]
  ------------------
  932|     13|          if (memcmp(Mnemonic.data()+3, "xq", 2))
  ------------------
  |  Branch (932:15): [True: 12, False: 1]
  ------------------
  933|     12|            break;
  934|      1|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vmaxq"
  ------------------
  |  Branch (934:15): [True: 1, False: 0]
  ------------------
  935|      1|            Mnemonic = "vmax";
  936|      1|          return;
  937|     17|        case 'i':	 // 1 string to match.
  ------------------
  |  Branch (937:9): [True: 17, False: 127]
  ------------------
  938|     17|          if (memcmp(Mnemonic.data()+3, "nq", 2))
  ------------------
  |  Branch (938:15): [True: 8, False: 9]
  ------------------
  939|      8|            break;
  940|      9|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vminq"
  ------------------
  |  Branch (940:15): [True: 6, False: 3]
  ------------------
  941|      6|            Mnemonic = "vmin";
  942|      9|          return;
  943|     63|        case 'o':	 // 1 string to match.
  ------------------
  |  Branch (943:9): [True: 63, False: 81]
  ------------------
  944|     63|          if (memcmp(Mnemonic.data()+3, "vq", 2))
  ------------------
  |  Branch (944:15): [True: 30, False: 33]
  ------------------
  945|     30|            break;
  946|     33|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vmovq"
  ------------------
  |  Branch (946:15): [True: 19, False: 14]
  ------------------
  947|     19|            Mnemonic = "vmov";
  948|     33|          return;
  949|      6|        case 'u':	 // 1 string to match.
  ------------------
  |  Branch (949:9): [True: 6, False: 138]
  ------------------
  950|      6|          if (memcmp(Mnemonic.data()+3, "lq", 2))
  ------------------
  |  Branch (950:15): [True: 5, False: 1]
  ------------------
  951|      5|            break;
  952|      1|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vmulq"
  ------------------
  |  Branch (952:15): [True: 1, False: 0]
  ------------------
  953|      1|            Mnemonic = "vmul";
  954|      1|          return;
  955|     33|        case 'v':	 // 1 string to match.
  ------------------
  |  Branch (955:9): [True: 33, False: 111]
  ------------------
  956|     33|          if (memcmp(Mnemonic.data()+3, "nq", 2))
  ------------------
  |  Branch (956:15): [True: 20, False: 13]
  ------------------
  957|     20|            break;
  958|     13|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vmvnq"
  ------------------
  |  Branch (958:15): [True: 10, False: 3]
  ------------------
  959|     10|            Mnemonic = "vmvn";
  960|     13|          return;
  961|    144|        }
  962|     87|        break;
  963|     87|      case 'o':	 // 1 string to match.
  ------------------
  |  Branch (963:7): [True: 14, False: 535]
  ------------------
  964|     14|        if (memcmp(Mnemonic.data()+2, "rrq", 3))
  ------------------
  |  Branch (964:13): [True: 14, False: 0]
  ------------------
  965|     14|          break;
  966|      0|        if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vorrq"
  ------------------
  |  Branch (966:13): [True: 0, False: 0]
  ------------------
  967|      0|          Mnemonic = "vorr";
  968|      0|        return;
  969|     67|      case 's':	 // 4 strings to match.
  ------------------
  |  Branch (969:7): [True: 67, False: 482]
  ------------------
  970|     67|        switch (Mnemonic[2]) {
  971|     31|        default: break;
  ------------------
  |  Branch (971:9): [True: 31, False: 36]
  ------------------
  972|     31|        case 'h':	 // 2 strings to match.
  ------------------
  |  Branch (972:9): [True: 22, False: 45]
  ------------------
  973|     22|          switch (Mnemonic[3]) {
  974|      3|          default: break;
  ------------------
  |  Branch (974:11): [True: 3, False: 19]
  ------------------
  975|     11|          case 'l':	 // 1 string to match.
  ------------------
  |  Branch (975:11): [True: 11, False: 11]
  ------------------
  976|     11|            if (Mnemonic[4] != 'q')
  ------------------
  |  Branch (976:17): [True: 10, False: 1]
  ------------------
  977|     10|              break;
  978|      1|            if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vshlq"
  ------------------
  |  Branch (978:17): [True: 1, False: 0]
  ------------------
  979|      1|              Mnemonic = "vshl";
  980|      1|            return;
  981|      8|          case 'r':	 // 1 string to match.
  ------------------
  |  Branch (981:11): [True: 8, False: 14]
  ------------------
  982|      8|            if (Mnemonic[4] != 'q')
  ------------------
  |  Branch (982:17): [True: 7, False: 1]
  ------------------
  983|      7|              break;
  984|      1|            if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vshrq"
  ------------------
  |  Branch (984:17): [True: 1, False: 0]
  ------------------
  985|      1|              Mnemonic = "vshr";
  986|      1|            return;
  987|     22|          }
  988|     20|          break;
  989|     20|        case 'u':	 // 1 string to match.
  ------------------
  |  Branch (989:9): [True: 10, False: 57]
  ------------------
  990|     10|          if (memcmp(Mnemonic.data()+3, "bq", 2))
  ------------------
  |  Branch (990:15): [True: 6, False: 4]
  ------------------
  991|      6|            break;
  992|      4|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vsubq"
  ------------------
  |  Branch (992:15): [True: 1, False: 3]
  ------------------
  993|      1|            Mnemonic = "vsub";
  994|      4|          return;
  995|      4|        case 'w':	 // 1 string to match.
  ------------------
  |  Branch (995:9): [True: 4, False: 63]
  ------------------
  996|      4|          if (memcmp(Mnemonic.data()+3, "pq", 2))
  ------------------
  |  Branch (996:15): [True: 3, False: 1]
  ------------------
  997|      3|            break;
  998|      1|          if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vswpq"
  ------------------
  |  Branch (998:15): [True: 1, False: 0]
  ------------------
  999|      1|            Mnemonic = "vswp";
 1000|      1|          return;
 1001|     67|        }
 1002|     60|        break;
 1003|     60|      case 'z':	 // 1 string to match.
  ------------------
  |  Branch (1003:7): [True: 17, False: 532]
  ------------------
 1004|     17|        if (memcmp(Mnemonic.data()+2, "ipq", 3))
  ------------------
  |  Branch (1004:13): [True: 13, False: 4]
  ------------------
 1005|     13|          break;
 1006|      4|        if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vzipq"
  ------------------
  |  Branch (1006:13): [True: 1, False: 3]
  ------------------
 1007|      1|          Mnemonic = "vzip";
 1008|      4|        return;
 1009|    549|      }
 1010|    458|      break;
 1011|  3.28k|    }
 1012|  2.78k|    break;
 1013|  2.78k|  case 6:	 // 10 strings to match.
  ------------------
  |  Branch (1013:3): [True: 1.23k, False: 85.7k]
  ------------------
 1014|  1.23k|    if (Mnemonic[0] != 'f')
  ------------------
  |  Branch (1014:9): [True: 1.02k, False: 210]
  ------------------
 1015|  1.02k|      break;
 1016|    210|    switch (Mnemonic[1]) {
 1017|    128|    default: break;
  ------------------
  |  Branch (1017:5): [True: 128, False: 82]
  ------------------
 1018|    128|    case 's':	 // 4 strings to match.
  ------------------
  |  Branch (1018:5): [True: 32, False: 178]
  ------------------
 1019|     32|      switch (Mnemonic[2]) {
 1020|      4|      default: break;
  ------------------
  |  Branch (1020:7): [True: 4, False: 28]
  ------------------
 1021|     12|      case 'i':	 // 2 strings to match.
  ------------------
  |  Branch (1021:7): [True: 12, False: 20]
  ------------------
 1022|     12|        if (memcmp(Mnemonic.data()+3, "to", 2))
  ------------------
  |  Branch (1022:13): [True: 3, False: 9]
  ------------------
 1023|      3|          break;
 1024|      9|        switch (Mnemonic[5]) {
 1025|      3|        default: break;
  ------------------
  |  Branch (1025:9): [True: 3, False: 6]
  ------------------
 1026|      4|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1026:9): [True: 4, False: 5]
  ------------------
 1027|      4|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fsitod"
  ------------------
  |  Branch (1027:15): [True: 1, False: 3]
  ------------------
 1028|      1|            Mnemonic = "vcvt.f64.s32";
 1029|      4|          return;
 1030|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1030:9): [True: 2, False: 7]
  ------------------
 1031|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fsitos"
  ------------------
  |  Branch (1031:15): [True: 1, False: 1]
  ------------------
 1032|      1|            Mnemonic = "vcvt.f32.s32";
 1033|      2|          return;
 1034|      9|        }
 1035|      3|        break;
 1036|     16|      case 'q':	 // 2 strings to match.
  ------------------
  |  Branch (1036:7): [True: 16, False: 16]
  ------------------
 1037|     16|        if (memcmp(Mnemonic.data()+3, "rt", 2))
  ------------------
  |  Branch (1037:13): [True: 5, False: 11]
  ------------------
 1038|      5|          break;
 1039|     11|        switch (Mnemonic[5]) {
 1040|      3|        default: break;
  ------------------
  |  Branch (1040:9): [True: 3, False: 8]
  ------------------
 1041|      4|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1041:9): [True: 4, False: 7]
  ------------------
 1042|      4|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fsqrtd"
  ------------------
  |  Branch (1042:15): [True: 1, False: 3]
  ------------------
 1043|      1|            Mnemonic = "vsqrt";
 1044|      4|          return;
 1045|      4|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1045:9): [True: 4, False: 7]
  ------------------
 1046|      4|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fsqrts"
  ------------------
  |  Branch (1046:15): [True: 1, False: 3]
  ------------------
 1047|      1|            Mnemonic = "vsqrt";
 1048|      4|          return;
 1049|     11|        }
 1050|      3|        break;
 1051|     32|      }
 1052|     18|      break;
 1053|     33|    case 't':	 // 4 strings to match.
  ------------------
  |  Branch (1053:5): [True: 33, False: 177]
  ------------------
 1054|     33|      if (Mnemonic[2] != 'o')
  ------------------
  |  Branch (1054:11): [True: 3, False: 30]
  ------------------
 1055|      3|        break;
 1056|     30|      switch (Mnemonic[3]) {
 1057|      6|      default: break;
  ------------------
  |  Branch (1057:7): [True: 6, False: 24]
  ------------------
 1058|     12|      case 's':	 // 2 strings to match.
  ------------------
  |  Branch (1058:7): [True: 12, False: 18]
  ------------------
 1059|     12|        if (Mnemonic[4] != 'i')
  ------------------
  |  Branch (1059:13): [True: 3, False: 9]
  ------------------
 1060|      3|          break;
 1061|      9|        switch (Mnemonic[5]) {
 1062|      3|        default: break;
  ------------------
  |  Branch (1062:9): [True: 3, False: 6]
  ------------------
 1063|      4|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1063:9): [True: 4, False: 5]
  ------------------
 1064|      4|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftosid"
  ------------------
  |  Branch (1064:15): [True: 1, False: 3]
  ------------------
 1065|      1|            Mnemonic = "vcvtr.s32.f64";
 1066|      4|          return;
 1067|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1067:9): [True: 2, False: 7]
  ------------------
 1068|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftosis"
  ------------------
  |  Branch (1068:15): [True: 1, False: 1]
  ------------------
 1069|      1|            Mnemonic = "vcvtr.s32.f32";
 1070|      2|          return;
 1071|      9|        }
 1072|      3|        break;
 1073|     12|      case 'u':	 // 2 strings to match.
  ------------------
  |  Branch (1073:7): [True: 12, False: 18]
  ------------------
 1074|     12|        if (Mnemonic[4] != 'i')
  ------------------
  |  Branch (1074:13): [True: 3, False: 9]
  ------------------
 1075|      3|          break;
 1076|      9|        switch (Mnemonic[5]) {
 1077|      3|        default: break;
  ------------------
  |  Branch (1077:9): [True: 3, False: 6]
  ------------------
 1078|      4|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1078:9): [True: 4, False: 5]
  ------------------
 1079|      4|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftouid"
  ------------------
  |  Branch (1079:15): [True: 1, False: 3]
  ------------------
 1080|      1|            Mnemonic = "vcvtr.u32.f64";
 1081|      4|          return;
 1082|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1082:9): [True: 2, False: 7]
  ------------------
 1083|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftouis"
  ------------------
  |  Branch (1083:15): [True: 1, False: 1]
  ------------------
 1084|      1|            Mnemonic = "vcvtr.u32.f32";
 1085|      2|          return;
 1086|      9|        }
 1087|      3|        break;
 1088|     30|      }
 1089|     18|      break;
 1090|     18|    case 'u':	 // 2 strings to match.
  ------------------
  |  Branch (1090:5): [True: 17, False: 193]
  ------------------
 1091|     17|      if (memcmp(Mnemonic.data()+2, "ito", 3))
  ------------------
  |  Branch (1091:11): [True: 8, False: 9]
  ------------------
 1092|      8|        break;
 1093|      9|      switch (Mnemonic[5]) {
 1094|      3|      default: break;
  ------------------
  |  Branch (1094:7): [True: 3, False: 6]
  ------------------
 1095|      4|      case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1095:7): [True: 4, False: 5]
  ------------------
 1096|      4|        if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fuitod"
  ------------------
  |  Branch (1096:13): [True: 1, False: 3]
  ------------------
 1097|      1|          Mnemonic = "vcvt.f64.u32";
 1098|      4|        return;
 1099|      2|      case 's':	 // 1 string to match.
  ------------------
  |  Branch (1099:7): [True: 2, False: 7]
  ------------------
 1100|      2|        if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fuitos"
  ------------------
  |  Branch (1100:13): [True: 1, False: 1]
  ------------------
 1101|      1|          Mnemonic = "vcvt.f32.u32";
 1102|      2|        return;
 1103|      9|      }
 1104|      3|      break;
 1105|    210|    }
 1106|    178|    break;
 1107|    957|  case 7:	 // 24 strings to match.
  ------------------
  |  Branch (1107:3): [True: 957, False: 85.9k]
  ------------------
 1108|    957|    if (Mnemonic[0] != 'f')
  ------------------
  |  Branch (1108:9): [True: 531, False: 426]
  ------------------
 1109|    531|      break;
 1110|    426|    switch (Mnemonic[1]) {
 1111|    196|    default: break;
  ------------------
  |  Branch (1111:5): [True: 196, False: 230]
  ------------------
 1112|    196|    case 'l':	 // 10 strings to match.
  ------------------
  |  Branch (1112:5): [True: 160, False: 266]
  ------------------
 1113|    160|      if (memcmp(Mnemonic.data()+2, "dm", 2))
  ------------------
  |  Branch (1113:11): [True: 18, False: 142]
  ------------------
 1114|     18|        break;
 1115|    142|      switch (Mnemonic[4]) {
 1116|     19|      default: break;
  ------------------
  |  Branch (1116:7): [True: 19, False: 123]
  ------------------
 1117|     19|      case 'd':	 // 2 strings to match.
  ------------------
  |  Branch (1117:7): [True: 8, False: 134]
  ------------------
 1118|      8|        if (Mnemonic[5] != 'b')
  ------------------
  |  Branch (1118:13): [True: 3, False: 5]
  ------------------
 1119|      3|          break;
 1120|      5|        switch (Mnemonic[6]) {
 1121|      3|        default: break;
  ------------------
  |  Branch (1121:9): [True: 3, False: 2]
  ------------------
 1122|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1122:9): [True: 1, False: 4]
  ------------------
 1123|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmdbd"
  ------------------
  |  Branch (1123:15): [True: 1, False: 0]
  ------------------
 1124|      1|            Mnemonic = "vldmdb";
 1125|      1|          return;
 1126|      1|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1126:9): [True: 1, False: 4]
  ------------------
 1127|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmdbs"
  ------------------
  |  Branch (1127:15): [True: 1, False: 0]
  ------------------
 1128|      1|            Mnemonic = "vldmdb";
 1129|      1|          return;
 1130|      5|        }
 1131|      3|        break;
 1132|     65|      case 'e':	 // 3 strings to match.
  ------------------
  |  Branch (1132:7): [True: 65, False: 77]
  ------------------
 1133|     65|        if (Mnemonic[5] != 'a')
  ------------------
  |  Branch (1133:13): [True: 3, False: 62]
  ------------------
 1134|      3|          break;
 1135|     62|        switch (Mnemonic[6]) {
 1136|      6|        default: break;
  ------------------
  |  Branch (1136:9): [True: 6, False: 56]
  ------------------
 1137|     39|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1137:9): [True: 39, False: 23]
  ------------------
 1138|     39|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmead"
  ------------------
  |  Branch (1138:15): [True: 24, False: 15]
  ------------------
 1139|     24|            Mnemonic = "vldmdb";
 1140|     39|          return;
 1141|     10|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1141:9): [True: 10, False: 52]
  ------------------
 1142|     10|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmeas"
  ------------------
  |  Branch (1142:15): [True: 4, False: 6]
  ------------------
 1143|      4|            Mnemonic = "vldmdb";
 1144|     10|          return;
 1145|      7|        case 'x':	 // 1 string to match.
  ------------------
  |  Branch (1145:9): [True: 7, False: 55]
  ------------------
 1146|      7|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmeax"
  ------------------
  |  Branch (1146:15): [True: 3, False: 4]
  ------------------
 1147|      3|            Mnemonic = "fldmdbx";
 1148|      7|          return;
 1149|     62|        }
 1150|      6|        break;
 1151|     14|      case 'f':	 // 3 strings to match.
  ------------------
  |  Branch (1151:7): [True: 14, False: 128]
  ------------------
 1152|     14|        if (Mnemonic[5] != 'd')
  ------------------
  |  Branch (1152:13): [True: 7, False: 7]
  ------------------
 1153|      7|          break;
 1154|      7|        switch (Mnemonic[6]) {
 1155|      3|        default: break;
  ------------------
  |  Branch (1155:9): [True: 3, False: 4]
  ------------------
 1156|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1156:9): [True: 1, False: 6]
  ------------------
 1157|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmfdd"
  ------------------
  |  Branch (1157:15): [True: 1, False: 0]
  ------------------
 1158|      1|            Mnemonic = "vldmia";
 1159|      1|          return;
 1160|      1|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1160:9): [True: 1, False: 6]
  ------------------
 1161|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmfds"
  ------------------
  |  Branch (1161:15): [True: 1, False: 0]
  ------------------
 1162|      1|            Mnemonic = "vldmia";
 1163|      1|          return;
 1164|      2|        case 'x':	 // 1 string to match.
  ------------------
  |  Branch (1164:9): [True: 2, False: 5]
  ------------------
 1165|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmfdx"
  ------------------
  |  Branch (1165:15): [True: 2, False: 0]
  ------------------
 1166|      2|            Mnemonic = "fldmiax";
 1167|      2|          return;
 1168|      7|        }
 1169|      3|        break;
 1170|     36|      case 'i':	 // 2 strings to match.
  ------------------
  |  Branch (1170:7): [True: 36, False: 106]
  ------------------
 1171|     36|        if (Mnemonic[5] != 'a')
  ------------------
  |  Branch (1171:13): [True: 3, False: 33]
  ------------------
 1172|      3|          break;
 1173|     33|        switch (Mnemonic[6]) {
 1174|      3|        default: break;
  ------------------
  |  Branch (1174:9): [True: 3, False: 30]
  ------------------
 1175|     28|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1175:9): [True: 28, False: 5]
  ------------------
 1176|     28|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmiad"
  ------------------
  |  Branch (1176:15): [True: 21, False: 7]
  ------------------
 1177|     21|            Mnemonic = "vldmia";
 1178|     28|          return;
 1179|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1179:9): [True: 2, False: 31]
  ------------------
 1180|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fldmias"
  ------------------
  |  Branch (1180:15): [True: 1, False: 1]
  ------------------
 1181|      1|            Mnemonic = "vldmia";
 1182|      2|          return;
 1183|     33|        }
 1184|      3|        break;
 1185|    142|      }
 1186|     50|      break;
 1187|     50|    case 's':	 // 10 strings to match.
  ------------------
  |  Branch (1187:5): [True: 46, False: 380]
  ------------------
 1188|     46|      if (memcmp(Mnemonic.data()+2, "tm", 2))
  ------------------
  |  Branch (1188:11): [True: 3, False: 43]
  ------------------
 1189|      3|        break;
 1190|     43|      switch (Mnemonic[4]) {
 1191|      3|      default: break;
  ------------------
  |  Branch (1191:7): [True: 3, False: 40]
  ------------------
 1192|      8|      case 'd':	 // 2 strings to match.
  ------------------
  |  Branch (1192:7): [True: 8, False: 35]
  ------------------
 1193|      8|        if (Mnemonic[5] != 'b')
  ------------------
  |  Branch (1193:13): [True: 3, False: 5]
  ------------------
 1194|      3|          break;
 1195|      5|        switch (Mnemonic[6]) {
 1196|      3|        default: break;
  ------------------
  |  Branch (1196:9): [True: 3, False: 2]
  ------------------
 1197|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1197:9): [True: 1, False: 4]
  ------------------
 1198|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmdbd"
  ------------------
  |  Branch (1198:15): [True: 1, False: 0]
  ------------------
 1199|      1|            Mnemonic = "vstmdb";
 1200|      1|          return;
 1201|      1|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1201:9): [True: 1, False: 4]
  ------------------
 1202|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmdbs"
  ------------------
  |  Branch (1202:15): [True: 1, False: 0]
  ------------------
 1203|      1|            Mnemonic = "vstmdb";
 1204|      1|          return;
 1205|      5|        }
 1206|      3|        break;
 1207|     12|      case 'e':	 // 3 strings to match.
  ------------------
  |  Branch (1207:7): [True: 12, False: 31]
  ------------------
 1208|     12|        if (Mnemonic[5] != 'a')
  ------------------
  |  Branch (1208:13): [True: 3, False: 9]
  ------------------
 1209|      3|          break;
 1210|      9|        switch (Mnemonic[6]) {
 1211|      3|        default: break;
  ------------------
  |  Branch (1211:9): [True: 3, False: 6]
  ------------------
 1212|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1212:9): [True: 2, False: 7]
  ------------------
 1213|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmead"
  ------------------
  |  Branch (1213:15): [True: 1, False: 1]
  ------------------
 1214|      1|            Mnemonic = "vstmia";
 1215|      2|          return;
 1216|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1216:9): [True: 2, False: 7]
  ------------------
 1217|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmeas"
  ------------------
  |  Branch (1217:15): [True: 1, False: 1]
  ------------------
 1218|      1|            Mnemonic = "vstmia";
 1219|      2|          return;
 1220|      2|        case 'x':	 // 1 string to match.
  ------------------
  |  Branch (1220:9): [True: 2, False: 7]
  ------------------
 1221|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmeax"
  ------------------
  |  Branch (1221:15): [True: 1, False: 1]
  ------------------
 1222|      1|            Mnemonic = "fstmiax";
 1223|      2|          return;
 1224|      9|        }
 1225|      3|        break;
 1226|     11|      case 'f':	 // 3 strings to match.
  ------------------
  |  Branch (1226:7): [True: 11, False: 32]
  ------------------
 1227|     11|        if (Mnemonic[5] != 'd')
  ------------------
  |  Branch (1227:13): [True: 5, False: 6]
  ------------------
 1228|      5|          break;
 1229|      6|        switch (Mnemonic[6]) {
 1230|      3|        default: break;
  ------------------
  |  Branch (1230:9): [True: 3, False: 3]
  ------------------
 1231|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1231:9): [True: 1, False: 5]
  ------------------
 1232|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmfdd"
  ------------------
  |  Branch (1232:15): [True: 1, False: 0]
  ------------------
 1233|      1|            Mnemonic = "vstmdb";
 1234|      1|          return;
 1235|      1|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1235:9): [True: 1, False: 5]
  ------------------
 1236|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmfds"
  ------------------
  |  Branch (1236:15): [True: 1, False: 0]
  ------------------
 1237|      1|            Mnemonic = "vstmdb";
 1238|      1|          return;
 1239|      1|        case 'x':	 // 1 string to match.
  ------------------
  |  Branch (1239:9): [True: 1, False: 5]
  ------------------
 1240|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmfdx"
  ------------------
  |  Branch (1240:15): [True: 1, False: 0]
  ------------------
 1241|      1|            Mnemonic = "fstmdbx";
 1242|      1|          return;
 1243|      6|        }
 1244|      3|        break;
 1245|      9|      case 'i':	 // 2 strings to match.
  ------------------
  |  Branch (1245:7): [True: 9, False: 34]
  ------------------
 1246|      9|        if (Mnemonic[5] != 'a')
  ------------------
  |  Branch (1246:13): [True: 3, False: 6]
  ------------------
 1247|      3|          break;
 1248|      6|        switch (Mnemonic[6]) {
 1249|      3|        default: break;
  ------------------
  |  Branch (1249:9): [True: 3, False: 3]
  ------------------
 1250|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1250:9): [True: 1, False: 5]
  ------------------
 1251|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmiad"
  ------------------
  |  Branch (1251:15): [True: 1, False: 0]
  ------------------
 1252|      1|            Mnemonic = "vstmia";
 1253|      1|          return;
 1254|      2|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1254:9): [True: 2, False: 4]
  ------------------
 1255|      2|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "fstmias"
  ------------------
  |  Branch (1255:15): [True: 1, False: 1]
  ------------------
 1256|      1|            Mnemonic = "vstmia";
 1257|      2|          return;
 1258|      6|        }
 1259|      3|        break;
 1260|     43|      }
 1261|     29|      break;
 1262|     29|    case 't':	 // 4 strings to match.
  ------------------
  |  Branch (1262:5): [True: 24, False: 402]
  ------------------
 1263|     24|      if (Mnemonic[2] != 'o')
  ------------------
  |  Branch (1263:11): [True: 3, False: 21]
  ------------------
 1264|      3|        break;
 1265|     21|      switch (Mnemonic[3]) {
 1266|      3|      default: break;
  ------------------
  |  Branch (1266:7): [True: 3, False: 18]
  ------------------
 1267|      8|      case 's':	 // 2 strings to match.
  ------------------
  |  Branch (1267:7): [True: 8, False: 13]
  ------------------
 1268|      8|        if (memcmp(Mnemonic.data()+4, "iz", 2))
  ------------------
  |  Branch (1268:13): [True: 3, False: 5]
  ------------------
 1269|      3|          break;
 1270|      5|        switch (Mnemonic[6]) {
 1271|      3|        default: break;
  ------------------
  |  Branch (1271:9): [True: 3, False: 2]
  ------------------
 1272|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1272:9): [True: 1, False: 4]
  ------------------
 1273|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftosizd"
  ------------------
  |  Branch (1273:15): [True: 1, False: 0]
  ------------------
 1274|      1|            Mnemonic = "vcvt.s32.f64";
 1275|      1|          return;
 1276|      1|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1276:9): [True: 1, False: 4]
  ------------------
 1277|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftosizs"
  ------------------
  |  Branch (1277:15): [True: 1, False: 0]
  ------------------
 1278|      1|            Mnemonic = "vcvt.s32.f32";
 1279|      1|          return;
 1280|      5|        }
 1281|      3|        break;
 1282|     10|      case 'u':	 // 2 strings to match.
  ------------------
  |  Branch (1282:7): [True: 10, False: 11]
  ------------------
 1283|     10|        if (memcmp(Mnemonic.data()+4, "iz", 2))
  ------------------
  |  Branch (1283:13): [True: 5, False: 5]
  ------------------
 1284|      5|          break;
 1285|      5|        switch (Mnemonic[6]) {
 1286|      3|        default: break;
  ------------------
  |  Branch (1286:9): [True: 3, False: 2]
  ------------------
 1287|      3|        case 'd':	 // 1 string to match.
  ------------------
  |  Branch (1287:9): [True: 1, False: 4]
  ------------------
 1288|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftouizd"
  ------------------
  |  Branch (1288:15): [True: 1, False: 0]
  ------------------
 1289|      1|            Mnemonic = "vcvt.u32.f64";
 1290|      1|          return;
 1291|      1|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1291:9): [True: 1, False: 4]
  ------------------
 1292|      1|          if ((Features & Feature_HasVFP2) == Feature_HasVFP2)	 // "ftouizs"
  ------------------
  |  Branch (1292:15): [True: 1, False: 0]
  ------------------
 1293|      1|            Mnemonic = "vcvt.u32.f32";
 1294|      1|          return;
 1295|      5|        }
 1296|      3|        break;
 1297|     21|      }
 1298|     17|      break;
 1299|    426|    }
 1300|    316|    break;
 1301|    843|  case 8:	 // 5 strings to match.
  ------------------
  |  Branch (1301:3): [True: 843, False: 86.1k]
  ------------------
 1302|    843|    switch (Mnemonic[0]) {
 1303|    789|    default: break;
  ------------------
  |  Branch (1303:5): [True: 789, False: 54]
  ------------------
 1304|    789|    case 'q':	 // 1 string to match.
  ------------------
  |  Branch (1304:5): [True: 4, False: 839]
  ------------------
 1305|      4|      if (memcmp(Mnemonic.data()+1, "subaddx", 7))
  ------------------
  |  Branch (1305:11): [True: 3, False: 1]
  ------------------
 1306|      3|        break;
 1307|      1|      Mnemonic = "qsax";	 // "qsubaddx"
 1308|      1|      return;
 1309|     36|    case 's':	 // 2 strings to match.
  ------------------
  |  Branch (1309:5): [True: 36, False: 807]
  ------------------
 1310|     36|      switch (Mnemonic[1]) {
 1311|     28|      default: break;
  ------------------
  |  Branch (1311:7): [True: 28, False: 8]
  ------------------
 1312|     28|      case 'a':	 // 1 string to match.
  ------------------
  |  Branch (1312:7): [True: 4, False: 32]
  ------------------
 1313|      4|        if (memcmp(Mnemonic.data()+2, "ddsubx", 6))
  ------------------
  |  Branch (1313:13): [True: 3, False: 1]
  ------------------
 1314|      3|          break;
 1315|      1|        Mnemonic = "sasx";	 // "saddsubx"
 1316|      1|        return;
 1317|      4|      case 's':	 // 1 string to match.
  ------------------
  |  Branch (1317:7): [True: 4, False: 32]
  ------------------
 1318|      4|        if (memcmp(Mnemonic.data()+2, "ubaddx", 6))
  ------------------
  |  Branch (1318:13): [True: 3, False: 1]
  ------------------
 1319|      3|          break;
 1320|      1|        Mnemonic = "ssax";	 // "ssubaddx"
 1321|      1|        return;
 1322|     36|      }
 1323|     34|      break;
 1324|     34|    case 'u':	 // 2 strings to match.
  ------------------
  |  Branch (1324:5): [True: 14, False: 829]
  ------------------
 1325|     14|      switch (Mnemonic[1]) {
 1326|      4|      default: break;
  ------------------
  |  Branch (1326:7): [True: 4, False: 10]
  ------------------
 1327|      4|      case 'a':	 // 1 string to match.
  ------------------
  |  Branch (1327:7): [True: 4, False: 10]
  ------------------
 1328|      4|        if (memcmp(Mnemonic.data()+2, "ddsubx", 6))
  ------------------
  |  Branch (1328:13): [True: 3, False: 1]
  ------------------
 1329|      3|          break;
 1330|      1|        Mnemonic = "uasx";	 // "uaddsubx"
 1331|      1|        return;
 1332|      6|      case 's':	 // 1 string to match.
  ------------------
  |  Branch (1332:7): [True: 6, False: 8]
  ------------------
 1333|      6|        if (memcmp(Mnemonic.data()+2, "ubaddx", 6))
  ------------------
  |  Branch (1333:13): [True: 5, False: 1]
  ------------------
 1334|      5|          break;
 1335|      1|        Mnemonic = "usax";	 // "usubaddx"
 1336|      1|        return;
 1337|     14|      }
 1338|     12|      break;
 1339|    843|    }
 1340|    838|    break;
 1341|    838|  case 9:	 // 8 strings to match.
  ------------------
  |  Branch (1341:3): [True: 521, False: 86.4k]
  ------------------
 1342|    521|    switch (Mnemonic[0]) {
 1343|    282|    default: break;
  ------------------
  |  Branch (1343:5): [True: 282, False: 239]
  ------------------
 1344|    282|    case 's':	 // 2 strings to match.
  ------------------
  |  Branch (1344:5): [True: 35, False: 486]
  ------------------
 1345|     35|      if (Mnemonic[1] != 'h')
  ------------------
  |  Branch (1345:11): [True: 16, False: 19]
  ------------------
 1346|     16|        break;
 1347|     19|      switch (Mnemonic[2]) {
 1348|     11|      default: break;
  ------------------
  |  Branch (1348:7): [True: 11, False: 8]
  ------------------
 1349|     11|      case 'a':	 // 1 string to match.
  ------------------
  |  Branch (1349:7): [True: 4, False: 15]
  ------------------
 1350|      4|        if (memcmp(Mnemonic.data()+3, "ddsubx", 6))
  ------------------
  |  Branch (1350:13): [True: 3, False: 1]
  ------------------
 1351|      3|          break;
 1352|      1|        Mnemonic = "shasx";	 // "shaddsubx"
 1353|      1|        return;
 1354|      4|      case 's':	 // 1 string to match.
  ------------------
  |  Branch (1354:7): [True: 4, False: 15]
  ------------------
 1355|      4|        if (memcmp(Mnemonic.data()+3, "ubaddx", 6))
  ------------------
  |  Branch (1355:13): [True: 3, False: 1]
  ------------------
 1356|      3|          break;
 1357|      1|        Mnemonic = "shsax";	 // "shsubaddx"
 1358|      1|        return;
 1359|     19|      }
 1360|     17|      break;
 1361|     26|    case 'u':	 // 4 strings to match.
  ------------------
  |  Branch (1361:5): [True: 26, False: 495]
  ------------------
 1362|     26|      switch (Mnemonic[1]) {
 1363|      3|      default: break;
  ------------------
  |  Branch (1363:7): [True: 3, False: 23]
  ------------------
 1364|     12|      case 'h':	 // 2 strings to match.
  ------------------
  |  Branch (1364:7): [True: 12, False: 14]
  ------------------
 1365|     12|        switch (Mnemonic[2]) {
 1366|      3|        default: break;
  ------------------
  |  Branch (1366:9): [True: 3, False: 9]
  ------------------
 1367|      5|        case 'a':	 // 1 string to match.
  ------------------
  |  Branch (1367:9): [True: 5, False: 7]
  ------------------
 1368|      5|          if (memcmp(Mnemonic.data()+3, "ddsubx", 6))
  ------------------
  |  Branch (1368:15): [True: 4, False: 1]
  ------------------
 1369|      4|            break;
 1370|      1|          Mnemonic = "uhasx";	 // "uhaddsubx"
 1371|      1|          return;
 1372|      4|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1372:9): [True: 4, False: 8]
  ------------------
 1373|      4|          if (memcmp(Mnemonic.data()+3, "ubaddx", 6))
  ------------------
  |  Branch (1373:15): [True: 3, False: 1]
  ------------------
 1374|      3|            break;
 1375|      1|          Mnemonic = "uhsax";	 // "uhsubaddx"
 1376|      1|          return;
 1377|     12|        }
 1378|     10|        break;
 1379|     11|      case 'q':	 // 2 strings to match.
  ------------------
  |  Branch (1379:7): [True: 11, False: 15]
  ------------------
 1380|     11|        switch (Mnemonic[2]) {
 1381|      3|        default: break;
  ------------------
  |  Branch (1381:9): [True: 3, False: 8]
  ------------------
 1382|      4|        case 'a':	 // 1 string to match.
  ------------------
  |  Branch (1382:9): [True: 4, False: 7]
  ------------------
 1383|      4|          if (memcmp(Mnemonic.data()+3, "ddsubx", 6))
  ------------------
  |  Branch (1383:15): [True: 3, False: 1]
  ------------------
 1384|      3|            break;
 1385|      1|          Mnemonic = "uqasx";	 // "uqaddsubx"
 1386|      1|          return;
 1387|      4|        case 's':	 // 1 string to match.
  ------------------
  |  Branch (1387:9): [True: 4, False: 7]
  ------------------
 1388|      4|          if (memcmp(Mnemonic.data()+3, "ubaddx", 6))
  ------------------
  |  Branch (1388:15): [True: 3, False: 1]
  ------------------
 1389|      3|            break;
 1390|      1|          Mnemonic = "uqsax";	 // "uqsubaddx"
 1391|      1|          return;
 1392|     11|        }
 1393|      9|        break;
 1394|     26|      }
 1395|     22|      break;
 1396|    178|    case 'v':	 // 2 strings to match.
  ------------------
  |  Branch (1396:5): [True: 178, False: 343]
  ------------------
 1397|    178|      if (memcmp(Mnemonic.data()+1, "movq.f", 6))
  ------------------
  |  Branch (1397:11): [True: 132, False: 46]
  ------------------
 1398|    132|        break;
 1399|     46|      switch (Mnemonic[7]) {
 1400|      8|      default: break;
  ------------------
  |  Branch (1400:7): [True: 8, False: 38]
  ------------------
 1401|     21|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (1401:7): [True: 21, False: 25]
  ------------------
 1402|     21|        if (Mnemonic[8] != '2')
  ------------------
  |  Branch (1402:13): [True: 18, False: 3]
  ------------------
 1403|     18|          break;
 1404|      3|        if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vmovq.f32"
  ------------------
  |  Branch (1404:13): [True: 3, False: 0]
  ------------------
 1405|      3|          Mnemonic = "vmov.f32";
 1406|      3|        return;
 1407|     17|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (1407:7): [True: 17, False: 29]
  ------------------
 1408|     17|        if (Mnemonic[8] != '4')
  ------------------
  |  Branch (1408:13): [True: 11, False: 6]
  ------------------
 1409|     11|          break;
 1410|      6|        if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vmovq.f64"
  ------------------
  |  Branch (1410:13): [True: 6, False: 0]
  ------------------
 1411|      6|          Mnemonic = "vmov.f64";
 1412|      6|        return;
 1413|     46|      }
 1414|     37|      break;
 1415|    521|    }
 1416|    506|    break;
 1417|    506|  case 11:	 // 2 strings to match.
  ------------------
  |  Branch (1417:3): [True: 166, False: 86.7k]
  ------------------
 1418|    166|    if (memcmp(Mnemonic.data()+0, "vrecpeq.", 8))
  ------------------
  |  Branch (1418:9): [True: 162, False: 4]
  ------------------
 1419|    162|      break;
 1420|      4|    switch (Mnemonic[8]) {
 1421|      1|    default: break;
  ------------------
  |  Branch (1421:5): [True: 1, False: 3]
  ------------------
 1422|      2|    case 'f':	 // 1 string to match.
  ------------------
  |  Branch (1422:5): [True: 2, False: 2]
  ------------------
 1423|      2|      if (memcmp(Mnemonic.data()+9, "32", 2))
  ------------------
  |  Branch (1423:11): [True: 1, False: 1]
  ------------------
 1424|      1|        break;
 1425|      1|      if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vrecpeq.f32"
  ------------------
  |  Branch (1425:11): [True: 1, False: 0]
  ------------------
 1426|      1|        Mnemonic = "vrecpe.f32";
 1427|      1|      return;
 1428|      1|    case 'u':	 // 1 string to match.
  ------------------
  |  Branch (1428:5): [True: 1, False: 3]
  ------------------
 1429|      1|      if (memcmp(Mnemonic.data()+9, "32", 2))
  ------------------
  |  Branch (1429:11): [True: 1, False: 0]
  ------------------
 1430|      1|        break;
 1431|      0|      if ((Features & Feature_HasNEON) == Feature_HasNEON)	 // "vrecpeq.u32"
  ------------------
  |  Branch (1431:11): [True: 0, False: 0]
  ------------------
 1432|      0|        Mnemonic = "vrecpe.u32";
 1433|      0|      return;
 1434|      4|    }
 1435|      3|    break;
 1436|  86.9k|  }
 1437|  86.9k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser22MatchOperandParserImplERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEENS1_9StringRefERj:
11459|   104k|                       StringRef Mnemonic, unsigned int &ErrorCode) {
11460|       |  // Get the current feature set.
11461|   104k|  uint64_t AvailableFeatures = getAvailableFeatures();
11462|       |
11463|       |  // Get the next operand index.
11464|   104k|  unsigned NextOpNum = Operands.size() - 1;
11465|       |  // Search the table.
11466|   104k|  auto MnemonicRange =
11467|   104k|    std::equal_range(std::begin(OperandMatchTable), std::end(OperandMatchTable),
11468|   104k|                     Mnemonic, LessOpcodeOperand());
11469|       |
11470|   104k|  if (MnemonicRange.first == MnemonicRange.second)
  ------------------
  |  Branch (11470:7): [True: 43.8k, False: 60.6k]
  ------------------
11471|  43.8k|    return MatchOperand_NoMatch;
11472|       |
11473|  60.6k|  for (const OperandMatchEntry *it = MnemonicRange.first,
11474|   775k|       *ie = MnemonicRange.second; it != ie; ++it) {
  ------------------
  |  Branch (11474:36): [True: 722k, False: 52.3k]
  ------------------
11475|       |    // equal_range guarantees that instruction mnemonic matches.
11476|   722k|    assert(Mnemonic == it->getMnemonic());
  ------------------
  |  Branch (11476:5): [True: 722k, False: 0]
  ------------------
11477|       |
11478|       |    // check if the available features match
11479|   722k|    if ((AvailableFeatures & it->RequiredFeatures) != it->RequiredFeatures) {
  ------------------
  |  Branch (11479:9): [True: 103k, False: 619k]
  ------------------
11480|   103k|      continue;
11481|   103k|    }
11482|       |
11483|       |    // check if the operand in question has a custom parser.
11484|   619k|    if (!(it->OperandMask & (1 << NextOpNum)))
  ------------------
  |  Branch (11484:9): [True: 577k, False: 41.7k]
  ------------------
11485|   577k|      continue;
11486|       |
11487|       |    // call custom parse method to handle the operand
11488|  41.7k|    OperandMatchResultTy Result = tryCustomParseOperand(Operands, it->Class, ErrorCode);
11489|  41.7k|    if (Result != MatchOperand_NoMatch)
  ------------------
  |  Branch (11489:9): [True: 8.25k, False: 33.5k]
  ------------------
11490|  8.25k|      return Result;
11491|  41.7k|  }
11492|       |
11493|       |  // Okay, we had no match.
11494|  52.3k|  return MatchOperand_NoMatch;
11495|  60.6k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_117LessOpcodeOperandclERKNS_17OperandMatchEntryEN7llvm_ks9StringRefE:
10597|   997k|    bool operator()(const OperandMatchEntry &LHS, StringRef RHS) {
10598|   997k|      return LHS.getMnemonic()  < RHS;
10599|   997k|    }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_117LessOpcodeOperandclEN7llvm_ks9StringRefERKNS_17OperandMatchEntryE:
10600|   762k|    bool operator()(StringRef LHS, const OperandMatchEntry &RHS) {
10601|   762k|      return LHS < RHS.getMnemonic();
10602|   762k|    }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_117OperandMatchEntry11getMnemonicEv:
10589|  2.48M|    StringRef getMnemonic() const {
10590|  2.48M|      return StringRef(MnemonicTable + Mnemonic + 1,
10591|  2.48M|                       MnemonicTable[Mnemonic]);
10592|  2.48M|    }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21tryCustomParseOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEEjRj:
11344|  41.7k|                      unsigned MCK, unsigned int &ErrorCode) {
11345|       |
11346|  41.7k|  switch(MCK) {
11347|     58|  case MCK_AM3Offset:
  ------------------
  |  Branch (11347:3): [True: 58, False: 41.7k]
  ------------------
11348|     58|    return parseAM3Offset(Operands, ErrorCode);
11349|     46|  case MCK_BankedReg:
  ------------------
  |  Branch (11349:3): [True: 46, False: 41.7k]
  ------------------
11350|     46|    return parseBankedRegOperand(Operands, ErrorCode);
11351|    218|  case MCK_Bitfield:
  ------------------
  |  Branch (11351:3): [True: 218, False: 41.5k]
  ------------------
11352|    218|    return parseBitfield(Operands, ErrorCode);
11353|  1.16k|  case MCK_CoprocNum:
  ------------------
  |  Branch (11353:3): [True: 1.16k, False: 40.6k]
  ------------------
11354|  1.16k|    return parseCoprocNumOperand(Operands, ErrorCode);
11355|    186|  case MCK_CoprocOption:
  ------------------
  |  Branch (11355:3): [True: 186, False: 41.5k]
  ------------------
11356|    186|    return parseCoprocOptionOperand(Operands, ErrorCode);
11357|  1.06k|  case MCK_CoprocReg:
  ------------------
  |  Branch (11357:3): [True: 1.06k, False: 40.7k]
  ------------------
11358|  1.06k|    return parseCoprocRegOperand(Operands, ErrorCode);
11359|  1.86k|  case MCK_FPImm:
  ------------------
  |  Branch (11359:3): [True: 1.86k, False: 39.9k]
  ------------------
11360|  1.86k|    return parseFPImm(Operands, ErrorCode);
11361|    370|  case MCK_InstSyncBarrierOpt:
  ------------------
  |  Branch (11361:3): [True: 370, False: 41.3k]
  ------------------
11362|    370|    return parseInstSyncBarrierOptOperand(Operands, ErrorCode);
11363|  1.75k|  case MCK_MSRMask:
  ------------------
  |  Branch (11363:3): [True: 1.75k, False: 40.0k]
  ------------------
11364|  1.75k|    return parseMSRMaskOperand(Operands, ErrorCode);
11365|  2.12k|  case MCK_MemBarrierOpt:
  ------------------
  |  Branch (11365:3): [True: 2.12k, False: 39.6k]
  ------------------
11366|  2.12k|    return parseMemBarrierOptOperand(Operands, ErrorCode);
11367|  7.85k|  case MCK_ModImm:
  ------------------
  |  Branch (11367:3): [True: 7.85k, False: 33.9k]
  ------------------
11368|  7.85k|    return parseModImm(Operands, ErrorCode);
11369|      0|  case MCK_PKHASRImm:
  ------------------
  |  Branch (11369:3): [True: 0, False: 41.7k]
  ------------------
11370|      0|    return parsePKHASRImm(Operands, ErrorCode);
11371|      0|  case MCK_PKHLSLImm:
  ------------------
  |  Branch (11371:3): [True: 0, False: 41.7k]
  ------------------
11372|      0|    return parsePKHLSLImm(Operands, ErrorCode);
11373|      1|  case MCK_PostIdxReg:
  ------------------
  |  Branch (11373:3): [True: 1, False: 41.7k]
  ------------------
11374|      1|    return parsePostIdxReg(Operands, ErrorCode);
11375|    684|  case MCK_PostIdxRegShifted:
  ------------------
  |  Branch (11375:3): [True: 684, False: 41.0k]
  ------------------
11376|    684|    return parsePostIdxReg(Operands, ErrorCode);
11377|    328|  case MCK_ProcIFlags:
  ------------------
  |  Branch (11377:3): [True: 328, False: 41.4k]
  ------------------
11378|    328|    return parseProcIFlagsOperand(Operands, ErrorCode);
11379|    131|  case MCK_RotImm:
  ------------------
  |  Branch (11379:3): [True: 131, False: 41.6k]
  ------------------
11380|    131|    return parseRotImm(Operands, ErrorCode);
11381|     59|  case MCK_SetEndImm:
  ------------------
  |  Branch (11381:3): [True: 59, False: 41.7k]
  ------------------
11382|     59|    return parseSetEndImm(Operands, ErrorCode);
11383|    121|  case MCK_ShifterImm:
  ------------------
  |  Branch (11383:3): [True: 121, False: 41.6k]
  ------------------
11384|    121|    return parseShifterImm(Operands, ErrorCode);
11385|  2.13k|  case MCK_VecListDPairAllLanes:
  ------------------
  |  Branch (11385:3): [True: 2.13k, False: 39.6k]
  ------------------
11386|  2.13k|    return parseVectorList(Operands, ErrorCode);
11387|  2.84k|  case MCK_VecListDPair:
  ------------------
  |  Branch (11387:3): [True: 2.84k, False: 38.9k]
  ------------------
11388|  2.84k|    return parseVectorList(Operands, ErrorCode);
11389|    639|  case MCK_VecListDPairSpacedAllLanes:
  ------------------
  |  Branch (11389:3): [True: 639, False: 41.1k]
  ------------------
11390|    639|    return parseVectorList(Operands, ErrorCode);
11391|    765|  case MCK_VecListDPairSpaced:
  ------------------
  |  Branch (11391:3): [True: 765, False: 41.0k]
  ------------------
11392|    765|    return parseVectorList(Operands, ErrorCode);
11393|    227|  case MCK_VecListFourDAllLanes:
  ------------------
  |  Branch (11393:3): [True: 227, False: 41.5k]
  ------------------
11394|    227|    return parseVectorList(Operands, ErrorCode);
11395|  3.22k|  case MCK_VecListFourD:
  ------------------
  |  Branch (11395:3): [True: 3.22k, False: 38.5k]
  ------------------
11396|  3.22k|    return parseVectorList(Operands, ErrorCode);
11397|    129|  case MCK_VecListFourDByteIndexed:
  ------------------
  |  Branch (11397:3): [True: 129, False: 41.6k]
  ------------------
11398|    129|    return parseVectorList(Operands, ErrorCode);
11399|    129|  case MCK_VecListFourDHWordIndexed:
  ------------------
  |  Branch (11399:3): [True: 129, False: 41.6k]
  ------------------
11400|    129|    return parseVectorList(Operands, ErrorCode);
11401|    129|  case MCK_VecListFourDWordIndexed:
  ------------------
  |  Branch (11401:3): [True: 129, False: 41.6k]
  ------------------
11402|    129|    return parseVectorList(Operands, ErrorCode);
11403|    189|  case MCK_VecListFourQAllLanes:
  ------------------
  |  Branch (11403:3): [True: 189, False: 41.5k]
  ------------------
11404|    189|    return parseVectorList(Operands, ErrorCode);
11405|    387|  case MCK_VecListFourQ:
  ------------------
  |  Branch (11405:3): [True: 387, False: 41.3k]
  ------------------
11406|    387|    return parseVectorList(Operands, ErrorCode);
11407|    129|  case MCK_VecListFourQHWordIndexed:
  ------------------
  |  Branch (11407:3): [True: 129, False: 41.6k]
  ------------------
11408|    129|    return parseVectorList(Operands, ErrorCode);
11409|    129|  case MCK_VecListFourQWordIndexed:
  ------------------
  |  Branch (11409:3): [True: 129, False: 41.6k]
  ------------------
11410|    129|    return parseVectorList(Operands, ErrorCode);
11411|  1.42k|  case MCK_VecListOneDAllLanes:
  ------------------
  |  Branch (11411:3): [True: 1.42k, False: 40.3k]
  ------------------
11412|  1.42k|    return parseVectorList(Operands, ErrorCode);
11413|  2.07k|  case MCK_VecListOneD:
  ------------------
  |  Branch (11413:3): [True: 2.07k, False: 39.6k]
  ------------------
11414|  2.07k|    return parseVectorList(Operands, ErrorCode);
11415|    516|  case MCK_VecListOneDByteIndexed:
  ------------------
  |  Branch (11415:3): [True: 516, False: 41.2k]
  ------------------
11416|    516|    return parseVectorList(Operands, ErrorCode);
11417|    516|  case MCK_VecListOneDHWordIndexed:
  ------------------
  |  Branch (11417:3): [True: 516, False: 41.2k]
  ------------------
11418|    516|    return parseVectorList(Operands, ErrorCode);
11419|    516|  case MCK_VecListOneDWordIndexed:
  ------------------
  |  Branch (11419:3): [True: 516, False: 41.2k]
  ------------------
11420|    516|    return parseVectorList(Operands, ErrorCode);
11421|    662|  case MCK_VecListThreeDAllLanes:
  ------------------
  |  Branch (11421:3): [True: 662, False: 41.1k]
  ------------------
11422|    662|    return parseVectorList(Operands, ErrorCode);
11423|  2.72k|  case MCK_VecListThreeD:
  ------------------
  |  Branch (11423:3): [True: 2.72k, False: 39.0k]
  ------------------
11424|  2.72k|    return parseVectorList(Operands, ErrorCode);
11425|    216|  case MCK_VecListThreeDByteIndexed:
  ------------------
  |  Branch (11425:3): [True: 216, False: 41.5k]
  ------------------
11426|    216|    return parseVectorList(Operands, ErrorCode);
11427|    216|  case MCK_VecListThreeDHWordIndexed:
  ------------------
  |  Branch (11427:3): [True: 216, False: 41.5k]
  ------------------
11428|    216|    return parseVectorList(Operands, ErrorCode);
11429|    216|  case MCK_VecListThreeDWordIndexed:
  ------------------
  |  Branch (11429:3): [True: 216, False: 41.5k]
  ------------------
11430|    216|    return parseVectorList(Operands, ErrorCode);
11431|    639|  case MCK_VecListThreeQAllLanes:
  ------------------
  |  Branch (11431:3): [True: 639, False: 41.1k]
  ------------------
11432|    639|    return parseVectorList(Operands, ErrorCode);
11433|    648|  case MCK_VecListThreeQ:
  ------------------
  |  Branch (11433:3): [True: 648, False: 41.1k]
  ------------------
11434|    648|    return parseVectorList(Operands, ErrorCode);
11435|    216|  case MCK_VecListThreeQHWordIndexed:
  ------------------
  |  Branch (11435:3): [True: 216, False: 41.5k]
  ------------------
11436|    216|    return parseVectorList(Operands, ErrorCode);
11437|    216|  case MCK_VecListThreeQWordIndexed:
  ------------------
  |  Branch (11437:3): [True: 216, False: 41.5k]
  ------------------
11438|    216|    return parseVectorList(Operands, ErrorCode);
11439|    255|  case MCK_VecListTwoDByteIndexed:
  ------------------
  |  Branch (11439:3): [True: 255, False: 41.5k]
  ------------------
11440|    255|    return parseVectorList(Operands, ErrorCode);
11441|    255|  case MCK_VecListTwoDHWordIndexed:
  ------------------
  |  Branch (11441:3): [True: 255, False: 41.5k]
  ------------------
11442|    255|    return parseVectorList(Operands, ErrorCode);
11443|    255|  case MCK_VecListTwoDWordIndexed:
  ------------------
  |  Branch (11443:3): [True: 255, False: 41.5k]
  ------------------
11444|    255|    return parseVectorList(Operands, ErrorCode);
11445|    255|  case MCK_VecListTwoQHWordIndexed:
  ------------------
  |  Branch (11445:3): [True: 255, False: 41.5k]
  ------------------
11446|    255|    return parseVectorList(Operands, ErrorCode);
11447|    255|  case MCK_VecListTwoQWordIndexed:
  ------------------
  |  Branch (11447:3): [True: 255, False: 41.5k]
  ------------------
11448|    255|    return parseVectorList(Operands, ErrorCode);
11449|    619|  case MCK_ITCondCode:
  ------------------
  |  Branch (11449:3): [True: 619, False: 41.1k]
  ------------------
11450|    619|    return parseITCondCode(Operands, ErrorCode);
11451|      0|  default:
  ------------------
  |  Branch (11451:3): [True: 0, False: 41.7k]
  ------------------
11452|      0|    return MatchOperand_NoMatch;
11453|  41.7k|  }
11454|      0|  return MatchOperand_NoMatch;
11455|  41.7k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser20MatchInstructionImplERKN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERNS1_6MCInstERmbj:
10457|  35.6k|                     bool matchingInlineAsm, unsigned VariantID) {
10458|       |  // Eliminate obvious mismatches.
10459|  35.6k|  if (Operands.size() > 19) {
  ------------------
  |  Branch (10459:7): [True: 170, False: 35.4k]
  ------------------
10460|    170|    ErrorInfo = 19;
10461|    170|    return Match_InvalidOperand;
10462|    170|  }
10463|       |
10464|       |  // Get the current feature set.
10465|  35.4k|  uint64_t AvailableFeatures = getAvailableFeatures();
10466|       |
10467|       |  // Get the instruction mnemonic, which is the first token.
10468|  35.4k|  StringRef Mnemonic = ((ARMOperand&)*Operands[0]).getToken();
10469|       |
10470|       |  // Process all MnemonicAliases to remap the mnemonic.
10471|  35.4k|  applyMnemonicAliases(Mnemonic, AvailableFeatures, VariantID);
10472|       |
10473|       |  // Some state to try to produce better error messages.
10474|  35.4k|  bool HadMatchOtherThanFeatures = false;
10475|  35.4k|  bool HadMatchOtherThanPredicate = false;
10476|  35.4k|  unsigned RetCode = Match_InvalidOperand;
10477|  35.4k|  uint64_t MissingFeatures = ~0ULL;
10478|       |  // Set ErrorInfo to the operand that mismatches if it is
10479|       |  // wrong for all instances of the instruction.
10480|  35.4k|  ErrorInfo = ~0ULL;
10481|       |  // Find the appropriate table for this asm variant.
10482|  35.4k|  const MatchEntry *Start, *End;
10483|  35.4k|  switch (VariantID) {
10484|      0|  default: llvm_unreachable("invalid variant!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (10484:3): [True: 0, False: 35.4k]
  ------------------
10485|  35.4k|  case 0: Start = std::begin(MatchTable0); End = std::end(MatchTable0); break;
  ------------------
  |  Branch (10485:3): [True: 35.4k, False: 0]
  ------------------
10486|  35.4k|  }
10487|       |  // Search the table.
10488|  35.4k|  auto MnemonicRange = std::equal_range(Start, End, Mnemonic, LessOpcode());
10489|       |
10490|       |  // Return a more specific error code if no mnemonics match.
10491|  35.4k|  if (MnemonicRange.first == MnemonicRange.second)
  ------------------
  |  Branch (10491:7): [True: 2.65k, False: 32.8k]
  ------------------
10492|  2.65k|    return Match_MnemonicFail;
10493|       |
10494|  32.8k|  for (const MatchEntry *it = MnemonicRange.first, *ie = MnemonicRange.second;
10495|   225k|       it != ie; ++it) {
  ------------------
  |  Branch (10495:8): [True: 222k, False: 3.03k]
  ------------------
10496|       |    // equal_range guarantees that instruction mnemonic matches.
10497|   222k|    assert(Mnemonic == it->getMnemonic());
  ------------------
  |  Branch (10497:5): [True: 222k, False: 0]
  ------------------
10498|   222k|    bool OperandsValid = true;
10499|   639k|    for (unsigned i = 0; i != 18; ++i) {
  ------------------
  |  Branch (10499:26): [True: 639k, False: 0]
  ------------------
10500|   639k|      auto Formal = static_cast<MatchClassKind>(it->Classes[i]);
10501|   639k|      if (i+1 >= Operands.size()) {
  ------------------
  |  Branch (10501:11): [True: 49.4k, False: 590k]
  ------------------
10502|  49.4k|        OperandsValid = (Formal == InvalidMatchClass);
10503|  49.4k|        if (!OperandsValid) ErrorInfo = i+1;
  ------------------
  |  Branch (10503:13): [True: 5.09k, False: 44.3k]
  ------------------
10504|  49.4k|        break;
10505|  49.4k|      }
10506|   590k|      MCParsedAsmOperand &Actual = *Operands[i+1];
10507|   590k|      unsigned Diag = validateOperandClass(Actual, Formal);
10508|   590k|      if (Diag == Match_Success)
  ------------------
  |  Branch (10508:11): [True: 416k, False: 173k]
  ------------------
10509|   416k|        continue;
10510|       |      // If the generic handler indicates an invalid operand
10511|       |      // failure, check for a special case.
10512|   173k|      if (Diag == Match_InvalidOperand) {
  ------------------
  |  Branch (10512:11): [True: 173k, False: 374]
  ------------------
10513|   173k|        Diag = validateTargetOperandClass(Actual, Formal);
10514|   173k|        if (Diag == Match_Success)
  ------------------
  |  Branch (10514:13): [True: 809, False: 172k]
  ------------------
10515|    809|          continue;
10516|   173k|      }
10517|       |      // If this operand is broken for all of the instances of this
10518|       |      // mnemonic, keep track of it so we can report loc info.
10519|       |      // If we already had a match that only failed due to a
10520|       |      // target predicate, that diagnostic is preferred.
10521|   173k|      if (!HadMatchOtherThanPredicate &&
  ------------------
  |  Branch (10521:11): [True: 172k, False: 422]
  ------------------
10522|   172k|          (it == MnemonicRange.first || ErrorInfo <= i+1)) {
  ------------------
  |  Branch (10522:12): [True: 20.6k, False: 151k]
  |  Branch (10522:41): [True: 99.5k, False: 52.3k]
  ------------------
10523|   120k|        ErrorInfo = i+1;
10524|       |        // InvalidOperand is the default. Prefer specificity.
10525|   120k|        if (Diag != Match_InvalidOperand)
  ------------------
  |  Branch (10525:13): [True: 374, False: 119k]
  ------------------
10526|    374|          RetCode = Diag;
10527|   120k|      }
10528|       |      // Otherwise, just reject this instance of the mnemonic.
10529|   173k|      OperandsValid = false;
10530|   173k|      break;
10531|   173k|    }
10532|       |
10533|   222k|    if (!OperandsValid) continue;
  ------------------
  |  Branch (10533:9): [True: 178k, False: 44.3k]
  ------------------
10534|  44.3k|    if ((AvailableFeatures & it->RequiredFeatures) != it->RequiredFeatures) {
  ------------------
  |  Branch (10534:9): [True: 14.2k, False: 30.0k]
  ------------------
10535|  14.2k|      HadMatchOtherThanFeatures = true;
10536|  14.2k|      uint64_t NewMissingFeatures = it->RequiredFeatures & ~AvailableFeatures;
10537|  14.2k|      if (countPopulation(NewMissingFeatures) <=
  ------------------
  |  Branch (10537:11): [True: 14.1k, False: 50]
  ------------------
10538|  14.2k|          countPopulation(MissingFeatures))
10539|  14.1k|        MissingFeatures = NewMissingFeatures;
10540|  14.2k|      continue;
10541|  14.2k|    }
10542|       |
10543|  30.0k|    Inst.clear();
10544|       |
10545|  30.0k|    if (matchingInlineAsm) {
  ------------------
  |  Branch (10545:9): [True: 0, False: 30.0k]
  ------------------
10546|      0|      Inst.setOpcode(it->Opcode);
10547|      0|      convertToMapAndConstraints(it->ConvertFn, Operands);
10548|      0|      return Match_Success;
10549|      0|    }
10550|       |
10551|       |    // We have selected a definite instruction, convert the parsed
10552|       |    // operands into the appropriate MCInst.
10553|  30.0k|    convertToMCInst(it->ConvertFn, Inst, it->Opcode, Operands);
10554|       |
10555|       |    // We have a potential match. Check the target predicate to
10556|       |    // handle any context sensitive constraints.
10557|  30.0k|    unsigned MatchResult;
10558|  30.0k|    if ((MatchResult = checkTargetMatchPredicate(Inst)) != Match_Success) {
  ------------------
  |  Branch (10558:9): [True: 292, False: 29.8k]
  ------------------
10559|    292|      Inst.clear();
10560|    292|      RetCode = MatchResult;
10561|    292|      HadMatchOtherThanPredicate = true;
10562|    292|      continue;
10563|    292|    }
10564|       |
10565|  29.8k|    std::string Info;
10566|  29.8k|    if (MII.get(Inst.getOpcode()).getDeprecatedInfo(Inst, getSTI(), Info)) {
  ------------------
  |  Branch (10566:9): [True: 35, False: 29.7k]
  ------------------
10567|     35|      SMLoc Loc = ((ARMOperand&)*Operands[0]).getStartLoc();
10568|     35|      getParser().Warning(Loc, Info, None);
10569|     35|    }
10570|  29.8k|    return Match_Success;
10571|  30.0k|  }
10572|       |
10573|       |  // Okay, we had no match.  Try to return a useful error code.
10574|  3.03k|  if (HadMatchOtherThanPredicate || !HadMatchOtherThanFeatures)
  ------------------
  |  Branch (10574:7): [True: 5, False: 3.03k]
  |  Branch (10574:37): [True: 2.79k, False: 236]
  ------------------
10575|  2.80k|    return RetCode;
10576|       |
10577|       |  // Missing feature matches return which features were missing
10578|    236|  ErrorInfo = MissingFeatures;
10579|    236|  return Match_MissingFeature;
10580|  3.03k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110LessOpcodeclERKNS_10MatchEntryEN7llvm_ks9StringRefE:
 6697|   418k|    bool operator()(const MatchEntry &LHS, StringRef RHS) {
 6698|   418k|      return LHS.getMnemonic() < RHS;
 6699|   418k|    }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110LessOpcodeclEN7llvm_ks9StringRefERKNS_10MatchEntryE:
 6700|   343k|    bool operator()(StringRef LHS, const MatchEntry &RHS) {
 6701|   343k|      return LHS < RHS.getMnemonic();
 6702|   343k|    }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110MatchEntry11getMnemonicEv:
 6689|   984k|    StringRef getMnemonic() const {
 6690|   984k|      return StringRef(MnemonicTable + Mnemonic + 1,
 6691|   984k|                       MnemonicTable[Mnemonic]);
 6692|   984k|    }
ARMAsmParser.cpp:_ZL20validateOperandClassRN7llvm_ks18MCParsedAsmOperandEN12_GLOBAL__N_114MatchClassKindE:
 5310|   590k|static unsigned validateOperandClass(MCParsedAsmOperand &GOp, MatchClassKind Kind) {
 5311|   590k|  ARMOperand &Operand = (ARMOperand&)GOp;
 5312|   590k|  if (Kind == InvalidMatchClass)
  ------------------
  |  Branch (5312:7): [True: 9.27k, False: 580k]
  ------------------
 5313|  9.27k|    return MCTargetAsmParser::Match_InvalidOperand;
 5314|       |
 5315|   580k|  if (Operand.isToken())
  ------------------
  |  Branch (5315:7): [True: 33.9k, False: 546k]
  ------------------
 5316|  33.9k|    return isSubclass(matchTokenString(Operand.getToken()), Kind) ?
  ------------------
  |  Branch (5316:12): [True: 5.88k, False: 28.0k]
  ------------------
 5317|  5.88k|             MCTargetAsmParser::Match_Success :
 5318|  33.9k|             MCTargetAsmParser::Match_InvalidOperand;
 5319|       |
 5320|       |  // 'AM2OffsetImm' class
 5321|   546k|  if (Kind == MCK_AM2OffsetImm) {
  ------------------
  |  Branch (5321:7): [True: 637, False: 546k]
  ------------------
 5322|    637|    if (Operand.isAM2OffsetImm())
  ------------------
  |  Branch (5322:9): [True: 589, False: 48]
  ------------------
 5323|    589|      return MCTargetAsmParser::Match_Success;
 5324|    637|  }
 5325|       |
 5326|       |  // 'AM3Offset' class
 5327|   546k|  if (Kind == MCK_AM3Offset) {
  ------------------
  |  Branch (5327:7): [True: 61, False: 546k]
  ------------------
 5328|     61|    if (Operand.isAM3Offset())
  ------------------
  |  Branch (5328:9): [True: 56, False: 5]
  ------------------
 5329|     56|      return MCTargetAsmParser::Match_Success;
 5330|     61|  }
 5331|       |
 5332|       |  // 'AddrMode2' class
 5333|   546k|  if (Kind == MCK_AddrMode2) {
  ------------------
  |  Branch (5333:7): [True: 0, False: 546k]
  ------------------
 5334|      0|    if (Operand.isAddrMode2())
  ------------------
  |  Branch (5334:9): [True: 0, False: 0]
  ------------------
 5335|      0|      return MCTargetAsmParser::Match_Success;
 5336|      0|  }
 5337|       |
 5338|       |  // 'AddrMode3' class
 5339|   546k|  if (Kind == MCK_AddrMode3) {
  ------------------
  |  Branch (5339:7): [True: 1.11k, False: 545k]
  ------------------
 5340|  1.11k|    if (Operand.isAddrMode3())
  ------------------
  |  Branch (5340:9): [True: 1.10k, False: 14]
  ------------------
 5341|  1.10k|      return MCTargetAsmParser::Match_Success;
 5342|  1.11k|  }
 5343|       |
 5344|       |  // 'AddrMode5' class
 5345|   545k|  if (Kind == MCK_AddrMode5) {
  ------------------
  |  Branch (5345:7): [True: 638, False: 544k]
  ------------------
 5346|    638|    if (Operand.isAddrMode5())
  ------------------
  |  Branch (5346:9): [True: 616, False: 22]
  ------------------
 5347|    616|      return MCTargetAsmParser::Match_Success;
 5348|    638|  }
 5349|       |
 5350|       |  // 'AddrMode5FP16' class
 5351|   544k|  if (Kind == MCK_AddrMode5FP16) {
  ------------------
  |  Branch (5351:7): [True: 0, False: 544k]
  ------------------
 5352|      0|    if (Operand.isAddrMode5FP16())
  ------------------
  |  Branch (5352:9): [True: 0, False: 0]
  ------------------
 5353|      0|      return MCTargetAsmParser::Match_Success;
 5354|      0|  }
 5355|       |
 5356|       |  // 'AlignedMemory16' class
 5357|   544k|  if (Kind == MCK_AlignedMemory16) {
  ------------------
  |  Branch (5357:7): [True: 0, False: 544k]
  ------------------
 5358|      0|    if (Operand.isAlignedMemory16())
  ------------------
  |  Branch (5358:9): [True: 0, False: 0]
  ------------------
 5359|      0|      return MCTargetAsmParser::Match_Success;
 5360|      0|    return ARMAsmParser::Match_AlignedMemoryRequires16;
 5361|      0|  }
 5362|       |
 5363|       |  // 'AlignedMemory32' class
 5364|   544k|  if (Kind == MCK_AlignedMemory32) {
  ------------------
  |  Branch (5364:7): [True: 0, False: 544k]
  ------------------
 5365|      0|    if (Operand.isAlignedMemory32())
  ------------------
  |  Branch (5365:9): [True: 0, False: 0]
  ------------------
 5366|      0|      return MCTargetAsmParser::Match_Success;
 5367|      0|    return ARMAsmParser::Match_AlignedMemoryRequires32;
 5368|      0|  }
 5369|       |
 5370|       |  // 'AlignedMemory64' class
 5371|   544k|  if (Kind == MCK_AlignedMemory64) {
  ------------------
  |  Branch (5371:7): [True: 0, False: 544k]
  ------------------
 5372|      0|    if (Operand.isAlignedMemory64())
  ------------------
  |  Branch (5372:9): [True: 0, False: 0]
  ------------------
 5373|      0|      return MCTargetAsmParser::Match_Success;
 5374|      0|    return ARMAsmParser::Match_AlignedMemoryRequires64;
 5375|      0|  }
 5376|       |
 5377|       |  // 'AlignedMemory64or128' class
 5378|   544k|  if (Kind == MCK_AlignedMemory64or128) {
  ------------------
  |  Branch (5378:7): [True: 0, False: 544k]
  ------------------
 5379|      0|    if (Operand.isAlignedMemory64or128())
  ------------------
  |  Branch (5379:9): [True: 0, False: 0]
  ------------------
 5380|      0|      return MCTargetAsmParser::Match_Success;
 5381|      0|    return ARMAsmParser::Match_AlignedMemoryRequires64or128;
 5382|      0|  }
 5383|       |
 5384|       |  // 'AlignedMemory64or128or256' class
 5385|   544k|  if (Kind == MCK_AlignedMemory64or128or256) {
  ------------------
  |  Branch (5385:7): [True: 0, False: 544k]
  ------------------
 5386|      0|    if (Operand.isAlignedMemory64or128or256())
  ------------------
  |  Branch (5386:9): [True: 0, False: 0]
  ------------------
 5387|      0|      return MCTargetAsmParser::Match_Success;
 5388|      0|    return ARMAsmParser::Match_AlignedMemoryRequires64or128or256;
 5389|      0|  }
 5390|       |
 5391|       |  // 'AlignedMemoryNone' class
 5392|   544k|  if (Kind == MCK_AlignedMemoryNone) {
  ------------------
  |  Branch (5392:7): [True: 0, False: 544k]
  ------------------
 5393|      0|    if (Operand.isAlignedMemoryNone())
  ------------------
  |  Branch (5393:9): [True: 0, False: 0]
  ------------------
 5394|      0|      return MCTargetAsmParser::Match_Success;
 5395|      0|    return ARMAsmParser::Match_AlignedMemoryRequiresNone;
 5396|      0|  }
 5397|       |
 5398|       |  // 'AlignedMemory' class
 5399|   544k|  if (Kind == MCK_AlignedMemory) {
  ------------------
  |  Branch (5399:7): [True: 0, False: 544k]
  ------------------
 5400|      0|    if (Operand.isAlignedMemory())
  ------------------
  |  Branch (5400:9): [True: 0, False: 0]
  ------------------
 5401|      0|      return MCTargetAsmParser::Match_Success;
 5402|      0|  }
 5403|       |
 5404|       |  // 'DupAlignedMemory16' class
 5405|   544k|  if (Kind == MCK_DupAlignedMemory16) {
  ------------------
  |  Branch (5405:7): [True: 0, False: 544k]
  ------------------
 5406|      0|    if (Operand.isDupAlignedMemory16())
  ------------------
  |  Branch (5406:9): [True: 0, False: 0]
  ------------------
 5407|      0|      return MCTargetAsmParser::Match_Success;
 5408|      0|    return ARMAsmParser::Match_DupAlignedMemoryRequires16;
 5409|      0|  }
 5410|       |
 5411|       |  // 'DupAlignedMemory32' class
 5412|   544k|  if (Kind == MCK_DupAlignedMemory32) {
  ------------------
  |  Branch (5412:7): [True: 0, False: 544k]
  ------------------
 5413|      0|    if (Operand.isDupAlignedMemory32())
  ------------------
  |  Branch (5413:9): [True: 0, False: 0]
  ------------------
 5414|      0|      return MCTargetAsmParser::Match_Success;
 5415|      0|    return ARMAsmParser::Match_DupAlignedMemoryRequires32;
 5416|      0|  }
 5417|       |
 5418|       |  // 'DupAlignedMemory64' class
 5419|   544k|  if (Kind == MCK_DupAlignedMemory64) {
  ------------------
  |  Branch (5419:7): [True: 0, False: 544k]
  ------------------
 5420|      0|    if (Operand.isDupAlignedMemory64())
  ------------------
  |  Branch (5420:9): [True: 0, False: 0]
  ------------------
 5421|      0|      return MCTargetAsmParser::Match_Success;
 5422|      0|    return ARMAsmParser::Match_DupAlignedMemoryRequires64;
 5423|      0|  }
 5424|       |
 5425|       |  // 'DupAlignedMemory64or128' class
 5426|   544k|  if (Kind == MCK_DupAlignedMemory64or128) {
  ------------------
  |  Branch (5426:7): [True: 0, False: 544k]
  ------------------
 5427|      0|    if (Operand.isDupAlignedMemory64or128())
  ------------------
  |  Branch (5427:9): [True: 0, False: 0]
  ------------------
 5428|      0|      return MCTargetAsmParser::Match_Success;
 5429|      0|    return ARMAsmParser::Match_DupAlignedMemoryRequires64or128;
 5430|      0|  }
 5431|       |
 5432|       |  // 'DupAlignedMemoryNone' class
 5433|   544k|  if (Kind == MCK_DupAlignedMemoryNone) {
  ------------------
  |  Branch (5433:7): [True: 0, False: 544k]
  ------------------
 5434|      0|    if (Operand.isDupAlignedMemoryNone())
  ------------------
  |  Branch (5434:9): [True: 0, False: 0]
  ------------------
 5435|      0|      return MCTargetAsmParser::Match_Success;
 5436|      0|    return ARMAsmParser::Match_DupAlignedMemoryRequiresNone;
 5437|      0|  }
 5438|       |
 5439|       |  // 'AdrLabel' class
 5440|   544k|  if (Kind == MCK_AdrLabel) {
  ------------------
  |  Branch (5440:7): [True: 2.02k, False: 542k]
  ------------------
 5441|  2.02k|    if (Operand.isAdrLabel())
  ------------------
  |  Branch (5441:9): [True: 1.92k, False: 100]
  ------------------
 5442|  1.92k|      return MCTargetAsmParser::Match_Success;
 5443|  2.02k|  }
 5444|       |
 5445|       |  // 'BankedReg' class
 5446|   542k|  if (Kind == MCK_BankedReg) {
  ------------------
  |  Branch (5446:7): [True: 339, False: 542k]
  ------------------
 5447|    339|    if (Operand.isBankedReg())
  ------------------
  |  Branch (5447:9): [True: 0, False: 339]
  ------------------
 5448|      0|      return MCTargetAsmParser::Match_Success;
 5449|    339|  }
 5450|       |
 5451|       |  // 'Bitfield' class
 5452|   542k|  if (Kind == MCK_Bitfield) {
  ------------------
  |  Branch (5452:7): [True: 8, False: 542k]
  ------------------
 5453|      8|    if (Operand.isBitfield())
  ------------------
  |  Branch (5453:9): [True: 5, False: 3]
  ------------------
 5454|      5|      return MCTargetAsmParser::Match_Success;
 5455|      8|  }
 5456|       |
 5457|       |  // 'CCOut' class
 5458|   542k|  if (Kind == MCK_CCOut) {
  ------------------
  |  Branch (5458:7): [True: 75.0k, False: 467k]
  ------------------
 5459|  75.0k|    if (Operand.isCCOut())
  ------------------
  |  Branch (5459:9): [True: 69.8k, False: 5.16k]
  ------------------
 5460|  69.8k|      return MCTargetAsmParser::Match_Success;
 5461|  75.0k|  }
 5462|       |
 5463|       |  // 'CondCode' class
 5464|   472k|  if (Kind == MCK_CondCode) {
  ------------------
  |  Branch (5464:7): [True: 205k, False: 267k]
  ------------------
 5465|   205k|    if (Operand.isCondCode())
  ------------------
  |  Branch (5465:9): [True: 174k, False: 30.3k]
  ------------------
 5466|   174k|      return MCTargetAsmParser::Match_Success;
 5467|   205k|  }
 5468|       |
 5469|       |  // 'CoprocNum' class
 5470|   297k|  if (Kind == MCK_CoprocNum) {
  ------------------
  |  Branch (5470:7): [True: 788, False: 297k]
  ------------------
 5471|    788|    if (Operand.isCoprocNum())
  ------------------
  |  Branch (5471:9): [True: 543, False: 245]
  ------------------
 5472|    543|      return MCTargetAsmParser::Match_Success;
 5473|    788|  }
 5474|       |
 5475|       |  // 'CoprocOption' class
 5476|   297k|  if (Kind == MCK_CoprocOption) {
  ------------------
  |  Branch (5476:7): [True: 0, False: 297k]
  ------------------
 5477|      0|    if (Operand.isCoprocOption())
  ------------------
  |  Branch (5477:9): [True: 0, False: 0]
  ------------------
 5478|      0|      return MCTargetAsmParser::Match_Success;
 5479|      0|  }
 5480|       |
 5481|       |  // 'CoprocReg' class
 5482|   297k|  if (Kind == MCK_CoprocReg) {
  ------------------
  |  Branch (5482:7): [True: 499, False: 296k]
  ------------------
 5483|    499|    if (Operand.isCoprocReg())
  ------------------
  |  Branch (5483:9): [True: 431, False: 68]
  ------------------
 5484|    431|      return MCTargetAsmParser::Match_Success;
 5485|    499|  }
 5486|       |
 5487|       |  // 'DPRRegList' class
 5488|   296k|  if (Kind == MCK_DPRRegList) {
  ------------------
  |  Branch (5488:7): [True: 1, False: 296k]
  ------------------
 5489|      1|    if (Operand.isDPRRegList())
  ------------------
  |  Branch (5489:9): [True: 0, False: 1]
  ------------------
 5490|      0|      return MCTargetAsmParser::Match_Success;
 5491|      1|  }
 5492|       |
 5493|       |  // 'FPImm' class
 5494|   296k|  if (Kind == MCK_FPImm) {
  ------------------
  |  Branch (5494:7): [True: 234, False: 296k]
  ------------------
 5495|    234|    if (Operand.isFPImm())
  ------------------
  |  Branch (5495:9): [True: 112, False: 122]
  ------------------
 5496|    112|      return MCTargetAsmParser::Match_Success;
 5497|    234|  }
 5498|       |
 5499|       |  // 'Imm0_15' class
 5500|   296k|  if (Kind == MCK_Imm0_15) {
  ------------------
  |  Branch (5500:7): [True: 357, False: 296k]
  ------------------
 5501|    357|    if (Operand.isImm0_15())
  ------------------
  |  Branch (5501:9): [True: 169, False: 188]
  ------------------
 5502|    169|      return MCTargetAsmParser::Match_Success;
 5503|    188|    return ARMAsmParser::Match_ImmRange0_15;
 5504|    357|  }
 5505|       |
 5506|       |  // 'Imm0_1' class
 5507|   296k|  if (Kind == MCK_Imm0_1) {
  ------------------
  |  Branch (5507:7): [True: 88, False: 296k]
  ------------------
 5508|     88|    if (Operand.isImm0_1())
  ------------------
  |  Branch (5508:9): [True: 2, False: 86]
  ------------------
 5509|      2|      return MCTargetAsmParser::Match_Success;
 5510|     88|  }
 5511|       |
 5512|       |  // 'Imm0_239' class
 5513|   296k|  if (Kind == MCK_Imm0_239) {
  ------------------
  |  Branch (5513:7): [True: 241, False: 296k]
  ------------------
 5514|    241|    if (Operand.isImm0_239())
  ------------------
  |  Branch (5514:9): [True: 55, False: 186]
  ------------------
 5515|     55|      return MCTargetAsmParser::Match_Success;
 5516|    186|    return ARMAsmParser::Match_ImmRange0_239;
 5517|    241|  }
 5518|       |
 5519|       |  // 'Imm0_255' class
 5520|   296k|  if (Kind == MCK_Imm0_255) {
  ------------------
  |  Branch (5520:7): [True: 3.30k, False: 292k]
  ------------------
 5521|  3.30k|    if (Operand.isImm0_255())
  ------------------
  |  Branch (5521:9): [True: 220, False: 3.08k]
  ------------------
 5522|    220|      return MCTargetAsmParser::Match_Success;
 5523|  3.30k|  }
 5524|       |
 5525|       |  // 'Imm0_31' class
 5526|   295k|  if (Kind == MCK_Imm0_31) {
  ------------------
  |  Branch (5526:7): [True: 4.09k, False: 291k]
  ------------------
 5527|  4.09k|    if (Operand.isImm0_31())
  ------------------
  |  Branch (5527:9): [True: 2.01k, False: 2.07k]
  ------------------
 5528|  2.01k|      return MCTargetAsmParser::Match_Success;
 5529|  4.09k|  }
 5530|       |
 5531|       |  // 'Imm0_32' class
 5532|   293k|  if (Kind == MCK_Imm0_32) {
  ------------------
  |  Branch (5532:7): [True: 360, False: 293k]
  ------------------
 5533|    360|    if (Operand.isImm0_32())
  ------------------
  |  Branch (5533:9): [True: 67, False: 293]
  ------------------
 5534|     67|      return MCTargetAsmParser::Match_Success;
 5535|    360|  }
 5536|       |
 5537|       |  // 'Imm0_3' class
 5538|   293k|  if (Kind == MCK_Imm0_3) {
  ------------------
  |  Branch (5538:7): [True: 0, False: 293k]
  ------------------
 5539|      0|    if (Operand.isImm0_3())
  ------------------
  |  Branch (5539:9): [True: 0, False: 0]
  ------------------
 5540|      0|      return MCTargetAsmParser::Match_Success;
 5541|      0|  }
 5542|       |
 5543|       |  // 'Imm0_63' class
 5544|   293k|  if (Kind == MCK_Imm0_63) {
  ------------------
  |  Branch (5544:7): [True: 130, False: 293k]
  ------------------
 5545|    130|    if (Operand.isImm0_63())
  ------------------
  |  Branch (5545:9): [True: 6, False: 124]
  ------------------
 5546|      6|      return MCTargetAsmParser::Match_Success;
 5547|    130|  }
 5548|       |
 5549|       |  // 'Imm0_65535' class
 5550|   293k|  if (Kind == MCK_Imm0_65535) {
  ------------------
  |  Branch (5550:7): [True: 179, False: 293k]
  ------------------
 5551|    179|    if (Operand.isImm0_65535())
  ------------------
  |  Branch (5551:9): [True: 43, False: 136]
  ------------------
 5552|     43|      return MCTargetAsmParser::Match_Success;
 5553|    179|  }
 5554|       |
 5555|       |  // 'Imm0_65535Expr' class
 5556|   293k|  if (Kind == MCK_Imm0_65535Expr) {
  ------------------
  |  Branch (5556:7): [True: 87, False: 293k]
  ------------------
 5557|     87|    if (Operand.isImm0_65535Expr())
  ------------------
  |  Branch (5557:9): [True: 75, False: 12]
  ------------------
 5558|     75|      return MCTargetAsmParser::Match_Success;
 5559|     87|  }
 5560|       |
 5561|       |  // 'Imm0_7' class
 5562|   293k|  if (Kind == MCK_Imm0_7) {
  ------------------
  |  Branch (5562:7): [True: 381, False: 293k]
  ------------------
 5563|    381|    if (Operand.isImm0_7())
  ------------------
  |  Branch (5563:9): [True: 86, False: 295]
  ------------------
 5564|     86|      return MCTargetAsmParser::Match_Success;
 5565|    381|  }
 5566|       |
 5567|       |  // 'Imm16' class
 5568|   293k|  if (Kind == MCK_Imm16) {
  ------------------
  |  Branch (5568:7): [True: 0, False: 293k]
  ------------------
 5569|      0|    if (Operand.isImm16())
  ------------------
  |  Branch (5569:9): [True: 0, False: 0]
  ------------------
 5570|      0|      return MCTargetAsmParser::Match_Success;
 5571|      0|  }
 5572|       |
 5573|       |  // 'Imm1_15' class
 5574|   293k|  if (Kind == MCK_Imm1_15) {
  ------------------
  |  Branch (5574:7): [True: 0, False: 293k]
  ------------------
 5575|      0|    if (Operand.isImm1_15())
  ------------------
  |  Branch (5575:9): [True: 0, False: 0]
  ------------------
 5576|      0|      return MCTargetAsmParser::Match_Success;
 5577|      0|  }
 5578|       |
 5579|       |  // 'Imm1_16' class
 5580|   293k|  if (Kind == MCK_Imm1_16) {
  ------------------
  |  Branch (5580:7): [True: 0, False: 293k]
  ------------------
 5581|      0|    if (Operand.isImm1_16())
  ------------------
  |  Branch (5581:9): [True: 0, False: 0]
  ------------------
 5582|      0|      return MCTargetAsmParser::Match_Success;
 5583|      0|  }
 5584|       |
 5585|       |  // 'Imm1_31' class
 5586|   293k|  if (Kind == MCK_Imm1_31) {
  ------------------
  |  Branch (5586:7): [True: 0, False: 293k]
  ------------------
 5587|      0|    if (Operand.isImm1_31())
  ------------------
  |  Branch (5587:9): [True: 0, False: 0]
  ------------------
 5588|      0|      return MCTargetAsmParser::Match_Success;
 5589|      0|  }
 5590|       |
 5591|       |  // 'Imm1_32' class
 5592|   293k|  if (Kind == MCK_Imm1_32) {
  ------------------
  |  Branch (5592:7): [True: 22, False: 293k]
  ------------------
 5593|     22|    if (Operand.isImm1_32())
  ------------------
  |  Branch (5593:9): [True: 6, False: 16]
  ------------------
 5594|      6|      return MCTargetAsmParser::Match_Success;
 5595|     22|  }
 5596|       |
 5597|       |  // 'Imm1_7' class
 5598|   293k|  if (Kind == MCK_Imm1_7) {
  ------------------
  |  Branch (5598:7): [True: 0, False: 293k]
  ------------------
 5599|      0|    if (Operand.isImm1_7())
  ------------------
  |  Branch (5599:9): [True: 0, False: 0]
  ------------------
 5600|      0|      return MCTargetAsmParser::Match_Success;
 5601|      0|  }
 5602|       |
 5603|       |  // 'Imm24bit' class
 5604|   293k|  if (Kind == MCK_Imm24bit) {
  ------------------
  |  Branch (5604:7): [True: 112, False: 293k]
  ------------------
 5605|    112|    if (Operand.isImm24bit())
  ------------------
  |  Branch (5605:9): [True: 32, False: 80]
  ------------------
 5606|     32|      return MCTargetAsmParser::Match_Success;
 5607|    112|  }
 5608|       |
 5609|       |  // 'Imm256_65535Expr' class
 5610|   293k|  if (Kind == MCK_Imm256_65535Expr) {
  ------------------
  |  Branch (5610:7): [True: 100, False: 293k]
  ------------------
 5611|    100|    if (Operand.isImm256_65535Expr())
  ------------------
  |  Branch (5611:9): [True: 40, False: 60]
  ------------------
 5612|     40|      return MCTargetAsmParser::Match_Success;
 5613|    100|  }
 5614|       |
 5615|       |  // 'Imm32' class
 5616|   293k|  if (Kind == MCK_Imm32) {
  ------------------
  |  Branch (5616:7): [True: 0, False: 293k]
  ------------------
 5617|      0|    if (Operand.isImm32())
  ------------------
  |  Branch (5617:9): [True: 0, False: 0]
  ------------------
 5618|      0|      return MCTargetAsmParser::Match_Success;
 5619|      0|  }
 5620|       |
 5621|       |  // 'Imm8' class
 5622|   293k|  if (Kind == MCK_Imm8) {
  ------------------
  |  Branch (5622:7): [True: 0, False: 293k]
  ------------------
 5623|      0|    if (Operand.isImm8())
  ------------------
  |  Branch (5623:9): [True: 0, False: 0]
  ------------------
 5624|      0|      return MCTargetAsmParser::Match_Success;
 5625|      0|  }
 5626|       |
 5627|       |  // 'Imm' class
 5628|   293k|  if (Kind == MCK_Imm) {
  ------------------
  |  Branch (5628:7): [True: 22.4k, False: 271k]
  ------------------
 5629|  22.4k|    if (Operand.isImm())
  ------------------
  |  Branch (5629:9): [True: 18.6k, False: 3.82k]
  ------------------
 5630|  18.6k|      return MCTargetAsmParser::Match_Success;
 5631|  22.4k|  }
 5632|       |
 5633|       |  // 'InstSyncBarrierOpt' class
 5634|   274k|  if (Kind == MCK_InstSyncBarrierOpt) {
  ------------------
  |  Branch (5634:7): [True: 326, False: 274k]
  ------------------
 5635|    326|    if (Operand.isInstSyncBarrierOpt())
  ------------------
  |  Branch (5635:9): [True: 264, False: 62]
  ------------------
 5636|    264|      return MCTargetAsmParser::Match_Success;
 5637|    326|  }
 5638|       |
 5639|       |  // 'MSRMask' class
 5640|   274k|  if (Kind == MCK_MSRMask) {
  ------------------
  |  Branch (5640:7): [True: 552, False: 274k]
  ------------------
 5641|    552|    if (Operand.isMSRMask())
  ------------------
  |  Branch (5641:9): [True: 251, False: 301]
  ------------------
 5642|    251|      return MCTargetAsmParser::Match_Success;
 5643|    552|  }
 5644|       |
 5645|       |  // 'MemBarrierOpt' class
 5646|   274k|  if (Kind == MCK_MemBarrierOpt) {
  ------------------
  |  Branch (5646:7): [True: 1.21k, False: 273k]
  ------------------
 5647|  1.21k|    if (Operand.isMemBarrierOpt())
  ------------------
  |  Branch (5647:9): [True: 754, False: 461]
  ------------------
 5648|    754|      return MCTargetAsmParser::Match_Success;
 5649|  1.21k|  }
 5650|       |
 5651|       |  // 'MemImm0_1020s4Offset' class
 5652|   273k|  if (Kind == MCK_MemImm0_1020s4Offset) {
  ------------------
  |  Branch (5652:7): [True: 1, False: 273k]
  ------------------
 5653|      1|    if (Operand.isMemImm0_1020s4Offset())
  ------------------
  |  Branch (5653:9): [True: 0, False: 1]
  ------------------
 5654|      0|      return MCTargetAsmParser::Match_Success;
 5655|      1|  }
 5656|       |
 5657|       |  // 'MemImm12Offset' class
 5658|   273k|  if (Kind == MCK_MemImm12Offset) {
  ------------------
  |  Branch (5658:7): [True: 2.28k, False: 271k]
  ------------------
 5659|  2.28k|    if (Operand.isMemImm12Offset())
  ------------------
  |  Branch (5659:9): [True: 2.13k, False: 154]
  ------------------
 5660|  2.13k|      return MCTargetAsmParser::Match_Success;
 5661|  2.28k|  }
 5662|       |
 5663|       |  // 'MemImm8Offset' class
 5664|   271k|  if (Kind == MCK_MemImm8Offset) {
  ------------------
  |  Branch (5664:7): [True: 707, False: 270k]
  ------------------
 5665|    707|    if (Operand.isMemImm8Offset())
  ------------------
  |  Branch (5665:9): [True: 668, False: 39]
  ------------------
 5666|    668|      return MCTargetAsmParser::Match_Success;
 5667|    707|  }
 5668|       |
 5669|       |  // 'MemImm8s4Offset' class
 5670|   270k|  if (Kind == MCK_MemImm8s4Offset) {
  ------------------
  |  Branch (5670:7): [True: 112, False: 270k]
  ------------------
 5671|    112|    if (Operand.isMemImm8s4Offset())
  ------------------
  |  Branch (5671:9): [True: 96, False: 16]
  ------------------
 5672|     96|      return MCTargetAsmParser::Match_Success;
 5673|    112|  }
 5674|       |
 5675|       |  // 'MemNegImm8Offset' class
 5676|   270k|  if (Kind == MCK_MemNegImm8Offset) {
  ------------------
  |  Branch (5676:7): [True: 1.67k, False: 269k]
  ------------------
 5677|  1.67k|    if (Operand.isMemNegImm8Offset())
  ------------------
  |  Branch (5677:9): [True: 0, False: 1.67k]
  ------------------
 5678|      0|      return MCTargetAsmParser::Match_Success;
 5679|  1.67k|  }
 5680|       |
 5681|       |  // 'MemNoOffset' class
 5682|   270k|  if (Kind == MCK_MemNoOffset) {
  ------------------
  |  Branch (5682:7): [True: 1.00k, False: 269k]
  ------------------
 5683|  1.00k|    if (Operand.isMemNoOffset())
  ------------------
  |  Branch (5683:9): [True: 858, False: 143]
  ------------------
 5684|    858|      return MCTargetAsmParser::Match_Success;
 5685|  1.00k|  }
 5686|       |
 5687|       |  // 'MemPosImm8Offset' class
 5688|   269k|  if (Kind == MCK_MemPosImm8Offset) {
  ------------------
  |  Branch (5688:7): [True: 38, False: 269k]
  ------------------
 5689|     38|    if (Operand.isMemPosImm8Offset())
  ------------------
  |  Branch (5689:9): [True: 34, False: 4]
  ------------------
 5690|     34|      return MCTargetAsmParser::Match_Success;
 5691|     38|  }
 5692|       |
 5693|       |  // 'MemRegOffset' class
 5694|   269k|  if (Kind == MCK_MemRegOffset) {
  ------------------
  |  Branch (5694:7): [True: 827, False: 269k]
  ------------------
 5695|    827|    if (Operand.isMemRegOffset())
  ------------------
  |  Branch (5695:9): [True: 26, False: 801]
  ------------------
 5696|     26|      return MCTargetAsmParser::Match_Success;
 5697|    827|  }
 5698|       |
 5699|       |  // 'ModImm' class
 5700|   269k|  if (Kind == MCK_ModImm) {
  ------------------
  |  Branch (5700:7): [True: 5.12k, False: 264k]
  ------------------
 5701|  5.12k|    if (Operand.isModImm())
  ------------------
  |  Branch (5701:9): [True: 2.40k, False: 2.72k]
  ------------------
 5702|  2.40k|      return MCTargetAsmParser::Match_Success;
 5703|  5.12k|  }
 5704|       |
 5705|       |  // 'ModImmNeg' class
 5706|   267k|  if (Kind == MCK_ModImmNeg) {
  ------------------
  |  Branch (5706:7): [True: 2.01k, False: 265k]
  ------------------
 5707|  2.01k|    if (Operand.isModImmNeg())
  ------------------
  |  Branch (5707:9): [True: 348, False: 1.66k]
  ------------------
 5708|    348|      return MCTargetAsmParser::Match_Success;
 5709|  2.01k|  }
 5710|       |
 5711|       |  // 'ModImmNot' class
 5712|   267k|  if (Kind == MCK_ModImmNot) {
  ------------------
  |  Branch (5712:7): [True: 910, False: 266k]
  ------------------
 5713|    910|    if (Operand.isModImmNot())
  ------------------
  |  Branch (5713:9): [True: 164, False: 746]
  ------------------
 5714|    164|      return MCTargetAsmParser::Match_Success;
 5715|    910|  }
 5716|       |
 5717|       |  // 'PKHASRImm' class
 5718|   266k|  if (Kind == MCK_PKHASRImm) {
  ------------------
  |  Branch (5718:7): [True: 0, False: 266k]
  ------------------
 5719|      0|    if (Operand.isPKHASRImm())
  ------------------
  |  Branch (5719:9): [True: 0, False: 0]
  ------------------
 5720|      0|      return MCTargetAsmParser::Match_Success;
 5721|      0|  }
 5722|       |
 5723|       |  // 'PKHLSLImm' class
 5724|   266k|  if (Kind == MCK_PKHLSLImm) {
  ------------------
  |  Branch (5724:7): [True: 0, False: 266k]
  ------------------
 5725|      0|    if (Operand.isPKHLSLImm())
  ------------------
  |  Branch (5725:9): [True: 0, False: 0]
  ------------------
 5726|      0|      return MCTargetAsmParser::Match_Success;
 5727|      0|  }
 5728|       |
 5729|       |  // 'PostIdxImm8' class
 5730|   266k|  if (Kind == MCK_PostIdxImm8) {
  ------------------
  |  Branch (5730:7): [True: 0, False: 266k]
  ------------------
 5731|      0|    if (Operand.isPostIdxImm8())
  ------------------
  |  Branch (5731:9): [True: 0, False: 0]
  ------------------
 5732|      0|      return MCTargetAsmParser::Match_Success;
 5733|      0|  }
 5734|       |
 5735|       |  // 'PostIdxImm8s4' class
 5736|   266k|  if (Kind == MCK_PostIdxImm8s4) {
  ------------------
  |  Branch (5736:7): [True: 0, False: 266k]
  ------------------
 5737|      0|    if (Operand.isPostIdxImm8s4())
  ------------------
  |  Branch (5737:9): [True: 0, False: 0]
  ------------------
 5738|      0|      return MCTargetAsmParser::Match_Success;
 5739|      0|  }
 5740|       |
 5741|       |  // 'PostIdxReg' class
 5742|   266k|  if (Kind == MCK_PostIdxReg) {
  ------------------
  |  Branch (5742:7): [True: 0, False: 266k]
  ------------------
 5743|      0|    if (Operand.isPostIdxReg())
  ------------------
  |  Branch (5743:9): [True: 0, False: 0]
  ------------------
 5744|      0|      return MCTargetAsmParser::Match_Success;
 5745|      0|  }
 5746|       |
 5747|       |  // 'PostIdxRegShifted' class
 5748|   266k|  if (Kind == MCK_PostIdxRegShifted) {
  ------------------
  |  Branch (5748:7): [True: 48, False: 266k]
  ------------------
 5749|     48|    if (Operand.isPostIdxRegShifted())
  ------------------
  |  Branch (5749:9): [True: 38, False: 10]
  ------------------
 5750|     38|      return MCTargetAsmParser::Match_Success;
 5751|     48|  }
 5752|       |
 5753|       |  // 'ProcIFlags' class
 5754|   266k|  if (Kind == MCK_ProcIFlags) {
  ------------------
  |  Branch (5754:7): [True: 124, False: 266k]
  ------------------
 5755|    124|    if (Operand.isProcIFlags())
  ------------------
  |  Branch (5755:9): [True: 64, False: 60]
  ------------------
 5756|     64|      return MCTargetAsmParser::Match_Success;
 5757|    124|  }
 5758|       |
 5759|       |  // 'RegList' class
 5760|   266k|  if (Kind == MCK_RegList) {
  ------------------
  |  Branch (5760:7): [True: 340, False: 266k]
  ------------------
 5761|    340|    if (Operand.isRegList())
  ------------------
  |  Branch (5761:9): [True: 0, False: 340]
  ------------------
 5762|      0|      return MCTargetAsmParser::Match_Success;
 5763|    340|  }
 5764|       |
 5765|       |  // 'RotImm' class
 5766|   266k|  if (Kind == MCK_RotImm) {
  ------------------
  |  Branch (5766:7): [True: 3, False: 266k]
  ------------------
 5767|      3|    if (Operand.isRotImm())
  ------------------
  |  Branch (5767:9): [True: 0, False: 3]
  ------------------
 5768|      0|      return MCTargetAsmParser::Match_Success;
 5769|      3|  }
 5770|       |
 5771|       |  // 'SPRRegList' class
 5772|   266k|  if (Kind == MCK_SPRRegList) {
  ------------------
  |  Branch (5772:7): [True: 1, False: 266k]
  ------------------
 5773|      1|    if (Operand.isSPRRegList())
  ------------------
  |  Branch (5773:9): [True: 0, False: 1]
  ------------------
 5774|      0|      return MCTargetAsmParser::Match_Success;
 5775|      1|  }
 5776|       |
 5777|       |  // 'SetEndImm' class
 5778|   266k|  if (Kind == MCK_SetEndImm) {
  ------------------
  |  Branch (5778:7): [True: 56, False: 266k]
  ------------------
 5779|     56|    if (Operand.isSetEndImm())
  ------------------
  |  Branch (5779:9): [True: 52, False: 4]
  ------------------
 5780|     52|      return MCTargetAsmParser::Match_Success;
 5781|     56|  }
 5782|       |
 5783|       |  // 'RegShiftedImm' class
 5784|   266k|  if (Kind == MCK_RegShiftedImm) {
  ------------------
  |  Branch (5784:7): [True: 7.79k, False: 258k]
  ------------------
 5785|  7.79k|    if (Operand.isRegShiftedImm())
  ------------------
  |  Branch (5785:9): [True: 449, False: 7.35k]
  ------------------
 5786|    449|      return MCTargetAsmParser::Match_Success;
 5787|  7.79k|  }
 5788|       |
 5789|       |  // 'RegShiftedReg' class
 5790|   266k|  if (Kind == MCK_RegShiftedReg) {
  ------------------
  |  Branch (5790:7): [True: 2.73k, False: 263k]
  ------------------
 5791|  2.73k|    if (Operand.isRegShiftedReg())
  ------------------
  |  Branch (5791:9): [True: 20, False: 2.71k]
  ------------------
 5792|     20|      return MCTargetAsmParser::Match_Success;
 5793|  2.73k|  }
 5794|       |
 5795|       |  // 'ShifterImm' class
 5796|   266k|  if (Kind == MCK_ShifterImm) {
  ------------------
  |  Branch (5796:7): [True: 0, False: 266k]
  ------------------
 5797|      0|    if (Operand.isShifterImm())
  ------------------
  |  Branch (5797:9): [True: 0, False: 0]
  ------------------
 5798|      0|      return MCTargetAsmParser::Match_Success;
 5799|      0|  }
 5800|       |
 5801|       |  // 'ThumbMemPC' class
 5802|   266k|  if (Kind == MCK_ThumbMemPC) {
  ------------------
  |  Branch (5802:7): [True: 1.29k, False: 265k]
  ------------------
 5803|  1.29k|    if (Operand.isThumbMemPC())
  ------------------
  |  Branch (5803:9): [True: 1.17k, False: 116]
  ------------------
 5804|  1.17k|      return MCTargetAsmParser::Match_Success;
 5805|  1.29k|  }
 5806|       |
 5807|       |  // 'ImmThumbSR' class
 5808|   265k|  if (Kind == MCK_ImmThumbSR) {
  ------------------
  |  Branch (5808:7): [True: 1.74k, False: 263k]
  ------------------
 5809|  1.74k|    if (Operand.isImmThumbSR())
  ------------------
  |  Branch (5809:9): [True: 259, False: 1.48k]
  ------------------
 5810|    259|      return MCTargetAsmParser::Match_Success;
 5811|  1.74k|  }
 5812|       |
 5813|       |  // 'UnsignedOffset_b8s2' class
 5814|   264k|  if (Kind == MCK_UnsignedOffset_b8s2) {
  ------------------
  |  Branch (5814:7): [True: 2.10k, False: 262k]
  ------------------
 5815|  2.10k|    if (Operand.isUnsignedOffset<8, 2>())
  ------------------
  |  Branch (5815:9): [True: 91, False: 2.00k]
  ------------------
 5816|     91|      return MCTargetAsmParser::Match_Success;
 5817|  2.10k|  }
 5818|       |
 5819|       |  // 'VecListDPairAllLanes' class
 5820|   264k|  if (Kind == MCK_VecListDPairAllLanes) {
  ------------------
  |  Branch (5820:7): [True: 75, False: 264k]
  ------------------
 5821|     75|    if (Operand.isVecListDPairAllLanes())
  ------------------
  |  Branch (5821:9): [True: 3, False: 72]
  ------------------
 5822|      3|      return MCTargetAsmParser::Match_Success;
 5823|     75|  }
 5824|       |
 5825|       |  // 'VecListDPair' class
 5826|   264k|  if (Kind == MCK_VecListDPair) {
  ------------------
  |  Branch (5826:7): [True: 81, False: 264k]
  ------------------
 5827|     81|    if (Operand.isVecListDPair())
  ------------------
  |  Branch (5827:9): [True: 7, False: 74]
  ------------------
 5828|      7|      return MCTargetAsmParser::Match_Success;
 5829|     81|  }
 5830|       |
 5831|       |  // 'VecListDPairSpacedAllLanes' class
 5832|   264k|  if (Kind == MCK_VecListDPairSpacedAllLanes) {
  ------------------
  |  Branch (5832:7): [True: 36, False: 264k]
  ------------------
 5833|     36|    if (Operand.isVecListDPairSpacedAllLanes())
  ------------------
  |  Branch (5833:9): [True: 0, False: 36]
  ------------------
 5834|      0|      return MCTargetAsmParser::Match_Success;
 5835|     36|  }
 5836|       |
 5837|       |  // 'VecListDPairSpaced' class
 5838|   264k|  if (Kind == MCK_VecListDPairSpaced) {
  ------------------
  |  Branch (5838:7): [True: 36, False: 264k]
  ------------------
 5839|     36|    if (Operand.isVecListDPairSpaced())
  ------------------
  |  Branch (5839:9): [True: 0, False: 36]
  ------------------
 5840|      0|      return MCTargetAsmParser::Match_Success;
 5841|     36|  }
 5842|       |
 5843|       |  // 'VecListFourDAllLanes' class
 5844|   264k|  if (Kind == MCK_VecListFourDAllLanes) {
  ------------------
  |  Branch (5844:7): [True: 24, False: 264k]
  ------------------
 5845|     24|    if (Operand.isVecListFourDAllLanes())
  ------------------
  |  Branch (5845:9): [True: 0, False: 24]
  ------------------
 5846|      0|      return MCTargetAsmParser::Match_Success;
 5847|     24|  }
 5848|       |
 5849|       |  // 'VecListFourD' class
 5850|   264k|  if (Kind == MCK_VecListFourD) {
  ------------------
  |  Branch (5850:7): [True: 105, False: 264k]
  ------------------
 5851|    105|    if (Operand.isVecListFourD())
  ------------------
  |  Branch (5851:9): [True: 6, False: 99]
  ------------------
 5852|      6|      return MCTargetAsmParser::Match_Success;
 5853|    105|  }
 5854|       |
 5855|       |  // 'VecListFourDByteIndexed' class
 5856|   264k|  if (Kind == MCK_VecListFourDByteIndexed) {
  ------------------
  |  Branch (5856:7): [True: 6, False: 264k]
  ------------------
 5857|      6|    if (Operand.isVecListFourDByteIndexed())
  ------------------
  |  Branch (5857:9): [True: 0, False: 6]
  ------------------
 5858|      0|      return MCTargetAsmParser::Match_Success;
 5859|      6|  }
 5860|       |
 5861|       |  // 'VecListFourDHWordIndexed' class
 5862|   264k|  if (Kind == MCK_VecListFourDHWordIndexed) {
  ------------------
  |  Branch (5862:7): [True: 3, False: 264k]
  ------------------
 5863|      3|    if (Operand.isVecListFourDHWordIndexed())
  ------------------
  |  Branch (5863:9): [True: 0, False: 3]
  ------------------
 5864|      0|      return MCTargetAsmParser::Match_Success;
 5865|      3|  }
 5866|       |
 5867|       |  // 'VecListFourDWordIndexed' class
 5868|   264k|  if (Kind == MCK_VecListFourDWordIndexed) {
  ------------------
  |  Branch (5868:7): [True: 15, False: 264k]
  ------------------
 5869|     15|    if (Operand.isVecListFourDWordIndexed())
  ------------------
  |  Branch (5869:9): [True: 0, False: 15]
  ------------------
 5870|      0|      return MCTargetAsmParser::Match_Success;
 5871|     15|  }
 5872|       |
 5873|       |  // 'VecListFourQAllLanes' class
 5874|   264k|  if (Kind == MCK_VecListFourQAllLanes) {
  ------------------
  |  Branch (5874:7): [True: 24, False: 264k]
  ------------------
 5875|     24|    if (Operand.isVecListFourQAllLanes())
  ------------------
  |  Branch (5875:9): [True: 0, False: 24]
  ------------------
 5876|      0|      return MCTargetAsmParser::Match_Success;
 5877|     24|  }
 5878|       |
 5879|       |  // 'VecListFourQ' class
 5880|   264k|  if (Kind == MCK_VecListFourQ) {
  ------------------
  |  Branch (5880:7): [True: 24, False: 264k]
  ------------------
 5881|     24|    if (Operand.isVecListFourQ())
  ------------------
  |  Branch (5881:9): [True: 0, False: 24]
  ------------------
 5882|      0|      return MCTargetAsmParser::Match_Success;
 5883|     24|  }
 5884|       |
 5885|       |  // 'VecListFourQHWordIndexed' class
 5886|   264k|  if (Kind == MCK_VecListFourQHWordIndexed) {
  ------------------
  |  Branch (5886:7): [True: 3, False: 264k]
  ------------------
 5887|      3|    if (Operand.isVecListFourQHWordIndexed())
  ------------------
  |  Branch (5887:9): [True: 0, False: 3]
  ------------------
 5888|      0|      return MCTargetAsmParser::Match_Success;
 5889|      3|  }
 5890|       |
 5891|       |  // 'VecListFourQWordIndexed' class
 5892|   264k|  if (Kind == MCK_VecListFourQWordIndexed) {
  ------------------
  |  Branch (5892:7): [True: 15, False: 264k]
  ------------------
 5893|     15|    if (Operand.isVecListFourQWordIndexed())
  ------------------
  |  Branch (5893:9): [True: 0, False: 15]
  ------------------
 5894|      0|      return MCTargetAsmParser::Match_Success;
 5895|     15|  }
 5896|       |
 5897|       |  // 'VecListOneDAllLanes' class
 5898|   264k|  if (Kind == MCK_VecListOneDAllLanes) {
  ------------------
  |  Branch (5898:7): [True: 39, False: 264k]
  ------------------
 5899|     39|    if (Operand.isVecListOneDAllLanes())
  ------------------
  |  Branch (5899:9): [True: 3, False: 36]
  ------------------
 5900|      3|      return MCTargetAsmParser::Match_Success;
 5901|     39|  }
 5902|       |
 5903|       |  // 'VecListOneD' class
 5904|   264k|  if (Kind == MCK_VecListOneD) {
  ------------------
  |  Branch (5904:7): [True: 45, False: 264k]
  ------------------
 5905|     45|    if (Operand.isVecListOneD())
  ------------------
  |  Branch (5905:9): [True: 4, False: 41]
  ------------------
 5906|      4|      return MCTargetAsmParser::Match_Success;
 5907|     45|  }
 5908|       |
 5909|       |  // 'VecListOneDByteIndexed' class
 5910|   264k|  if (Kind == MCK_VecListOneDByteIndexed) {
  ------------------
  |  Branch (5910:7): [True: 3, False: 264k]
  ------------------
 5911|      3|    if (Operand.isVecListOneDByteIndexed())
  ------------------
  |  Branch (5911:9): [True: 0, False: 3]
  ------------------
 5912|      0|      return MCTargetAsmParser::Match_Success;
 5913|      3|  }
 5914|       |
 5915|       |  // 'VecListOneDHWordIndexed' class
 5916|   264k|  if (Kind == MCK_VecListOneDHWordIndexed) {
  ------------------
  |  Branch (5916:7): [True: 3, False: 264k]
  ------------------
 5917|      3|    if (Operand.isVecListOneDHWordIndexed())
  ------------------
  |  Branch (5917:9): [True: 0, False: 3]
  ------------------
 5918|      0|      return MCTargetAsmParser::Match_Success;
 5919|      3|  }
 5920|       |
 5921|       |  // 'VecListOneDWordIndexed' class
 5922|   264k|  if (Kind == MCK_VecListOneDWordIndexed) {
  ------------------
  |  Branch (5922:7): [True: 33, False: 264k]
  ------------------
 5923|     33|    if (Operand.isVecListOneDWordIndexed())
  ------------------
  |  Branch (5923:9): [True: 3, False: 30]
  ------------------
 5924|      3|      return MCTargetAsmParser::Match_Success;
 5925|     33|  }
 5926|       |
 5927|       |  // 'VecListThreeDAllLanes' class
 5928|   264k|  if (Kind == MCK_VecListThreeDAllLanes) {
  ------------------
  |  Branch (5928:7): [True: 15, False: 264k]
  ------------------
 5929|     15|    if (Operand.isVecListThreeDAllLanes())
  ------------------
  |  Branch (5929:9): [True: 0, False: 15]
  ------------------
 5930|      0|      return MCTargetAsmParser::Match_Success;
 5931|     15|  }
 5932|       |
 5933|       |  // 'VecListThreeD' class
 5934|   264k|  if (Kind == MCK_VecListThreeD) {
  ------------------
  |  Branch (5934:7): [True: 63, False: 264k]
  ------------------
 5935|     63|    if (Operand.isVecListThreeD())
  ------------------
  |  Branch (5935:9): [True: 3, False: 60]
  ------------------
 5936|      3|      return MCTargetAsmParser::Match_Success;
 5937|     63|  }
 5938|       |
 5939|       |  // 'VecListThreeDByteIndexed' class
 5940|   264k|  if (Kind == MCK_VecListThreeDByteIndexed) {
  ------------------
  |  Branch (5940:7): [True: 3, False: 264k]
  ------------------
 5941|      3|    if (Operand.isVecListThreeDByteIndexed())
  ------------------
  |  Branch (5941:9): [True: 0, False: 3]
  ------------------
 5942|      0|      return MCTargetAsmParser::Match_Success;
 5943|      3|  }
 5944|       |
 5945|       |  // 'VecListThreeDHWordIndexed' class
 5946|   264k|  if (Kind == MCK_VecListThreeDHWordIndexed) {
  ------------------
  |  Branch (5946:7): [True: 6, False: 264k]
  ------------------
 5947|      6|    if (Operand.isVecListThreeDHWordIndexed())
  ------------------
  |  Branch (5947:9): [True: 0, False: 6]
  ------------------
 5948|      0|      return MCTargetAsmParser::Match_Success;
 5949|      6|  }
 5950|       |
 5951|       |  // 'VecListThreeDWordIndexed' class
 5952|   264k|  if (Kind == MCK_VecListThreeDWordIndexed) {
  ------------------
  |  Branch (5952:7): [True: 9, False: 264k]
  ------------------
 5953|      9|    if (Operand.isVecListThreeDWordIndexed())
  ------------------
  |  Branch (5953:9): [True: 0, False: 9]
  ------------------
 5954|      0|      return MCTargetAsmParser::Match_Success;
 5955|      9|  }
 5956|       |
 5957|       |  // 'VecListThreeQAllLanes' class
 5958|   264k|  if (Kind == MCK_VecListThreeQAllLanes) {
  ------------------
  |  Branch (5958:7): [True: 15, False: 264k]
  ------------------
 5959|     15|    if (Operand.isVecListThreeQAllLanes())
  ------------------
  |  Branch (5959:9): [True: 0, False: 15]
  ------------------
 5960|      0|      return MCTargetAsmParser::Match_Success;
 5961|     15|  }
 5962|       |
 5963|       |  // 'VecListThreeQ' class
 5964|   264k|  if (Kind == MCK_VecListThreeQ) {
  ------------------
  |  Branch (5964:7): [True: 18, False: 264k]
  ------------------
 5965|     18|    if (Operand.isVecListThreeQ())
  ------------------
  |  Branch (5965:9): [True: 0, False: 18]
  ------------------
 5966|      0|      return MCTargetAsmParser::Match_Success;
 5967|     18|  }
 5968|       |
 5969|       |  // 'VecListThreeQHWordIndexed' class
 5970|   264k|  if (Kind == MCK_VecListThreeQHWordIndexed) {
  ------------------
  |  Branch (5970:7): [True: 6, False: 264k]
  ------------------
 5971|      6|    if (Operand.isVecListThreeQHWordIndexed())
  ------------------
  |  Branch (5971:9): [True: 0, False: 6]
  ------------------
 5972|      0|      return MCTargetAsmParser::Match_Success;
 5973|      6|  }
 5974|       |
 5975|       |  // 'VecListThreeQWordIndexed' class
 5976|   264k|  if (Kind == MCK_VecListThreeQWordIndexed) {
  ------------------
  |  Branch (5976:7): [True: 9, False: 264k]
  ------------------
 5977|      9|    if (Operand.isVecListThreeQWordIndexed())
  ------------------
  |  Branch (5977:9): [True: 0, False: 9]
  ------------------
 5978|      0|      return MCTargetAsmParser::Match_Success;
 5979|      9|  }
 5980|       |
 5981|       |  // 'VecListTwoDByteIndexed' class
 5982|   264k|  if (Kind == MCK_VecListTwoDByteIndexed) {
  ------------------
  |  Branch (5982:7): [True: 6, False: 264k]
  ------------------
 5983|      6|    if (Operand.isVecListTwoDByteIndexed())
  ------------------
  |  Branch (5983:9): [True: 0, False: 6]
  ------------------
 5984|      0|      return MCTargetAsmParser::Match_Success;
 5985|      6|  }
 5986|       |
 5987|       |  // 'VecListTwoDHWordIndexed' class
 5988|   264k|  if (Kind == MCK_VecListTwoDHWordIndexed) {
  ------------------
  |  Branch (5988:7): [True: 6, False: 264k]
  ------------------
 5989|      6|    if (Operand.isVecListTwoDHWordIndexed())
  ------------------
  |  Branch (5989:9): [True: 0, False: 6]
  ------------------
 5990|      0|      return MCTargetAsmParser::Match_Success;
 5991|      6|  }
 5992|       |
 5993|       |  // 'VecListTwoDWordIndexed' class
 5994|   264k|  if (Kind == MCK_VecListTwoDWordIndexed) {
  ------------------
  |  Branch (5994:7): [True: 24, False: 264k]
  ------------------
 5995|     24|    if (Operand.isVecListTwoDWordIndexed())
  ------------------
  |  Branch (5995:9): [True: 3, False: 21]
  ------------------
 5996|      3|      return MCTargetAsmParser::Match_Success;
 5997|     24|  }
 5998|       |
 5999|       |  // 'VecListTwoQHWordIndexed' class
 6000|   264k|  if (Kind == MCK_VecListTwoQHWordIndexed) {
  ------------------
  |  Branch (6000:7): [True: 6, False: 264k]
  ------------------
 6001|      6|    if (Operand.isVecListTwoQHWordIndexed())
  ------------------
  |  Branch (6001:9): [True: 0, False: 6]
  ------------------
 6002|      0|      return MCTargetAsmParser::Match_Success;
 6003|      6|  }
 6004|       |
 6005|       |  // 'VecListTwoQWordIndexed' class
 6006|   264k|  if (Kind == MCK_VecListTwoQWordIndexed) {
  ------------------
  |  Branch (6006:7): [True: 24, False: 264k]
  ------------------
 6007|     24|    if (Operand.isVecListTwoQWordIndexed())
  ------------------
  |  Branch (6007:9): [True: 0, False: 24]
  ------------------
 6008|      0|      return MCTargetAsmParser::Match_Success;
 6009|     24|  }
 6010|       |
 6011|       |  // 'VectorIndex16' class
 6012|   264k|  if (Kind == MCK_VectorIndex16) {
  ------------------
  |  Branch (6012:7): [True: 46, False: 264k]
  ------------------
 6013|     46|    if (Operand.isVectorIndex16())
  ------------------
  |  Branch (6013:9): [True: 0, False: 46]
  ------------------
 6014|      0|      return MCTargetAsmParser::Match_Success;
 6015|     46|  }
 6016|       |
 6017|       |  // 'VectorIndex32' class
 6018|   264k|  if (Kind == MCK_VectorIndex32) {
  ------------------
  |  Branch (6018:7): [True: 137, False: 264k]
  ------------------
 6019|    137|    if (Operand.isVectorIndex32())
  ------------------
  |  Branch (6019:9): [True: 0, False: 137]
  ------------------
 6020|      0|      return MCTargetAsmParser::Match_Success;
 6021|    137|  }
 6022|       |
 6023|       |  // 'VectorIndex8' class
 6024|   264k|  if (Kind == MCK_VectorIndex8) {
  ------------------
  |  Branch (6024:7): [True: 5, False: 264k]
  ------------------
 6025|      5|    if (Operand.isVectorIndex8())
  ------------------
  |  Branch (6025:9): [True: 0, False: 5]
  ------------------
 6026|      0|      return MCTargetAsmParser::Match_Success;
 6027|      5|  }
 6028|       |
 6029|       |  // 'MemTBB' class
 6030|   264k|  if (Kind == MCK_MemTBB) {
  ------------------
  |  Branch (6030:7): [True: 1, False: 264k]
  ------------------
 6031|      1|    if (Operand.isMemTBB())
  ------------------
  |  Branch (6031:9): [True: 0, False: 1]
  ------------------
 6032|      0|      return MCTargetAsmParser::Match_Success;
 6033|      1|  }
 6034|       |
 6035|       |  // 'MemTBH' class
 6036|   264k|  if (Kind == MCK_MemTBH) {
  ------------------
  |  Branch (6036:7): [True: 2, False: 264k]
  ------------------
 6037|      2|    if (Operand.isMemTBH())
  ------------------
  |  Branch (6037:9): [True: 0, False: 2]
  ------------------
 6038|      0|      return MCTargetAsmParser::Match_Success;
 6039|      2|  }
 6040|       |
 6041|       |  // 'FBits16' class
 6042|   264k|  if (Kind == MCK_FBits16) {
  ------------------
  |  Branch (6042:7): [True: 0, False: 264k]
  ------------------
 6043|      0|    if (Operand.isFBits16())
  ------------------
  |  Branch (6043:9): [True: 0, False: 0]
  ------------------
 6044|      0|      return MCTargetAsmParser::Match_Success;
 6045|      0|  }
 6046|       |
 6047|       |  // 'FBits32' class
 6048|   264k|  if (Kind == MCK_FBits32) {
  ------------------
  |  Branch (6048:7): [True: 0, False: 264k]
  ------------------
 6049|      0|    if (Operand.isFBits32())
  ------------------
  |  Branch (6049:9): [True: 0, False: 0]
  ------------------
 6050|      0|      return MCTargetAsmParser::Match_Success;
 6051|      0|  }
 6052|       |
 6053|       |  // 'Imm0_4095' class
 6054|   264k|  if (Kind == MCK_Imm0_4095) {
  ------------------
  |  Branch (6054:7): [True: 819, False: 263k]
  ------------------
 6055|    819|    if (Operand.isImm0_4095())
  ------------------
  |  Branch (6055:9): [True: 316, False: 503]
  ------------------
 6056|    316|      return MCTargetAsmParser::Match_Success;
 6057|    819|  }
 6058|       |
 6059|       |  // 'Imm0_4095Neg' class
 6060|   264k|  if (Kind == MCK_Imm0_4095Neg) {
  ------------------
  |  Branch (6060:7): [True: 501, False: 263k]
  ------------------
 6061|    501|    if (Operand.isImm0_4095Neg())
  ------------------
  |  Branch (6061:9): [True: 51, False: 450]
  ------------------
 6062|     51|      return MCTargetAsmParser::Match_Success;
 6063|    501|  }
 6064|       |
 6065|       |  // 'ITMask' class
 6066|   264k|  if (Kind == MCK_ITMask) {
  ------------------
  |  Branch (6066:7): [True: 622, False: 263k]
  ------------------
 6067|    622|    if (Operand.isITMask())
  ------------------
  |  Branch (6067:9): [True: 622, False: 0]
  ------------------
 6068|    622|      return MCTargetAsmParser::Match_Success;
 6069|    622|  }
 6070|       |
 6071|       |  // 'ITCondCode' class
 6072|   263k|  if (Kind == MCK_ITCondCode) {
  ------------------
  |  Branch (6072:7): [True: 566, False: 263k]
  ------------------
 6073|    566|    if (Operand.isITCondCode())
  ------------------
  |  Branch (6073:9): [True: 520, False: 46]
  ------------------
 6074|    520|      return MCTargetAsmParser::Match_Success;
 6075|    566|  }
 6076|       |
 6077|       |  // 'NEONi16splat' class
 6078|   263k|  if (Kind == MCK_NEONi16splat) {
  ------------------
  |  Branch (6078:7): [True: 84, False: 263k]
  ------------------
 6079|     84|    if (Operand.isNEONi16splat())
  ------------------
  |  Branch (6079:9): [True: 30, False: 54]
  ------------------
 6080|     30|      return MCTargetAsmParser::Match_Success;
 6081|     84|  }
 6082|       |
 6083|       |  // 'NEONi32splat' class
 6084|   263k|  if (Kind == MCK_NEONi32splat) {
  ------------------
  |  Branch (6084:7): [True: 10, False: 263k]
  ------------------
 6085|     10|    if (Operand.isNEONi32splat())
  ------------------
  |  Branch (6085:9): [True: 3, False: 7]
  ------------------
 6086|      3|      return MCTargetAsmParser::Match_Success;
 6087|     10|  }
 6088|       |
 6089|       |  // 'NEONi64splat' class
 6090|   263k|  if (Kind == MCK_NEONi64splat) {
  ------------------
  |  Branch (6090:7): [True: 5, False: 263k]
  ------------------
 6091|      5|    if (Operand.isNEONi64splat())
  ------------------
  |  Branch (6091:9): [True: 2, False: 3]
  ------------------
 6092|      2|      return MCTargetAsmParser::Match_Success;
 6093|      5|  }
 6094|       |
 6095|       |  // 'NEONi8splat' class
 6096|   263k|  if (Kind == MCK_NEONi8splat) {
  ------------------
  |  Branch (6096:7): [True: 12, False: 263k]
  ------------------
 6097|     12|    if (Operand.isNEONi8splat())
  ------------------
  |  Branch (6097:9): [True: 5, False: 7]
  ------------------
 6098|      5|      return MCTargetAsmParser::Match_Success;
 6099|     12|  }
 6100|       |
 6101|       |  // 'NEONi16splatNot' class
 6102|   263k|  if (Kind == MCK_NEONi16splatNot) {
  ------------------
  |  Branch (6102:7): [True: 10, False: 263k]
  ------------------
 6103|     10|    if (Operand.isNEONi16splatNot())
  ------------------
  |  Branch (6103:9): [True: 3, False: 7]
  ------------------
 6104|      3|      return MCTargetAsmParser::Match_Success;
 6105|     10|  }
 6106|       |
 6107|       |  // 'NEONi32splatNot' class
 6108|   263k|  if (Kind == MCK_NEONi32splatNot) {
  ------------------
  |  Branch (6108:7): [True: 22, False: 263k]
  ------------------
 6109|     22|    if (Operand.isNEONi32splatNot())
  ------------------
  |  Branch (6109:9): [True: 13, False: 9]
  ------------------
 6110|     13|      return MCTargetAsmParser::Match_Success;
 6111|     22|  }
 6112|       |
 6113|       |  // 'NEONi16vmovByteReplicate' class
 6114|   263k|  if (Kind == MCK_NEONi16vmovByteReplicate) {
  ------------------
  |  Branch (6114:7): [True: 54, False: 263k]
  ------------------
 6115|     54|    if (Operand.isNEONi16ByteReplicate())
  ------------------
  |  Branch (6115:9): [True: 2, False: 52]
  ------------------
 6116|      2|      return MCTargetAsmParser::Match_Success;
 6117|     54|  }
 6118|       |
 6119|       |  // 'NEONi32vmov' class
 6120|   263k|  if (Kind == MCK_NEONi32vmov) {
  ------------------
  |  Branch (6120:7): [True: 329, False: 262k]
  ------------------
 6121|    329|    if (Operand.isNEONi32vmov())
  ------------------
  |  Branch (6121:9): [True: 113, False: 216]
  ------------------
 6122|    113|      return MCTargetAsmParser::Match_Success;
 6123|    329|  }
 6124|       |
 6125|       |  // 'NEONi32vmovByteReplicate' class
 6126|   263k|  if (Kind == MCK_NEONi32vmovByteReplicate) {
  ------------------
  |  Branch (6126:7): [True: 186, False: 262k]
  ------------------
 6127|    186|    if (Operand.isNEONi32ByteReplicate())
  ------------------
  |  Branch (6127:9): [True: 1, False: 185]
  ------------------
 6128|      1|      return MCTargetAsmParser::Match_Success;
 6129|    186|  }
 6130|       |
 6131|       |  // 'NEONi32vmovNeg' class
 6132|   263k|  if (Kind == MCK_NEONi32vmovNeg) {
  ------------------
  |  Branch (6132:7): [True: 188, False: 262k]
  ------------------
 6133|    188|    if (Operand.isNEONi32vmovNeg())
  ------------------
  |  Branch (6133:9): [True: 63, False: 125]
  ------------------
 6134|     63|      return MCTargetAsmParser::Match_Success;
 6135|    188|  }
 6136|       |
 6137|       |  // 'NEONi16invByteReplicate' class
 6138|   263k|  if (Kind == MCK_NEONi16invByteReplicate) {
  ------------------
  |  Branch (6138:7): [True: 3, False: 263k]
  ------------------
 6139|      3|    if (Operand.isNEONi16ByteReplicate())
  ------------------
  |  Branch (6139:9): [True: 1, False: 2]
  ------------------
 6140|      1|      return MCTargetAsmParser::Match_Success;
 6141|      3|  }
 6142|       |
 6143|       |  // 'NEONi32invByteReplicate' class
 6144|   263k|  if (Kind == MCK_NEONi32invByteReplicate) {
  ------------------
  |  Branch (6144:7): [True: 3, False: 263k]
  ------------------
 6145|      3|    if (Operand.isNEONi32ByteReplicate())
  ------------------
  |  Branch (6145:9): [True: 1, False: 2]
  ------------------
 6146|      1|      return MCTargetAsmParser::Match_Success;
 6147|      3|  }
 6148|       |
 6149|       |  // 'ShrImm16' class
 6150|   263k|  if (Kind == MCK_ShrImm16) {
  ------------------
  |  Branch (6150:7): [True: 19, False: 262k]
  ------------------
 6151|     19|    if (Operand.isShrImm16())
  ------------------
  |  Branch (6151:9): [True: 9, False: 10]
  ------------------
 6152|      9|      return MCTargetAsmParser::Match_Success;
 6153|     19|  }
 6154|       |
 6155|       |  // 'ShrImm32' class
 6156|   262k|  if (Kind == MCK_ShrImm32) {
  ------------------
  |  Branch (6156:7): [True: 20, False: 262k]
  ------------------
 6157|     20|    if (Operand.isShrImm32())
  ------------------
  |  Branch (6157:9): [True: 11, False: 9]
  ------------------
 6158|     11|      return MCTargetAsmParser::Match_Success;
 6159|     20|  }
 6160|       |
 6161|       |  // 'ShrImm64' class
 6162|   262k|  if (Kind == MCK_ShrImm64) {
  ------------------
  |  Branch (6162:7): [True: 16, False: 262k]
  ------------------
 6163|     16|    if (Operand.isShrImm64())
  ------------------
  |  Branch (6163:9): [True: 9, False: 7]
  ------------------
 6164|      9|      return MCTargetAsmParser::Match_Success;
 6165|     16|  }
 6166|       |
 6167|       |  // 'ShrImm8' class
 6168|   262k|  if (Kind == MCK_ShrImm8) {
  ------------------
  |  Branch (6168:7): [True: 13, False: 262k]
  ------------------
 6169|     13|    if (Operand.isShrImm8())
  ------------------
  |  Branch (6169:9): [True: 8, False: 5]
  ------------------
 6170|      8|      return MCTargetAsmParser::Match_Success;
 6171|     13|  }
 6172|       |
 6173|       |  // 'T2SOImm' class
 6174|   262k|  if (Kind == MCK_T2SOImm) {
  ------------------
  |  Branch (6174:7): [True: 6.24k, False: 256k]
  ------------------
 6175|  6.24k|    if (Operand.isT2SOImm())
  ------------------
  |  Branch (6175:9): [True: 744, False: 5.49k]
  ------------------
 6176|    744|      return MCTargetAsmParser::Match_Success;
 6177|  6.24k|  }
 6178|       |
 6179|       |  // 'T2SOImmNeg' class
 6180|   262k|  if (Kind == MCK_T2SOImmNeg) {
  ------------------
  |  Branch (6180:7): [True: 7.79k, False: 254k]
  ------------------
 6181|  7.79k|    if (Operand.isT2SOImmNeg())
  ------------------
  |  Branch (6181:9): [True: 321, False: 7.47k]
  ------------------
 6182|    321|      return MCTargetAsmParser::Match_Success;
 6183|  7.79k|  }
 6184|       |
 6185|       |  // 'T2SOImmNot' class
 6186|   261k|  if (Kind == MCK_T2SOImmNot) {
  ------------------
  |  Branch (6186:7): [True: 554, False: 261k]
  ------------------
 6187|    554|    if (Operand.isT2SOImmNot())
  ------------------
  |  Branch (6187:9): [True: 19, False: 535]
  ------------------
 6188|     19|      return MCTargetAsmParser::Match_Success;
 6189|    554|  }
 6190|       |
 6191|       |  // 'MemUImm12Offset' class
 6192|   261k|  if (Kind == MCK_MemUImm12Offset) {
  ------------------
  |  Branch (6192:7): [True: 1.73k, False: 260k]
  ------------------
 6193|  1.73k|    if (Operand.isMemUImm12Offset())
  ------------------
  |  Branch (6193:9): [True: 779, False: 954]
  ------------------
 6194|    779|      return MCTargetAsmParser::Match_Success;
 6195|  1.73k|  }
 6196|       |
 6197|       |  // 'T2MemRegOffset' class
 6198|   261k|  if (Kind == MCK_T2MemRegOffset) {
  ------------------
  |  Branch (6198:7): [True: 1.67k, False: 259k]
  ------------------
 6199|  1.67k|    if (Operand.isT2MemRegOffset())
  ------------------
  |  Branch (6199:9): [True: 31, False: 1.64k]
  ------------------
 6200|     31|      return MCTargetAsmParser::Match_Success;
 6201|  1.67k|  }
 6202|       |
 6203|       |  // 'Imm8s4' class
 6204|   261k|  if (Kind == MCK_Imm8s4) {
  ------------------
  |  Branch (6204:7): [True: 0, False: 261k]
  ------------------
 6205|      0|    if (Operand.isImm8s4())
  ------------------
  |  Branch (6205:9): [True: 0, False: 0]
  ------------------
 6206|      0|      return MCTargetAsmParser::Match_Success;
 6207|      0|  }
 6208|       |
 6209|       |  // 'MemPCRelImm12' class
 6210|   261k|  if (Kind == MCK_MemPCRelImm12) {
  ------------------
  |  Branch (6210:7): [True: 1.62k, False: 259k]
  ------------------
 6211|  1.62k|    if (Operand.isMemPCRelImm12())
  ------------------
  |  Branch (6211:9): [True: 13, False: 1.61k]
  ------------------
 6212|     13|      return MCTargetAsmParser::Match_Success;
 6213|  1.62k|  }
 6214|       |
 6215|       |  // 'MemThumbRIs1' class
 6216|   261k|  if (Kind == MCK_MemThumbRIs1) {
  ------------------
  |  Branch (6216:7): [True: 657, False: 260k]
  ------------------
 6217|    657|    if (Operand.isMemThumbRIs1())
  ------------------
  |  Branch (6217:9): [True: 632, False: 25]
  ------------------
 6218|    632|      return MCTargetAsmParser::Match_Success;
 6219|    657|  }
 6220|       |
 6221|       |  // 'MemThumbRIs2' class
 6222|   260k|  if (Kind == MCK_MemThumbRIs2) {
  ------------------
  |  Branch (6222:7): [True: 910, False: 259k]
  ------------------
 6223|    910|    if (Operand.isMemThumbRIs2())
  ------------------
  |  Branch (6223:9): [True: 19, False: 891]
  ------------------
 6224|     19|      return MCTargetAsmParser::Match_Success;
 6225|    910|  }
 6226|       |
 6227|       |  // 'MemThumbRIs4' class
 6228|   260k|  if (Kind == MCK_MemThumbRIs4) {
  ------------------
  |  Branch (6228:7): [True: 798, False: 259k]
  ------------------
 6229|    798|    if (Operand.isMemThumbRIs4())
  ------------------
  |  Branch (6229:9): [True: 27, False: 771]
  ------------------
 6230|     27|      return MCTargetAsmParser::Match_Success;
 6231|    798|  }
 6232|       |
 6233|       |  // 'MemThumbRR' class
 6234|   260k|  if (Kind == MCK_MemThumbRR) {
  ------------------
  |  Branch (6234:7): [True: 2.44k, False: 257k]
  ------------------
 6235|  2.44k|    if (Operand.isMemThumbRR())
  ------------------
  |  Branch (6235:9): [True: 12, False: 2.42k]
  ------------------
 6236|     12|      return MCTargetAsmParser::Match_Success;
 6237|  2.44k|  }
 6238|       |
 6239|       |  // 'MemThumbSPI' class
 6240|   260k|  if (Kind == MCK_MemThumbSPI) {
  ------------------
  |  Branch (6240:7): [True: 773, False: 259k]
  ------------------
 6241|    773|    if (Operand.isMemThumbSPI())
  ------------------
  |  Branch (6241:9): [True: 0, False: 773]
  ------------------
 6242|      0|      return MCTargetAsmParser::Match_Success;
 6243|    773|  }
 6244|       |
 6245|       |  // 'Imm0_1020s4' class
 6246|   260k|  if (Kind == MCK_Imm0_1020s4) {
  ------------------
  |  Branch (6246:7): [True: 12, False: 260k]
  ------------------
 6247|     12|    if (Operand.isImm0_1020s4())
  ------------------
  |  Branch (6247:9): [True: 8, False: 4]
  ------------------
 6248|      8|      return MCTargetAsmParser::Match_Success;
 6249|     12|  }
 6250|       |
 6251|       |  // 'Imm0_508s4' class
 6252|   260k|  if (Kind == MCK_Imm0_508s4) {
  ------------------
  |  Branch (6252:7): [True: 721, False: 259k]
  ------------------
 6253|    721|    if (Operand.isImm0_508s4())
  ------------------
  |  Branch (6253:9): [True: 350, False: 371]
  ------------------
 6254|    350|      return MCTargetAsmParser::Match_Success;
 6255|    721|  }
 6256|       |
 6257|       |  // 'Imm0_508s4Neg' class
 6258|   260k|  if (Kind == MCK_Imm0_508s4Neg) {
  ------------------
  |  Branch (6258:7): [True: 306, False: 259k]
  ------------------
 6259|    306|    if (Operand.isImm0_508s4Neg())
  ------------------
  |  Branch (6259:9): [True: 20, False: 286]
  ------------------
 6260|     20|      return MCTargetAsmParser::Match_Success;
 6261|    306|  }
 6262|       |
 6263|   259k|  if (Operand.isReg()) {
  ------------------
  |  Branch (6263:7): [True: 161k, False: 98.4k]
  ------------------
 6264|   161k|    MatchClassKind OpKind;
 6265|   161k|    switch (Operand.getReg()) {
 6266|      0|    default: OpKind = InvalidMatchClass; break;
  ------------------
  |  Branch (6266:5): [True: 0, False: 161k]
  ------------------
 6267|  31.3k|    case ARM::R0: OpKind = MCK_Reg0; break;
  ------------------
  |  Branch (6267:5): [True: 31.3k, False: 130k]
  ------------------
 6268|  8.94k|    case ARM::R1: OpKind = MCK_Reg0; break;
  ------------------
  |  Branch (6268:5): [True: 8.94k, False: 152k]
  ------------------
 6269|  3.28k|    case ARM::R2: OpKind = MCK_Reg0; break;
  ------------------
  |  Branch (6269:5): [True: 3.28k, False: 158k]
  ------------------
 6270|  3.88k|    case ARM::R3: OpKind = MCK_Reg0; break;
  ------------------
  |  Branch (6270:5): [True: 3.88k, False: 157k]
  ------------------
 6271|  12.7k|    case ARM::R4: OpKind = MCK_tGPR; break;
  ------------------
  |  Branch (6271:5): [True: 12.7k, False: 148k]
  ------------------
 6272|  13.8k|    case ARM::R5: OpKind = MCK_tGPR; break;
  ------------------
  |  Branch (6272:5): [True: 13.8k, False: 147k]
  ------------------
 6273|  37.8k|    case ARM::R6: OpKind = MCK_tGPR; break;
  ------------------
  |  Branch (6273:5): [True: 37.8k, False: 123k]
  ------------------
 6274|  5.35k|    case ARM::R7: OpKind = MCK_tGPR; break;
  ------------------
  |  Branch (6274:5): [True: 5.35k, False: 156k]
  ------------------
 6275|  6.40k|    case ARM::R8: OpKind = MCK_Reg9; break;
  ------------------
  |  Branch (6275:5): [True: 6.40k, False: 155k]
  ------------------
 6276|  2.73k|    case ARM::R9: OpKind = MCK_Reg9; break;
  ------------------
  |  Branch (6276:5): [True: 2.73k, False: 158k]
  ------------------
 6277|  4.80k|    case ARM::R10: OpKind = MCK_Reg9; break;
  ------------------
  |  Branch (6277:5): [True: 4.80k, False: 156k]
  ------------------
 6278|  1.57k|    case ARM::R11: OpKind = MCK_Reg9; break;
  ------------------
  |  Branch (6278:5): [True: 1.57k, False: 160k]
  ------------------
 6279|  3.92k|    case ARM::R12: OpKind = MCK_Reg10; break;
  ------------------
  |  Branch (6279:5): [True: 3.92k, False: 157k]
  ------------------
 6280|  12.5k|    case ARM::SP: OpKind = MCK_GPRsp; break;
  ------------------
  |  Branch (6280:5): [True: 12.5k, False: 149k]
  ------------------
 6281|  3.08k|    case ARM::LR: OpKind = MCK_LR; break;
  ------------------
  |  Branch (6281:5): [True: 3.08k, False: 158k]
  ------------------
 6282|    718|    case ARM::PC: OpKind = MCK_PC; break;
  ------------------
  |  Branch (6282:5): [True: 718, False: 160k]
  ------------------
 6283|    196|    case ARM::S0: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6283:5): [True: 196, False: 161k]
  ------------------
 6284|     92|    case ARM::S1: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6284:5): [True: 92, False: 161k]
  ------------------
 6285|    111|    case ARM::S2: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6285:5): [True: 111, False: 161k]
  ------------------
 6286|    104|    case ARM::S3: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6286:5): [True: 104, False: 161k]
  ------------------
 6287|    148|    case ARM::S4: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6287:5): [True: 148, False: 161k]
  ------------------
 6288|     43|    case ARM::S5: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6288:5): [True: 43, False: 161k]
  ------------------
 6289|     99|    case ARM::S6: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6289:5): [True: 99, False: 161k]
  ------------------
 6290|     52|    case ARM::S7: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6290:5): [True: 52, False: 161k]
  ------------------
 6291|    119|    case ARM::S8: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6291:5): [True: 119, False: 161k]
  ------------------
 6292|    213|    case ARM::S9: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6292:5): [True: 213, False: 161k]
  ------------------
 6293|     38|    case ARM::S10: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6293:5): [True: 38, False: 161k]
  ------------------
 6294|      8|    case ARM::S11: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6294:5): [True: 8, False: 161k]
  ------------------
 6295|      9|    case ARM::S12: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6295:5): [True: 9, False: 161k]
  ------------------
 6296|      7|    case ARM::S13: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6296:5): [True: 7, False: 161k]
  ------------------
 6297|      6|    case ARM::S14: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6297:5): [True: 6, False: 161k]
  ------------------
 6298|     15|    case ARM::S15: OpKind = MCK_SPR_8; break;
  ------------------
  |  Branch (6298:5): [True: 15, False: 161k]
  ------------------
 6299|     11|    case ARM::S16: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6299:5): [True: 11, False: 161k]
  ------------------
 6300|     61|    case ARM::S17: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6300:5): [True: 61, False: 161k]
  ------------------
 6301|      8|    case ARM::S18: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6301:5): [True: 8, False: 161k]
  ------------------
 6302|     10|    case ARM::S19: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6302:5): [True: 10, False: 161k]
  ------------------
 6303|      2|    case ARM::S20: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6303:5): [True: 2, False: 161k]
  ------------------
 6304|     28|    case ARM::S21: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6304:5): [True: 28, False: 161k]
  ------------------
 6305|      5|    case ARM::S22: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6305:5): [True: 5, False: 161k]
  ------------------
 6306|     10|    case ARM::S23: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6306:5): [True: 10, False: 161k]
  ------------------
 6307|      2|    case ARM::S24: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6307:5): [True: 2, False: 161k]
  ------------------
 6308|     62|    case ARM::S25: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6308:5): [True: 62, False: 161k]
  ------------------
 6309|      4|    case ARM::S26: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6309:5): [True: 4, False: 161k]
  ------------------
 6310|    277|    case ARM::S27: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6310:5): [True: 277, False: 161k]
  ------------------
 6311|    118|    case ARM::S28: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6311:5): [True: 118, False: 161k]
  ------------------
 6312|    104|    case ARM::S29: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6312:5): [True: 104, False: 161k]
  ------------------
 6313|      0|    case ARM::S30: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6313:5): [True: 0, False: 161k]
  ------------------
 6314|     59|    case ARM::S31: OpKind = MCK_SPR; break;
  ------------------
  |  Branch (6314:5): [True: 59, False: 161k]
  ------------------
 6315|    841|    case ARM::D0: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6315:5): [True: 841, False: 160k]
  ------------------
 6316|  2.23k|    case ARM::D1: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6316:5): [True: 2.23k, False: 159k]
  ------------------
 6317|    177|    case ARM::D2: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6317:5): [True: 177, False: 161k]
  ------------------
 6318|    121|    case ARM::D3: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6318:5): [True: 121, False: 161k]
  ------------------
 6319|    135|    case ARM::D4: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6319:5): [True: 135, False: 161k]
  ------------------
 6320|    156|    case ARM::D5: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6320:5): [True: 156, False: 161k]
  ------------------
 6321|    172|    case ARM::D6: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6321:5): [True: 172, False: 161k]
  ------------------
 6322|     65|    case ARM::D7: OpKind = MCK_DPR_8; break;
  ------------------
  |  Branch (6322:5): [True: 65, False: 161k]
  ------------------
 6323|     63|    case ARM::D8: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6323:5): [True: 63, False: 161k]
  ------------------
 6324|    130|    case ARM::D9: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6324:5): [True: 130, False: 161k]
  ------------------
 6325|     31|    case ARM::D10: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6325:5): [True: 31, False: 161k]
  ------------------
 6326|     72|    case ARM::D11: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6326:5): [True: 72, False: 161k]
  ------------------
 6327|     59|    case ARM::D12: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6327:5): [True: 59, False: 161k]
  ------------------
 6328|     24|    case ARM::D13: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6328:5): [True: 24, False: 161k]
  ------------------
 6329|     21|    case ARM::D14: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6329:5): [True: 21, False: 161k]
  ------------------
 6330|     21|    case ARM::D15: OpKind = MCK_DPR_VFP2; break;
  ------------------
  |  Branch (6330:5): [True: 21, False: 161k]
  ------------------
 6331|      8|    case ARM::D16: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6331:5): [True: 8, False: 161k]
  ------------------
 6332|     24|    case ARM::D17: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6332:5): [True: 24, False: 161k]
  ------------------
 6333|     37|    case ARM::D18: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6333:5): [True: 37, False: 161k]
  ------------------
 6334|     65|    case ARM::D19: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6334:5): [True: 65, False: 161k]
  ------------------
 6335|     24|    case ARM::D20: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6335:5): [True: 24, False: 161k]
  ------------------
 6336|     15|    case ARM::D21: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6336:5): [True: 15, False: 161k]
  ------------------
 6337|     30|    case ARM::D22: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6337:5): [True: 30, False: 161k]
  ------------------
 6338|     19|    case ARM::D23: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6338:5): [True: 19, False: 161k]
  ------------------
 6339|     25|    case ARM::D24: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6339:5): [True: 25, False: 161k]
  ------------------
 6340|     22|    case ARM::D25: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6340:5): [True: 22, False: 161k]
  ------------------
 6341|     64|    case ARM::D26: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6341:5): [True: 64, False: 161k]
  ------------------
 6342|     18|    case ARM::D27: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6342:5): [True: 18, False: 161k]
  ------------------
 6343|    154|    case ARM::D28: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6343:5): [True: 154, False: 161k]
  ------------------
 6344|     21|    case ARM::D29: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6344:5): [True: 21, False: 161k]
  ------------------
 6345|      7|    case ARM::D30: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6345:5): [True: 7, False: 161k]
  ------------------
 6346|     17|    case ARM::D31: OpKind = MCK_DPR; break;
  ------------------
  |  Branch (6346:5): [True: 17, False: 161k]
  ------------------
 6347|    123|    case ARM::Q0: OpKind = MCK_QPR_8; break;
  ------------------
  |  Branch (6347:5): [True: 123, False: 161k]
  ------------------
 6348|    201|    case ARM::Q1: OpKind = MCK_QPR_8; break;
  ------------------
  |  Branch (6348:5): [True: 201, False: 161k]
  ------------------
 6349|     83|    case ARM::Q2: OpKind = MCK_QPR_8; break;
  ------------------
  |  Branch (6349:5): [True: 83, False: 161k]
  ------------------
 6350|    112|    case ARM::Q3: OpKind = MCK_QPR_8; break;
  ------------------
  |  Branch (6350:5): [True: 112, False: 161k]
  ------------------
 6351|    154|    case ARM::Q4: OpKind = MCK_QPR_VFP2; break;
  ------------------
  |  Branch (6351:5): [True: 154, False: 161k]
  ------------------
 6352|     88|    case ARM::Q5: OpKind = MCK_QPR_VFP2; break;
  ------------------
  |  Branch (6352:5): [True: 88, False: 161k]
  ------------------
 6353|    112|    case ARM::Q6: OpKind = MCK_QPR_VFP2; break;
  ------------------
  |  Branch (6353:5): [True: 112, False: 161k]
  ------------------
 6354|     51|    case ARM::Q7: OpKind = MCK_QPR_VFP2; break;
  ------------------
  |  Branch (6354:5): [True: 51, False: 161k]
  ------------------
 6355|    130|    case ARM::Q8: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6355:5): [True: 130, False: 161k]
  ------------------
 6356|     40|    case ARM::Q9: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6356:5): [True: 40, False: 161k]
  ------------------
 6357|     48|    case ARM::Q10: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6357:5): [True: 48, False: 161k]
  ------------------
 6358|     81|    case ARM::Q11: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6358:5): [True: 81, False: 161k]
  ------------------
 6359|     88|    case ARM::Q12: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6359:5): [True: 88, False: 161k]
  ------------------
 6360|     69|    case ARM::Q13: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6360:5): [True: 69, False: 161k]
  ------------------
 6361|     34|    case ARM::Q14: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6361:5): [True: 34, False: 161k]
  ------------------
 6362|     10|    case ARM::Q15: OpKind = MCK_QPR; break;
  ------------------
  |  Branch (6362:5): [True: 10, False: 161k]
  ------------------
 6363|     16|    case ARM::CPSR: OpKind = MCK_CCR; break;
  ------------------
  |  Branch (6363:5): [True: 16, False: 161k]
  ------------------
 6364|      0|    case ARM::APSR: OpKind = MCK_APSR; break;
  ------------------
  |  Branch (6364:5): [True: 0, False: 161k]
  ------------------
 6365|     76|    case ARM::APSR_NZCV: OpKind = MCK_APSR_NZCV; break;
  ------------------
  |  Branch (6365:5): [True: 76, False: 161k]
  ------------------
 6366|     21|    case ARM::SPSR: OpKind = MCK_SPSR; break;
  ------------------
  |  Branch (6366:5): [True: 21, False: 161k]
  ------------------
 6367|      0|    case ARM::FPSCR: OpKind = MCK_FPSCR; break;
  ------------------
  |  Branch (6367:5): [True: 0, False: 161k]
  ------------------
 6368|     30|    case ARM::FPSID: OpKind = MCK_FPSID; break;
  ------------------
  |  Branch (6368:5): [True: 30, False: 161k]
  ------------------
 6369|      0|    case ARM::MVFR2: OpKind = MCK_MVFR2; break;
  ------------------
  |  Branch (6369:5): [True: 0, False: 161k]
  ------------------
 6370|      0|    case ARM::MVFR1: OpKind = MCK_MVFR1; break;
  ------------------
  |  Branch (6370:5): [True: 0, False: 161k]
  ------------------
 6371|      0|    case ARM::MVFR0: OpKind = MCK_MVFR0; break;
  ------------------
  |  Branch (6371:5): [True: 0, False: 161k]
  ------------------
 6372|     12|    case ARM::FPEXC: OpKind = MCK_FPEXC; break;
  ------------------
  |  Branch (6372:5): [True: 12, False: 161k]
  ------------------
 6373|      0|    case ARM::FPINST: OpKind = MCK_FPINST; break;
  ------------------
  |  Branch (6373:5): [True: 0, False: 161k]
  ------------------
 6374|      0|    case ARM::FPINST2: OpKind = MCK_FPINST2; break;
  ------------------
  |  Branch (6374:5): [True: 0, False: 161k]
  ------------------
 6375|      0|    case ARM::D0_D2: OpKind = MCK_Reg39; break;
  ------------------
  |  Branch (6375:5): [True: 0, False: 161k]
  ------------------
 6376|      0|    case ARM::D1_D3: OpKind = MCK_Reg39; break;
  ------------------
  |  Branch (6376:5): [True: 0, False: 161k]
  ------------------
 6377|      0|    case ARM::D2_D4: OpKind = MCK_Reg39; break;
  ------------------
  |  Branch (6377:5): [True: 0, False: 161k]
  ------------------
 6378|      0|    case ARM::D3_D5: OpKind = MCK_Reg39; break;
  ------------------
  |  Branch (6378:5): [True: 0, False: 161k]
  ------------------
 6379|      0|    case ARM::D4_D6: OpKind = MCK_Reg39; break;
  ------------------
  |  Branch (6379:5): [True: 0, False: 161k]
  ------------------
 6380|      0|    case ARM::D5_D7: OpKind = MCK_Reg39; break;
  ------------------
  |  Branch (6380:5): [True: 0, False: 161k]
  ------------------
 6381|      0|    case ARM::D6_D8: OpKind = MCK_Reg40; break;
  ------------------
  |  Branch (6381:5): [True: 0, False: 161k]
  ------------------
 6382|      0|    case ARM::D7_D9: OpKind = MCK_Reg40; break;
  ------------------
  |  Branch (6382:5): [True: 0, False: 161k]
  ------------------
 6383|      0|    case ARM::D8_D10: OpKind = MCK_Reg41; break;
  ------------------
  |  Branch (6383:5): [True: 0, False: 161k]
  ------------------
 6384|      0|    case ARM::D9_D11: OpKind = MCK_Reg41; break;
  ------------------
  |  Branch (6384:5): [True: 0, False: 161k]
  ------------------
 6385|      0|    case ARM::D10_D12: OpKind = MCK_Reg41; break;
  ------------------
  |  Branch (6385:5): [True: 0, False: 161k]
  ------------------
 6386|      0|    case ARM::D11_D13: OpKind = MCK_Reg41; break;
  ------------------
  |  Branch (6386:5): [True: 0, False: 161k]
  ------------------
 6387|      0|    case ARM::D12_D14: OpKind = MCK_Reg41; break;
  ------------------
  |  Branch (6387:5): [True: 0, False: 161k]
  ------------------
 6388|      0|    case ARM::D13_D15: OpKind = MCK_Reg41; break;
  ------------------
  |  Branch (6388:5): [True: 0, False: 161k]
  ------------------
 6389|      0|    case ARM::D14_D16: OpKind = MCK_Reg42; break;
  ------------------
  |  Branch (6389:5): [True: 0, False: 161k]
  ------------------
 6390|      0|    case ARM::D15_D17: OpKind = MCK_Reg42; break;
  ------------------
  |  Branch (6390:5): [True: 0, False: 161k]
  ------------------
 6391|      0|    case ARM::D16_D18: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6391:5): [True: 0, False: 161k]
  ------------------
 6392|      0|    case ARM::D17_D19: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6392:5): [True: 0, False: 161k]
  ------------------
 6393|      0|    case ARM::D18_D20: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6393:5): [True: 0, False: 161k]
  ------------------
 6394|      0|    case ARM::D19_D21: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6394:5): [True: 0, False: 161k]
  ------------------
 6395|      0|    case ARM::D20_D22: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6395:5): [True: 0, False: 161k]
  ------------------
 6396|      0|    case ARM::D21_D23: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6396:5): [True: 0, False: 161k]
  ------------------
 6397|      0|    case ARM::D22_D24: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6397:5): [True: 0, False: 161k]
  ------------------
 6398|      0|    case ARM::D23_D25: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6398:5): [True: 0, False: 161k]
  ------------------
 6399|      0|    case ARM::D24_D26: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6399:5): [True: 0, False: 161k]
  ------------------
 6400|      0|    case ARM::D25_D27: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6400:5): [True: 0, False: 161k]
  ------------------
 6401|      0|    case ARM::D26_D28: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6401:5): [True: 0, False: 161k]
  ------------------
 6402|      0|    case ARM::D27_D29: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6402:5): [True: 0, False: 161k]
  ------------------
 6403|      0|    case ARM::D28_D30: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6403:5): [True: 0, False: 161k]
  ------------------
 6404|      0|    case ARM::D29_D31: OpKind = MCK_DPairSpc; break;
  ------------------
  |  Branch (6404:5): [True: 0, False: 161k]
  ------------------
 6405|      0|    case ARM::Q0_Q1: OpKind = MCK_Reg44; break;
  ------------------
  |  Branch (6405:5): [True: 0, False: 161k]
  ------------------
 6406|      0|    case ARM::Q1_Q2: OpKind = MCK_Reg44; break;
  ------------------
  |  Branch (6406:5): [True: 0, False: 161k]
  ------------------
 6407|      0|    case ARM::Q2_Q3: OpKind = MCK_Reg44; break;
  ------------------
  |  Branch (6407:5): [True: 0, False: 161k]
  ------------------
 6408|      0|    case ARM::Q3_Q4: OpKind = MCK_Reg45; break;
  ------------------
  |  Branch (6408:5): [True: 0, False: 161k]
  ------------------
 6409|      0|    case ARM::Q4_Q5: OpKind = MCK_Reg46; break;
  ------------------
  |  Branch (6409:5): [True: 0, False: 161k]
  ------------------
 6410|      0|    case ARM::Q5_Q6: OpKind = MCK_Reg46; break;
  ------------------
  |  Branch (6410:5): [True: 0, False: 161k]
  ------------------
 6411|      0|    case ARM::Q6_Q7: OpKind = MCK_Reg46; break;
  ------------------
  |  Branch (6411:5): [True: 0, False: 161k]
  ------------------
 6412|      0|    case ARM::Q7_Q8: OpKind = MCK_Reg47; break;
  ------------------
  |  Branch (6412:5): [True: 0, False: 161k]
  ------------------
 6413|      0|    case ARM::Q8_Q9: OpKind = MCK_QQPR; break;
  ------------------
  |  Branch (6413:5): [True: 0, False: 161k]
  ------------------
 6414|      0|    case ARM::Q9_Q10: OpKind = MCK_QQPR; break;
  ------------------
  |  Branch (6414:5): [True: 0, False: 161k]
  ------------------
 6415|      0|    case ARM::Q10_Q11: OpKind = MCK_QQPR; break;
  ------------------
  |  Branch (6415:5): [True: 0, False: 161k]
  ------------------
 6416|      0|    case ARM::Q11_Q12: OpKind = MCK_QQPR; break;
  ------------------
  |  Branch (6416:5): [True: 0, False: 161k]
  ------------------
 6417|      0|    case ARM::Q12_Q13: OpKind = MCK_QQPR; break;
  ------------------
  |  Branch (6417:5): [True: 0, False: 161k]
  ------------------
 6418|      0|    case ARM::Q13_Q14: OpKind = MCK_QQPR; break;
  ------------------
  |  Branch (6418:5): [True: 0, False: 161k]
  ------------------
 6419|      0|    case ARM::Q14_Q15: OpKind = MCK_QQPR; break;
  ------------------
  |  Branch (6419:5): [True: 0, False: 161k]
  ------------------
 6420|      0|    case ARM::Q0_Q1_Q2_Q3: OpKind = MCK_Reg58; break;
  ------------------
  |  Branch (6420:5): [True: 0, False: 161k]
  ------------------
 6421|      0|    case ARM::Q1_Q2_Q3_Q4: OpKind = MCK_Reg59; break;
  ------------------
  |  Branch (6421:5): [True: 0, False: 161k]
  ------------------
 6422|      0|    case ARM::Q2_Q3_Q4_Q5: OpKind = MCK_Reg60; break;
  ------------------
  |  Branch (6422:5): [True: 0, False: 161k]
  ------------------
 6423|      0|    case ARM::Q3_Q4_Q5_Q6: OpKind = MCK_Reg61; break;
  ------------------
  |  Branch (6423:5): [True: 0, False: 161k]
  ------------------
 6424|      0|    case ARM::Q4_Q5_Q6_Q7: OpKind = MCK_Reg62; break;
  ------------------
  |  Branch (6424:5): [True: 0, False: 161k]
  ------------------
 6425|      0|    case ARM::Q5_Q6_Q7_Q8: OpKind = MCK_Reg63; break;
  ------------------
  |  Branch (6425:5): [True: 0, False: 161k]
  ------------------
 6426|      0|    case ARM::Q6_Q7_Q8_Q9: OpKind = MCK_Reg64; break;
  ------------------
  |  Branch (6426:5): [True: 0, False: 161k]
  ------------------
 6427|      0|    case ARM::Q7_Q8_Q9_Q10: OpKind = MCK_Reg65; break;
  ------------------
  |  Branch (6427:5): [True: 0, False: 161k]
  ------------------
 6428|      0|    case ARM::Q8_Q9_Q10_Q11: OpKind = MCK_QQQQPR; break;
  ------------------
  |  Branch (6428:5): [True: 0, False: 161k]
  ------------------
 6429|      0|    case ARM::Q9_Q10_Q11_Q12: OpKind = MCK_QQQQPR; break;
  ------------------
  |  Branch (6429:5): [True: 0, False: 161k]
  ------------------
 6430|      0|    case ARM::Q10_Q11_Q12_Q13: OpKind = MCK_QQQQPR; break;
  ------------------
  |  Branch (6430:5): [True: 0, False: 161k]
  ------------------
 6431|      0|    case ARM::Q11_Q12_Q13_Q14: OpKind = MCK_QQQQPR; break;
  ------------------
  |  Branch (6431:5): [True: 0, False: 161k]
  ------------------
 6432|      0|    case ARM::Q12_Q13_Q14_Q15: OpKind = MCK_QQQQPR; break;
  ------------------
  |  Branch (6432:5): [True: 0, False: 161k]
  ------------------
 6433|      0|    case ARM::R0_R1: OpKind = MCK_Reg67; break;
  ------------------
  |  Branch (6433:5): [True: 0, False: 161k]
  ------------------
 6434|      0|    case ARM::R2_R3: OpKind = MCK_Reg67; break;
  ------------------
  |  Branch (6434:5): [True: 0, False: 161k]
  ------------------
 6435|      0|    case ARM::R4_R5: OpKind = MCK_Reg68; break;
  ------------------
  |  Branch (6435:5): [True: 0, False: 161k]
  ------------------
 6436|      0|    case ARM::R6_R7: OpKind = MCK_Reg68; break;
  ------------------
  |  Branch (6436:5): [True: 0, False: 161k]
  ------------------
 6437|      0|    case ARM::R8_R9: OpKind = MCK_Reg72; break;
  ------------------
  |  Branch (6437:5): [True: 0, False: 161k]
  ------------------
 6438|      0|    case ARM::R10_R11: OpKind = MCK_Reg72; break;
  ------------------
  |  Branch (6438:5): [True: 0, False: 161k]
  ------------------
 6439|      0|    case ARM::R12_SP: OpKind = MCK_Reg74; break;
  ------------------
  |  Branch (6439:5): [True: 0, False: 161k]
  ------------------
 6440|      0|    case ARM::D0_D1_D2: OpKind = MCK_Reg82; break;
  ------------------
  |  Branch (6440:5): [True: 0, False: 161k]
  ------------------
 6441|      0|    case ARM::D1_D2_D3: OpKind = MCK_Reg87; break;
  ------------------
  |  Branch (6441:5): [True: 0, False: 161k]
  ------------------
 6442|      0|    case ARM::D2_D3_D4: OpKind = MCK_Reg82; break;
  ------------------
  |  Branch (6442:5): [True: 0, False: 161k]
  ------------------
 6443|      0|    case ARM::D3_D4_D5: OpKind = MCK_Reg87; break;
  ------------------
  |  Branch (6443:5): [True: 0, False: 161k]
  ------------------
 6444|      0|    case ARM::D4_D5_D6: OpKind = MCK_Reg82; break;
  ------------------
  |  Branch (6444:5): [True: 0, False: 161k]
  ------------------
 6445|      0|    case ARM::D5_D6_D7: OpKind = MCK_Reg87; break;
  ------------------
  |  Branch (6445:5): [True: 0, False: 161k]
  ------------------
 6446|      0|    case ARM::D6_D7_D8: OpKind = MCK_Reg83; break;
  ------------------
  |  Branch (6446:5): [True: 0, False: 161k]
  ------------------
 6447|      0|    case ARM::D7_D8_D9: OpKind = MCK_Reg88; break;
  ------------------
  |  Branch (6447:5): [True: 0, False: 161k]
  ------------------
 6448|      0|    case ARM::D8_D9_D10: OpKind = MCK_Reg84; break;
  ------------------
  |  Branch (6448:5): [True: 0, False: 161k]
  ------------------
 6449|      0|    case ARM::D9_D10_D11: OpKind = MCK_Reg89; break;
  ------------------
  |  Branch (6449:5): [True: 0, False: 161k]
  ------------------
 6450|      0|    case ARM::D10_D11_D12: OpKind = MCK_Reg84; break;
  ------------------
  |  Branch (6450:5): [True: 0, False: 161k]
  ------------------
 6451|      0|    case ARM::D11_D12_D13: OpKind = MCK_Reg89; break;
  ------------------
  |  Branch (6451:5): [True: 0, False: 161k]
  ------------------
 6452|      0|    case ARM::D12_D13_D14: OpKind = MCK_Reg84; break;
  ------------------
  |  Branch (6452:5): [True: 0, False: 161k]
  ------------------
 6453|      0|    case ARM::D13_D14_D15: OpKind = MCK_Reg89; break;
  ------------------
  |  Branch (6453:5): [True: 0, False: 161k]
  ------------------
 6454|      0|    case ARM::D14_D15_D16: OpKind = MCK_Reg85; break;
  ------------------
  |  Branch (6454:5): [True: 0, False: 161k]
  ------------------
 6455|      0|    case ARM::D15_D16_D17: OpKind = MCK_Reg90; break;
  ------------------
  |  Branch (6455:5): [True: 0, False: 161k]
  ------------------
 6456|      0|    case ARM::D16_D17_D18: OpKind = MCK_Reg86; break;
  ------------------
  |  Branch (6456:5): [True: 0, False: 161k]
  ------------------
 6457|      0|    case ARM::D17_D18_D19: OpKind = MCK_Reg91; break;
  ------------------
  |  Branch (6457:5): [True: 0, False: 161k]
  ------------------
 6458|      0|    case ARM::D18_D19_D20: OpKind = MCK_Reg86; break;
  ------------------
  |  Branch (6458:5): [True: 0, False: 161k]
  ------------------
 6459|      0|    case ARM::D19_D20_D21: OpKind = MCK_Reg91; break;
  ------------------
  |  Branch (6459:5): [True: 0, False: 161k]
  ------------------
 6460|      0|    case ARM::D20_D21_D22: OpKind = MCK_Reg86; break;
  ------------------
  |  Branch (6460:5): [True: 0, False: 161k]
  ------------------
 6461|      0|    case ARM::D21_D22_D23: OpKind = MCK_Reg91; break;
  ------------------
  |  Branch (6461:5): [True: 0, False: 161k]
  ------------------
 6462|      0|    case ARM::D22_D23_D24: OpKind = MCK_Reg86; break;
  ------------------
  |  Branch (6462:5): [True: 0, False: 161k]
  ------------------
 6463|      0|    case ARM::D23_D24_D25: OpKind = MCK_Reg91; break;
  ------------------
  |  Branch (6463:5): [True: 0, False: 161k]
  ------------------
 6464|      0|    case ARM::D24_D25_D26: OpKind = MCK_Reg86; break;
  ------------------
  |  Branch (6464:5): [True: 0, False: 161k]
  ------------------
 6465|      0|    case ARM::D25_D26_D27: OpKind = MCK_Reg91; break;
  ------------------
  |  Branch (6465:5): [True: 0, False: 161k]
  ------------------
 6466|      0|    case ARM::D26_D27_D28: OpKind = MCK_Reg86; break;
  ------------------
  |  Branch (6466:5): [True: 0, False: 161k]
  ------------------
 6467|      0|    case ARM::D27_D28_D29: OpKind = MCK_Reg91; break;
  ------------------
  |  Branch (6467:5): [True: 0, False: 161k]
  ------------------
 6468|      0|    case ARM::D28_D29_D30: OpKind = MCK_Reg86; break;
  ------------------
  |  Branch (6468:5): [True: 0, False: 161k]
  ------------------
 6469|      0|    case ARM::D29_D30_D31: OpKind = MCK_Reg91; break;
  ------------------
  |  Branch (6469:5): [True: 0, False: 161k]
  ------------------
 6470|      0|    case ARM::D0_D2_D4: OpKind = MCK_Reg92; break;
  ------------------
  |  Branch (6470:5): [True: 0, False: 161k]
  ------------------
 6471|      0|    case ARM::D1_D3_D5: OpKind = MCK_Reg92; break;
  ------------------
  |  Branch (6471:5): [True: 0, False: 161k]
  ------------------
 6472|      0|    case ARM::D2_D4_D6: OpKind = MCK_Reg92; break;
  ------------------
  |  Branch (6472:5): [True: 0, False: 161k]
  ------------------
 6473|      0|    case ARM::D3_D5_D7: OpKind = MCK_Reg92; break;
  ------------------
  |  Branch (6473:5): [True: 0, False: 161k]
  ------------------
 6474|      0|    case ARM::D4_D6_D8: OpKind = MCK_Reg93; break;
  ------------------
  |  Branch (6474:5): [True: 0, False: 161k]
  ------------------
 6475|      0|    case ARM::D5_D7_D9: OpKind = MCK_Reg93; break;
  ------------------
  |  Branch (6475:5): [True: 0, False: 161k]
  ------------------
 6476|      0|    case ARM::D6_D8_D10: OpKind = MCK_Reg94; break;
  ------------------
  |  Branch (6476:5): [True: 0, False: 161k]
  ------------------
 6477|      0|    case ARM::D7_D9_D11: OpKind = MCK_Reg94; break;
  ------------------
  |  Branch (6477:5): [True: 0, False: 161k]
  ------------------
 6478|      0|    case ARM::D8_D10_D12: OpKind = MCK_Reg95; break;
  ------------------
  |  Branch (6478:5): [True: 0, False: 161k]
  ------------------
 6479|      0|    case ARM::D9_D11_D13: OpKind = MCK_Reg95; break;
  ------------------
  |  Branch (6479:5): [True: 0, False: 161k]
  ------------------
 6480|      0|    case ARM::D10_D12_D14: OpKind = MCK_Reg95; break;
  ------------------
  |  Branch (6480:5): [True: 0, False: 161k]
  ------------------
 6481|      0|    case ARM::D11_D13_D15: OpKind = MCK_Reg95; break;
  ------------------
  |  Branch (6481:5): [True: 0, False: 161k]
  ------------------
 6482|      0|    case ARM::D12_D14_D16: OpKind = MCK_Reg96; break;
  ------------------
  |  Branch (6482:5): [True: 0, False: 161k]
  ------------------
 6483|      0|    case ARM::D13_D15_D17: OpKind = MCK_Reg96; break;
  ------------------
  |  Branch (6483:5): [True: 0, False: 161k]
  ------------------
 6484|      0|    case ARM::D14_D16_D18: OpKind = MCK_Reg97; break;
  ------------------
  |  Branch (6484:5): [True: 0, False: 161k]
  ------------------
 6485|      0|    case ARM::D15_D17_D19: OpKind = MCK_Reg97; break;
  ------------------
  |  Branch (6485:5): [True: 0, False: 161k]
  ------------------
 6486|      0|    case ARM::D16_D18_D20: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6486:5): [True: 0, False: 161k]
  ------------------
 6487|      0|    case ARM::D17_D19_D21: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6487:5): [True: 0, False: 161k]
  ------------------
 6488|      0|    case ARM::D18_D20_D22: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6488:5): [True: 0, False: 161k]
  ------------------
 6489|      0|    case ARM::D19_D21_D23: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6489:5): [True: 0, False: 161k]
  ------------------
 6490|      0|    case ARM::D20_D22_D24: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6490:5): [True: 0, False: 161k]
  ------------------
 6491|      0|    case ARM::D21_D23_D25: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6491:5): [True: 0, False: 161k]
  ------------------
 6492|      0|    case ARM::D22_D24_D26: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6492:5): [True: 0, False: 161k]
  ------------------
 6493|      0|    case ARM::D23_D25_D27: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6493:5): [True: 0, False: 161k]
  ------------------
 6494|      0|    case ARM::D24_D26_D28: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6494:5): [True: 0, False: 161k]
  ------------------
 6495|      0|    case ARM::D25_D27_D29: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6495:5): [True: 0, False: 161k]
  ------------------
 6496|      0|    case ARM::D26_D28_D30: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6496:5): [True: 0, False: 161k]
  ------------------
 6497|      0|    case ARM::D27_D29_D31: OpKind = MCK_DTripleSpc; break;
  ------------------
  |  Branch (6497:5): [True: 0, False: 161k]
  ------------------
 6498|      0|    case ARM::D1_D2: OpKind = MCK_Reg25; break;
  ------------------
  |  Branch (6498:5): [True: 0, False: 161k]
  ------------------
 6499|      0|    case ARM::D3_D4: OpKind = MCK_Reg25; break;
  ------------------
  |  Branch (6499:5): [True: 0, False: 161k]
  ------------------
 6500|      0|    case ARM::D5_D6: OpKind = MCK_Reg25; break;
  ------------------
  |  Branch (6500:5): [True: 0, False: 161k]
  ------------------
 6501|      0|    case ARM::D7_D8: OpKind = MCK_Reg26; break;
  ------------------
  |  Branch (6501:5): [True: 0, False: 161k]
  ------------------
 6502|      0|    case ARM::D9_D10: OpKind = MCK_Reg23; break;
  ------------------
  |  Branch (6502:5): [True: 0, False: 161k]
  ------------------
 6503|      0|    case ARM::D11_D12: OpKind = MCK_Reg23; break;
  ------------------
  |  Branch (6503:5): [True: 0, False: 161k]
  ------------------
 6504|      0|    case ARM::D13_D14: OpKind = MCK_Reg23; break;
  ------------------
  |  Branch (6504:5): [True: 0, False: 161k]
  ------------------
 6505|      0|    case ARM::D15_D16: OpKind = MCK_Reg24; break;
  ------------------
  |  Branch (6505:5): [True: 0, False: 161k]
  ------------------
 6506|      0|    case ARM::D17_D18: OpKind = MCK_DPair; break;
  ------------------
  |  Branch (6506:5): [True: 0, False: 161k]
  ------------------
 6507|      0|    case ARM::D19_D20: OpKind = MCK_DPair; break;
  ------------------
  |  Branch (6507:5): [True: 0, False: 161k]
  ------------------
 6508|      0|    case ARM::D21_D22: OpKind = MCK_DPair; break;
  ------------------
  |  Branch (6508:5): [True: 0, False: 161k]
  ------------------
 6509|      0|    case ARM::D23_D24: OpKind = MCK_DPair; break;
  ------------------
  |  Branch (6509:5): [True: 0, False: 161k]
  ------------------
 6510|      0|    case ARM::D25_D26: OpKind = MCK_DPair; break;
  ------------------
  |  Branch (6510:5): [True: 0, False: 161k]
  ------------------
 6511|      0|    case ARM::D27_D28: OpKind = MCK_DPair; break;
  ------------------
  |  Branch (6511:5): [True: 0, False: 161k]
  ------------------
 6512|      0|    case ARM::D29_D30: OpKind = MCK_DPair; break;
  ------------------
  |  Branch (6512:5): [True: 0, False: 161k]
  ------------------
 6513|      0|    case ARM::D1_D2_D3_D4: OpKind = MCK_Reg99; break;
  ------------------
  |  Branch (6513:5): [True: 0, False: 161k]
  ------------------
 6514|      0|    case ARM::D3_D4_D5_D6: OpKind = MCK_Reg99; break;
  ------------------
  |  Branch (6514:5): [True: 0, False: 161k]
  ------------------
 6515|      0|    case ARM::D5_D6_D7_D8: OpKind = MCK_Reg100; break;
  ------------------
  |  Branch (6515:5): [True: 0, False: 161k]
  ------------------
 6516|      0|    case ARM::D7_D8_D9_D10: OpKind = MCK_Reg101; break;
  ------------------
  |  Branch (6516:5): [True: 0, False: 161k]
  ------------------
 6517|      0|    case ARM::D9_D10_D11_D12: OpKind = MCK_Reg102; break;
  ------------------
  |  Branch (6517:5): [True: 0, False: 161k]
  ------------------
 6518|      0|    case ARM::D11_D12_D13_D14: OpKind = MCK_Reg102; break;
  ------------------
  |  Branch (6518:5): [True: 0, False: 161k]
  ------------------
 6519|      0|    case ARM::D13_D14_D15_D16: OpKind = MCK_Reg103; break;
  ------------------
  |  Branch (6519:5): [True: 0, False: 161k]
  ------------------
 6520|      0|    case ARM::D15_D16_D17_D18: OpKind = MCK_Reg104; break;
  ------------------
  |  Branch (6520:5): [True: 0, False: 161k]
  ------------------
 6521|      0|    case ARM::D17_D18_D19_D20: OpKind = MCK_Reg105; break;
  ------------------
  |  Branch (6521:5): [True: 0, False: 161k]
  ------------------
 6522|      0|    case ARM::D19_D20_D21_D22: OpKind = MCK_Reg105; break;
  ------------------
  |  Branch (6522:5): [True: 0, False: 161k]
  ------------------
 6523|      0|    case ARM::D21_D22_D23_D24: OpKind = MCK_Reg105; break;
  ------------------
  |  Branch (6523:5): [True: 0, False: 161k]
  ------------------
 6524|      0|    case ARM::D23_D24_D25_D26: OpKind = MCK_Reg105; break;
  ------------------
  |  Branch (6524:5): [True: 0, False: 161k]
  ------------------
 6525|      0|    case ARM::D25_D26_D27_D28: OpKind = MCK_Reg105; break;
  ------------------
  |  Branch (6525:5): [True: 0, False: 161k]
  ------------------
 6526|      0|    case ARM::D27_D28_D29_D30: OpKind = MCK_Reg105; break;
  ------------------
  |  Branch (6526:5): [True: 0, False: 161k]
  ------------------
 6527|   161k|    }
 6528|   161k|    return isSubclass(OpKind, Kind) ? MCTargetAsmParser::Match_Success :
  ------------------
  |  Branch (6528:12): [True: 123k, False: 37.6k]
  ------------------
 6529|   161k|                                      MCTargetAsmParser::Match_InvalidOperand;
 6530|   161k|  }
 6531|       |
 6532|  98.4k|  return MCTargetAsmParser::Match_InvalidOperand;
 6533|   259k|}
ARMAsmParser.cpp:_ZL10isSubclassN12_GLOBAL__N_114MatchClassKindES0_:
 4471|   195k|static bool isSubclass(MatchClassKind A, MatchClassKind B) {
 4472|   195k|  if (A == B)
  ------------------
  |  Branch (4472:7): [True: 16.9k, False: 178k]
  ------------------
 4473|  16.9k|    return true;
 4474|       |
 4475|   178k|  switch (A) {
 4476|  9.46k|  default:
  ------------------
  |  Branch (4476:3): [True: 9.46k, False: 169k]
  ------------------
 4477|  9.46k|    return false;
 4478|       |
 4479|    233|  case MCK__DOT_d:
  ------------------
  |  Branch (4479:3): [True: 233, False: 178k]
  ------------------
 4480|    233|    switch (B) {
 4481|    206|    default: return false;
  ------------------
  |  Branch (4481:5): [True: 206, False: 27]
  ------------------
 4482|      8|    case MCK__DOT_f64: return true;
  ------------------
  |  Branch (4482:5): [True: 8, False: 225]
  ------------------
 4483|     19|    case MCK__DOT_64: return true;
  ------------------
  |  Branch (4483:5): [True: 19, False: 214]
  ------------------
 4484|    233|    }
 4485|       |
 4486|  2.34k|  case MCK__DOT_f:
  ------------------
  |  Branch (4486:3): [True: 2.34k, False: 176k]
  ------------------
 4487|  2.34k|    switch (B) {
 4488|  1.58k|    default: return false;
  ------------------
  |  Branch (4488:5): [True: 1.58k, False: 760]
  ------------------
 4489|    141|    case MCK__DOT_f32: return true;
  ------------------
  |  Branch (4489:5): [True: 141, False: 2.20k]
  ------------------
 4490|    619|    case MCK__DOT_32: return true;
  ------------------
  |  Branch (4490:5): [True: 619, False: 1.72k]
  ------------------
 4491|  2.34k|    }
 4492|       |
 4493|  3.46k|  case MCK__DOT_s16:
  ------------------
  |  Branch (4493:3): [True: 3.46k, False: 175k]
  ------------------
 4494|  3.46k|    switch (B) {
 4495|  2.88k|    default: return false;
  ------------------
  |  Branch (4495:5): [True: 2.88k, False: 577]
  ------------------
 4496|    297|    case MCK__DOT_i16: return true;
  ------------------
  |  Branch (4496:5): [True: 297, False: 3.16k]
  ------------------
 4497|    280|    case MCK__DOT_16: return true;
  ------------------
  |  Branch (4497:5): [True: 280, False: 3.18k]
  ------------------
 4498|  3.46k|    }
 4499|       |
 4500|  9.45k|  case MCK__DOT_s32:
  ------------------
  |  Branch (4500:3): [True: 9.45k, False: 169k]
  ------------------
 4501|  9.45k|    switch (B) {
 4502|  7.49k|    default: return false;
  ------------------
  |  Branch (4502:5): [True: 7.49k, False: 1.96k]
  ------------------
 4503|  1.21k|    case MCK__DOT_i32: return true;
  ------------------
  |  Branch (4503:5): [True: 1.21k, False: 8.24k]
  ------------------
 4504|    751|    case MCK__DOT_32: return true;
  ------------------
  |  Branch (4504:5): [True: 751, False: 8.70k]
  ------------------
 4505|  9.45k|    }
 4506|       |
 4507|    368|  case MCK__DOT_s64:
  ------------------
  |  Branch (4507:3): [True: 368, False: 178k]
  ------------------
 4508|    368|    switch (B) {
 4509|    350|    default: return false;
  ------------------
  |  Branch (4509:5): [True: 350, False: 18]
  ------------------
 4510|     14|    case MCK__DOT_i64: return true;
  ------------------
  |  Branch (4510:5): [True: 14, False: 354]
  ------------------
 4511|      4|    case MCK__DOT_64: return true;
  ------------------
  |  Branch (4511:5): [True: 4, False: 364]
  ------------------
 4512|    368|    }
 4513|       |
 4514|    826|  case MCK__DOT_s8:
  ------------------
  |  Branch (4514:3): [True: 826, False: 177k]
  ------------------
 4515|    826|    switch (B) {
 4516|    753|    default: return false;
  ------------------
  |  Branch (4516:5): [True: 753, False: 73]
  ------------------
 4517|     24|    case MCK__DOT_i8: return true;
  ------------------
  |  Branch (4517:5): [True: 24, False: 802]
  ------------------
 4518|     49|    case MCK__DOT_8: return true;
  ------------------
  |  Branch (4518:5): [True: 49, False: 777]
  ------------------
 4519|    826|    }
 4520|       |
 4521|    502|  case MCK__DOT_u16:
  ------------------
  |  Branch (4521:3): [True: 502, False: 178k]
  ------------------
 4522|    502|    switch (B) {
 4523|    470|    default: return false;
  ------------------
  |  Branch (4523:5): [True: 470, False: 32]
  ------------------
 4524|     18|    case MCK__DOT_i16: return true;
  ------------------
  |  Branch (4524:5): [True: 18, False: 484]
  ------------------
 4525|     14|    case MCK__DOT_16: return true;
  ------------------
  |  Branch (4525:5): [True: 14, False: 488]
  ------------------
 4526|    502|    }
 4527|       |
 4528|    903|  case MCK__DOT_u32:
  ------------------
  |  Branch (4528:3): [True: 903, False: 177k]
  ------------------
 4529|    903|    switch (B) {
 4530|    818|    default: return false;
  ------------------
  |  Branch (4530:5): [True: 818, False: 85]
  ------------------
 4531|     49|    case MCK__DOT_i32: return true;
  ------------------
  |  Branch (4531:5): [True: 49, False: 854]
  ------------------
 4532|     36|    case MCK__DOT_32: return true;
  ------------------
  |  Branch (4532:5): [True: 36, False: 867]
  ------------------
 4533|    903|    }
 4534|       |
 4535|    622|  case MCK__DOT_u64:
  ------------------
  |  Branch (4535:3): [True: 622, False: 177k]
  ------------------
 4536|    622|    switch (B) {
 4537|    612|    default: return false;
  ------------------
  |  Branch (4537:5): [True: 612, False: 10]
  ------------------
 4538|      9|    case MCK__DOT_i64: return true;
  ------------------
  |  Branch (4538:5): [True: 9, False: 613]
  ------------------
 4539|      1|    case MCK__DOT_64: return true;
  ------------------
  |  Branch (4539:5): [True: 1, False: 621]
  ------------------
 4540|    622|    }
 4541|       |
 4542|    541|  case MCK__DOT_u8:
  ------------------
  |  Branch (4542:3): [True: 541, False: 178k]
  ------------------
 4543|    541|    switch (B) {
 4544|    507|    default: return false;
  ------------------
  |  Branch (4544:5): [True: 507, False: 34]
  ------------------
 4545|     11|    case MCK__DOT_i8: return true;
  ------------------
  |  Branch (4545:5): [True: 11, False: 530]
  ------------------
 4546|     23|    case MCK__DOT_8: return true;
  ------------------
  |  Branch (4546:5): [True: 23, False: 518]
  ------------------
 4547|    541|    }
 4548|       |
 4549|  2.63k|  case MCK__DOT_f32:
  ------------------
  |  Branch (4549:3): [True: 2.63k, False: 175k]
  ------------------
 4550|  2.63k|    return B == MCK__DOT_32;
 4551|       |
 4552|    708|  case MCK__DOT_f64:
  ------------------
  |  Branch (4552:3): [True: 708, False: 177k]
  ------------------
 4553|    708|    return B == MCK__DOT_64;
 4554|       |
 4555|    334|  case MCK__DOT_i16:
  ------------------
  |  Branch (4555:3): [True: 334, False: 178k]
  ------------------
 4556|    334|    return B == MCK__DOT_16;
 4557|       |
 4558|    252|  case MCK__DOT_i32:
  ------------------
  |  Branch (4558:3): [True: 252, False: 178k]
  ------------------
 4559|    252|    return B == MCK__DOT_32;
 4560|       |
 4561|    142|  case MCK__DOT_i64:
  ------------------
  |  Branch (4561:3): [True: 142, False: 178k]
  ------------------
 4562|    142|    return B == MCK__DOT_64;
 4563|       |
 4564|    114|  case MCK__DOT_i8:
  ------------------
  |  Branch (4564:3): [True: 114, False: 178k]
  ------------------
 4565|    114|    return B == MCK__DOT_8;
 4566|       |
 4567|    102|  case MCK__DOT_p16:
  ------------------
  |  Branch (4567:3): [True: 102, False: 178k]
  ------------------
 4568|    102|    return B == MCK__DOT_16;
 4569|       |
 4570|    133|  case MCK__DOT_p8:
  ------------------
  |  Branch (4570:3): [True: 133, False: 178k]
  ------------------
 4571|    133|    return B == MCK__DOT_8;
 4572|       |
 4573|      0|  case MCK_Reg74:
  ------------------
  |  Branch (4573:3): [True: 0, False: 178k]
  ------------------
 4574|      0|    switch (B) {
 4575|      0|    default: return false;
  ------------------
  |  Branch (4575:5): [True: 0, False: 0]
  ------------------
 4576|      0|    case MCK_Reg73: return true;
  ------------------
  |  Branch (4576:5): [True: 0, False: 0]
  ------------------
 4577|      0|    case MCK_Reg71: return true;
  ------------------
  |  Branch (4577:5): [True: 0, False: 0]
  ------------------
 4578|      0|    case MCK_GPRPair: return true;
  ------------------
  |  Branch (4578:5): [True: 0, False: 0]
  ------------------
 4579|      0|    }
 4580|       |
 4581|      0|  case MCK_Reg58:
  ------------------
  |  Branch (4581:3): [True: 0, False: 178k]
  ------------------
 4582|      0|    switch (B) {
 4583|      0|    default: return false;
  ------------------
  |  Branch (4583:5): [True: 0, False: 0]
  ------------------
 4584|      0|    case MCK_Reg59: return true;
  ------------------
  |  Branch (4584:5): [True: 0, False: 0]
  ------------------
 4585|      0|    case MCK_Reg60: return true;
  ------------------
  |  Branch (4585:5): [True: 0, False: 0]
  ------------------
 4586|      0|    case MCK_Reg61: return true;
  ------------------
  |  Branch (4586:5): [True: 0, False: 0]
  ------------------
 4587|      0|    case MCK_Reg62: return true;
  ------------------
  |  Branch (4587:5): [True: 0, False: 0]
  ------------------
 4588|      0|    case MCK_Reg63: return true;
  ------------------
  |  Branch (4588:5): [True: 0, False: 0]
  ------------------
 4589|      0|    case MCK_Reg64: return true;
  ------------------
  |  Branch (4589:5): [True: 0, False: 0]
  ------------------
 4590|      0|    case MCK_Reg65: return true;
  ------------------
  |  Branch (4590:5): [True: 0, False: 0]
  ------------------
 4591|      0|    case MCK_QQQQPR: return true;
  ------------------
  |  Branch (4591:5): [True: 0, False: 0]
  ------------------
 4592|      0|    }
 4593|       |
 4594|  3.92k|  case MCK_Reg10:
  ------------------
  |  Branch (4594:3): [True: 3.92k, False: 174k]
  ------------------
 4595|  3.92k|    switch (B) {
 4596|  1.37k|    default: return false;
  ------------------
  |  Branch (4596:5): [True: 1.37k, False: 2.55k]
  ------------------
 4597|      1|    case MCK_tcGPR: return true;
  ------------------
  |  Branch (4597:5): [True: 1, False: 3.92k]
  ------------------
 4598|      0|    case MCK_Reg9: return true;
  ------------------
  |  Branch (4598:5): [True: 0, False: 3.92k]
  ------------------
 4599|      0|    case MCK_Reg7: return true;
  ------------------
  |  Branch (4599:5): [True: 0, False: 3.92k]
  ------------------
 4600|      0|    case MCK_hGPR: return true;
  ------------------
  |  Branch (4600:5): [True: 0, False: 3.92k]
  ------------------
 4601|    407|    case MCK_rGPR: return true;
  ------------------
  |  Branch (4601:5): [True: 407, False: 3.51k]
  ------------------
 4602|  1.02k|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (4602:5): [True: 1.02k, False: 2.90k]
  ------------------
 4603|  1.11k|    case MCK_GPR: return true;
  ------------------
  |  Branch (4603:5): [True: 1.11k, False: 2.80k]
  ------------------
 4604|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (4604:5): [True: 0, False: 3.92k]
  ------------------
 4605|  3.92k|    }
 4606|       |
 4607|     76|  case MCK_APSR_NZCV:
  ------------------
  |  Branch (4607:3): [True: 76, False: 178k]
  ------------------
 4608|     76|    return B == MCK_GPRwithAPSR;
 4609|       |
 4610|  10.6k|  case MCK_GPRsp:
  ------------------
  |  Branch (4610:3): [True: 10.6k, False: 167k]
  ------------------
 4611|  10.6k|    switch (B) {
 4612|  4.23k|    default: return false;
  ------------------
  |  Branch (4612:5): [True: 4.23k, False: 6.38k]
  ------------------
 4613|      0|    case MCK_Reg7: return true;
  ------------------
  |  Branch (4613:5): [True: 0, False: 10.6k]
  ------------------
 4614|      0|    case MCK_hGPR: return true;
  ------------------
  |  Branch (4614:5): [True: 0, False: 10.6k]
  ------------------
 4615|  3.36k|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (4615:5): [True: 3.36k, False: 7.25k]
  ------------------
 4616|  3.01k|    case MCK_GPR: return true;
  ------------------
  |  Branch (4616:5): [True: 3.01k, False: 7.60k]
  ------------------
 4617|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (4617:5): [True: 0, False: 10.6k]
  ------------------
 4618|  10.6k|    }
 4619|       |
 4620|  3.08k|  case MCK_LR:
  ------------------
  |  Branch (4620:3): [True: 3.08k, False: 175k]
  ------------------
 4621|  3.08k|    switch (B) {
 4622|  1.20k|    default: return false;
  ------------------
  |  Branch (4622:5): [True: 1.20k, False: 1.88k]
  ------------------
 4623|      0|    case MCK_Reg9: return true;
  ------------------
  |  Branch (4623:5): [True: 0, False: 3.08k]
  ------------------
 4624|      0|    case MCK_Reg7: return true;
  ------------------
  |  Branch (4624:5): [True: 0, False: 3.08k]
  ------------------
 4625|      0|    case MCK_hGPR: return true;
  ------------------
  |  Branch (4625:5): [True: 0, False: 3.08k]
  ------------------
 4626|    401|    case MCK_rGPR: return true;
  ------------------
  |  Branch (4626:5): [True: 401, False: 2.68k]
  ------------------
 4627|    942|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (4627:5): [True: 942, False: 2.13k]
  ------------------
 4628|    537|    case MCK_GPR: return true;
  ------------------
  |  Branch (4628:5): [True: 537, False: 2.54k]
  ------------------
 4629|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (4629:5): [True: 0, False: 3.08k]
  ------------------
 4630|  3.08k|    }
 4631|       |
 4632|    717|  case MCK_PC:
  ------------------
  |  Branch (4632:3): [True: 717, False: 177k]
  ------------------
 4633|    717|    switch (B) {
 4634|    489|    default: return false;
  ------------------
  |  Branch (4634:5): [True: 489, False: 228]
  ------------------
 4635|      0|    case MCK_hGPR: return true;
  ------------------
  |  Branch (4635:5): [True: 0, False: 717]
  ------------------
 4636|    228|    case MCK_GPR: return true;
  ------------------
  |  Branch (4636:5): [True: 228, False: 489]
  ------------------
 4637|    717|    }
 4638|       |
 4639|      0|  case MCK_Reg99:
  ------------------
  |  Branch (4639:3): [True: 0, False: 178k]
  ------------------
 4640|      0|    switch (B) {
 4641|      0|    default: return false;
  ------------------
  |  Branch (4641:5): [True: 0, False: 0]
  ------------------
 4642|      0|    case MCK_Reg100: return true;
  ------------------
  |  Branch (4642:5): [True: 0, False: 0]
  ------------------
 4643|      0|    case MCK_Reg101: return true;
  ------------------
  |  Branch (4643:5): [True: 0, False: 0]
  ------------------
 4644|      0|    case MCK_Reg56: return true;
  ------------------
  |  Branch (4644:5): [True: 0, False: 0]
  ------------------
 4645|      0|    case MCK_Reg102: return true;
  ------------------
  |  Branch (4645:5): [True: 0, False: 0]
  ------------------
 4646|      0|    case MCK_Reg57: return true;
  ------------------
  |  Branch (4646:5): [True: 0, False: 0]
  ------------------
 4647|      0|    case MCK_Reg103: return true;
  ------------------
  |  Branch (4647:5): [True: 0, False: 0]
  ------------------
 4648|      0|    case MCK_Reg54: return true;
  ------------------
  |  Branch (4648:5): [True: 0, False: 0]
  ------------------
 4649|      0|    case MCK_Reg104: return true;
  ------------------
  |  Branch (4649:5): [True: 0, False: 0]
  ------------------
 4650|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (4650:5): [True: 0, False: 0]
  ------------------
 4651|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4651:5): [True: 0, False: 0]
  ------------------
 4652|      0|    case MCK_Reg105: return true;
  ------------------
  |  Branch (4652:5): [True: 0, False: 0]
  ------------------
 4653|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4653:5): [True: 0, False: 0]
  ------------------
 4654|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4654:5): [True: 0, False: 0]
  ------------------
 4655|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4655:5): [True: 0, False: 0]
  ------------------
 4656|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4656:5): [True: 0, False: 0]
  ------------------
 4657|      0|    }
 4658|       |
 4659|      0|  case MCK_Reg72:
  ------------------
  |  Branch (4659:3): [True: 0, False: 178k]
  ------------------
 4660|      0|    switch (B) {
 4661|      0|    default: return false;
  ------------------
  |  Branch (4661:5): [True: 0, False: 0]
  ------------------
 4662|      0|    case MCK_Reg73: return true;
  ------------------
  |  Branch (4662:5): [True: 0, False: 0]
  ------------------
 4663|      0|    case MCK_Reg69: return true;
  ------------------
  |  Branch (4663:5): [True: 0, False: 0]
  ------------------
 4664|      0|    case MCK_GPRPair: return true;
  ------------------
  |  Branch (4664:5): [True: 0, False: 0]
  ------------------
 4665|      0|    }
 4666|       |
 4667|      0|  case MCK_Reg67:
  ------------------
  |  Branch (4667:3): [True: 0, False: 178k]
  ------------------
 4668|      0|    switch (B) {
 4669|      0|    default: return false;
  ------------------
  |  Branch (4669:5): [True: 0, False: 0]
  ------------------
 4670|      0|    case MCK_Reg71: return true;
  ------------------
  |  Branch (4670:5): [True: 0, False: 0]
  ------------------
 4671|      0|    case MCK_Reg68: return true;
  ------------------
  |  Branch (4671:5): [True: 0, False: 0]
  ------------------
 4672|      0|    case MCK_Reg69: return true;
  ------------------
  |  Branch (4672:5): [True: 0, False: 0]
  ------------------
 4673|      0|    case MCK_GPRPair: return true;
  ------------------
  |  Branch (4673:5): [True: 0, False: 0]
  ------------------
 4674|      0|    }
 4675|       |
 4676|      0|  case MCK_Reg59:
  ------------------
  |  Branch (4676:3): [True: 0, False: 178k]
  ------------------
 4677|      0|    switch (B) {
 4678|      0|    default: return false;
  ------------------
  |  Branch (4678:5): [True: 0, False: 0]
  ------------------
 4679|      0|    case MCK_Reg60: return true;
  ------------------
  |  Branch (4679:5): [True: 0, False: 0]
  ------------------
 4680|      0|    case MCK_Reg61: return true;
  ------------------
  |  Branch (4680:5): [True: 0, False: 0]
  ------------------
 4681|      0|    case MCK_Reg62: return true;
  ------------------
  |  Branch (4681:5): [True: 0, False: 0]
  ------------------
 4682|      0|    case MCK_Reg63: return true;
  ------------------
  |  Branch (4682:5): [True: 0, False: 0]
  ------------------
 4683|      0|    case MCK_Reg64: return true;
  ------------------
  |  Branch (4683:5): [True: 0, False: 0]
  ------------------
 4684|      0|    case MCK_Reg65: return true;
  ------------------
  |  Branch (4684:5): [True: 0, False: 0]
  ------------------
 4685|      0|    case MCK_QQQQPR: return true;
  ------------------
  |  Branch (4685:5): [True: 0, False: 0]
  ------------------
 4686|      0|    }
 4687|       |
 4688|      0|  case MCK_Reg100:
  ------------------
  |  Branch (4688:3): [True: 0, False: 178k]
  ------------------
 4689|      0|    switch (B) {
 4690|      0|    default: return false;
  ------------------
  |  Branch (4690:5): [True: 0, False: 0]
  ------------------
 4691|      0|    case MCK_Reg101: return true;
  ------------------
  |  Branch (4691:5): [True: 0, False: 0]
  ------------------
 4692|      0|    case MCK_Reg102: return true;
  ------------------
  |  Branch (4692:5): [True: 0, False: 0]
  ------------------
 4693|      0|    case MCK_Reg57: return true;
  ------------------
  |  Branch (4693:5): [True: 0, False: 0]
  ------------------
 4694|      0|    case MCK_Reg103: return true;
  ------------------
  |  Branch (4694:5): [True: 0, False: 0]
  ------------------
 4695|      0|    case MCK_Reg54: return true;
  ------------------
  |  Branch (4695:5): [True: 0, False: 0]
  ------------------
 4696|      0|    case MCK_Reg104: return true;
  ------------------
  |  Branch (4696:5): [True: 0, False: 0]
  ------------------
 4697|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (4697:5): [True: 0, False: 0]
  ------------------
 4698|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4698:5): [True: 0, False: 0]
  ------------------
 4699|      0|    case MCK_Reg105: return true;
  ------------------
  |  Branch (4699:5): [True: 0, False: 0]
  ------------------
 4700|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4700:5): [True: 0, False: 0]
  ------------------
 4701|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4701:5): [True: 0, False: 0]
  ------------------
 4702|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4702:5): [True: 0, False: 0]
  ------------------
 4703|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4703:5): [True: 0, False: 0]
  ------------------
 4704|      0|    }
 4705|       |
 4706|      0|  case MCK_Reg87:
  ------------------
  |  Branch (4706:3): [True: 0, False: 178k]
  ------------------
 4707|      0|    switch (B) {
 4708|      0|    default: return false;
  ------------------
  |  Branch (4708:5): [True: 0, False: 0]
  ------------------
 4709|      0|    case MCK_Reg88: return true;
  ------------------
  |  Branch (4709:5): [True: 0, False: 0]
  ------------------
 4710|      0|    case MCK_Reg75: return true;
  ------------------
  |  Branch (4710:5): [True: 0, False: 0]
  ------------------
 4711|      0|    case MCK_Reg89: return true;
  ------------------
  |  Branch (4711:5): [True: 0, False: 0]
  ------------------
 4712|      0|    case MCK_Reg76: return true;
  ------------------
  |  Branch (4712:5): [True: 0, False: 0]
  ------------------
 4713|      0|    case MCK_Reg90: return true;
  ------------------
  |  Branch (4713:5): [True: 0, False: 0]
  ------------------
 4714|      0|    case MCK_Reg77: return true;
  ------------------
  |  Branch (4714:5): [True: 0, False: 0]
  ------------------
 4715|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (4715:5): [True: 0, False: 0]
  ------------------
 4716|      0|    case MCK_Reg91: return true;
  ------------------
  |  Branch (4716:5): [True: 0, False: 0]
  ------------------
 4717|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (4717:5): [True: 0, False: 0]
  ------------------
 4718|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (4718:5): [True: 0, False: 0]
  ------------------
 4719|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (4719:5): [True: 0, False: 0]
  ------------------
 4720|      0|    }
 4721|       |
 4722|      0|  case MCK_Reg82:
  ------------------
  |  Branch (4722:3): [True: 0, False: 178k]
  ------------------
 4723|      0|    switch (B) {
 4724|      0|    default: return false;
  ------------------
  |  Branch (4724:5): [True: 0, False: 0]
  ------------------
 4725|      0|    case MCK_Reg83: return true;
  ------------------
  |  Branch (4725:5): [True: 0, False: 0]
  ------------------
 4726|      0|    case MCK_Reg75: return true;
  ------------------
  |  Branch (4726:5): [True: 0, False: 0]
  ------------------
 4727|      0|    case MCK_Reg84: return true;
  ------------------
  |  Branch (4727:5): [True: 0, False: 0]
  ------------------
 4728|      0|    case MCK_Reg76: return true;
  ------------------
  |  Branch (4728:5): [True: 0, False: 0]
  ------------------
 4729|      0|    case MCK_Reg85: return true;
  ------------------
  |  Branch (4729:5): [True: 0, False: 0]
  ------------------
 4730|      0|    case MCK_Reg77: return true;
  ------------------
  |  Branch (4730:5): [True: 0, False: 0]
  ------------------
 4731|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (4731:5): [True: 0, False: 0]
  ------------------
 4732|      0|    case MCK_Reg86: return true;
  ------------------
  |  Branch (4732:5): [True: 0, False: 0]
  ------------------
 4733|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (4733:5): [True: 0, False: 0]
  ------------------
 4734|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (4734:5): [True: 0, False: 0]
  ------------------
 4735|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (4735:5): [True: 0, False: 0]
  ------------------
 4736|      0|    }
 4737|       |
 4738|      0|  case MCK_Reg73:
  ------------------
  |  Branch (4738:3): [True: 0, False: 178k]
  ------------------
 4739|      0|    return B == MCK_GPRPair;
 4740|       |
 4741|      0|  case MCK_Reg71:
  ------------------
  |  Branch (4741:3): [True: 0, False: 178k]
  ------------------
 4742|      0|    return B == MCK_GPRPair;
 4743|       |
 4744|      0|  case MCK_Reg60:
  ------------------
  |  Branch (4744:3): [True: 0, False: 178k]
  ------------------
 4745|      0|    switch (B) {
 4746|      0|    default: return false;
  ------------------
  |  Branch (4746:5): [True: 0, False: 0]
  ------------------
 4747|      0|    case MCK_Reg61: return true;
  ------------------
  |  Branch (4747:5): [True: 0, False: 0]
  ------------------
 4748|      0|    case MCK_Reg62: return true;
  ------------------
  |  Branch (4748:5): [True: 0, False: 0]
  ------------------
 4749|      0|    case MCK_Reg63: return true;
  ------------------
  |  Branch (4749:5): [True: 0, False: 0]
  ------------------
 4750|      0|    case MCK_Reg64: return true;
  ------------------
  |  Branch (4750:5): [True: 0, False: 0]
  ------------------
 4751|      0|    case MCK_Reg65: return true;
  ------------------
  |  Branch (4751:5): [True: 0, False: 0]
  ------------------
 4752|      0|    case MCK_QQQQPR: return true;
  ------------------
  |  Branch (4752:5): [True: 0, False: 0]
  ------------------
 4753|      0|    }
 4754|       |
 4755|      0|  case MCK_Reg44:
  ------------------
  |  Branch (4755:3): [True: 0, False: 178k]
  ------------------
 4756|      0|    switch (B) {
 4757|      0|    default: return false;
  ------------------
  |  Branch (4757:5): [True: 0, False: 0]
  ------------------
 4758|      0|    case MCK_Reg45: return true;
  ------------------
  |  Branch (4758:5): [True: 0, False: 0]
  ------------------
 4759|      0|    case MCK_Reg56: return true;
  ------------------
  |  Branch (4759:5): [True: 0, False: 0]
  ------------------
 4760|      0|    case MCK_Reg57: return true;
  ------------------
  |  Branch (4760:5): [True: 0, False: 0]
  ------------------
 4761|      0|    case MCK_Reg54: return true;
  ------------------
  |  Branch (4761:5): [True: 0, False: 0]
  ------------------
 4762|      0|    case MCK_Reg46: return true;
  ------------------
  |  Branch (4762:5): [True: 0, False: 0]
  ------------------
 4763|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (4763:5): [True: 0, False: 0]
  ------------------
 4764|      0|    case MCK_Reg47: return true;
  ------------------
  |  Branch (4764:5): [True: 0, False: 0]
  ------------------
 4765|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4765:5): [True: 0, False: 0]
  ------------------
 4766|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4766:5): [True: 0, False: 0]
  ------------------
 4767|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4767:5): [True: 0, False: 0]
  ------------------
 4768|      0|    case MCK_QQPR: return true;
  ------------------
  |  Branch (4768:5): [True: 0, False: 0]
  ------------------
 4769|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4769:5): [True: 0, False: 0]
  ------------------
 4770|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4770:5): [True: 0, False: 0]
  ------------------
 4771|      0|    }
 4772|       |
 4773|      0|  case MCK_Reg101:
  ------------------
  |  Branch (4773:3): [True: 0, False: 178k]
  ------------------
 4774|      0|    switch (B) {
 4775|      0|    default: return false;
  ------------------
  |  Branch (4775:5): [True: 0, False: 0]
  ------------------
 4776|      0|    case MCK_Reg102: return true;
  ------------------
  |  Branch (4776:5): [True: 0, False: 0]
  ------------------
 4777|      0|    case MCK_Reg103: return true;
  ------------------
  |  Branch (4777:5): [True: 0, False: 0]
  ------------------
 4778|      0|    case MCK_Reg104: return true;
  ------------------
  |  Branch (4778:5): [True: 0, False: 0]
  ------------------
 4779|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (4779:5): [True: 0, False: 0]
  ------------------
 4780|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4780:5): [True: 0, False: 0]
  ------------------
 4781|      0|    case MCK_Reg105: return true;
  ------------------
  |  Branch (4781:5): [True: 0, False: 0]
  ------------------
 4782|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4782:5): [True: 0, False: 0]
  ------------------
 4783|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4783:5): [True: 0, False: 0]
  ------------------
 4784|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4784:5): [True: 0, False: 0]
  ------------------
 4785|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4785:5): [True: 0, False: 0]
  ------------------
 4786|      0|    }
 4787|       |
 4788|      0|  case MCK_Reg92:
  ------------------
  |  Branch (4788:3): [True: 0, False: 178k]
  ------------------
 4789|      0|    switch (B) {
 4790|      0|    default: return false;
  ------------------
  |  Branch (4790:5): [True: 0, False: 0]
  ------------------
 4791|      0|    case MCK_Reg93: return true;
  ------------------
  |  Branch (4791:5): [True: 0, False: 0]
  ------------------
 4792|      0|    case MCK_Reg94: return true;
  ------------------
  |  Branch (4792:5): [True: 0, False: 0]
  ------------------
 4793|      0|    case MCK_Reg95: return true;
  ------------------
  |  Branch (4793:5): [True: 0, False: 0]
  ------------------
 4794|      0|    case MCK_Reg96: return true;
  ------------------
  |  Branch (4794:5): [True: 0, False: 0]
  ------------------
 4795|      0|    case MCK_Reg97: return true;
  ------------------
  |  Branch (4795:5): [True: 0, False: 0]
  ------------------
 4796|      0|    case MCK_DTripleSpc: return true;
  ------------------
  |  Branch (4796:5): [True: 0, False: 0]
  ------------------
 4797|      0|    }
 4798|       |
 4799|      0|  case MCK_Reg88:
  ------------------
  |  Branch (4799:3): [True: 0, False: 178k]
  ------------------
 4800|      0|    switch (B) {
 4801|      0|    default: return false;
  ------------------
  |  Branch (4801:5): [True: 0, False: 0]
  ------------------
 4802|      0|    case MCK_Reg89: return true;
  ------------------
  |  Branch (4802:5): [True: 0, False: 0]
  ------------------
 4803|      0|    case MCK_Reg90: return true;
  ------------------
  |  Branch (4803:5): [True: 0, False: 0]
  ------------------
 4804|      0|    case MCK_Reg77: return true;
  ------------------
  |  Branch (4804:5): [True: 0, False: 0]
  ------------------
 4805|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (4805:5): [True: 0, False: 0]
  ------------------
 4806|      0|    case MCK_Reg91: return true;
  ------------------
  |  Branch (4806:5): [True: 0, False: 0]
  ------------------
 4807|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (4807:5): [True: 0, False: 0]
  ------------------
 4808|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (4808:5): [True: 0, False: 0]
  ------------------
 4809|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (4809:5): [True: 0, False: 0]
  ------------------
 4810|      0|    }
 4811|       |
 4812|      0|  case MCK_Reg83:
  ------------------
  |  Branch (4812:3): [True: 0, False: 178k]
  ------------------
 4813|      0|    switch (B) {
 4814|      0|    default: return false;
  ------------------
  |  Branch (4814:5): [True: 0, False: 0]
  ------------------
 4815|      0|    case MCK_Reg84: return true;
  ------------------
  |  Branch (4815:5): [True: 0, False: 0]
  ------------------
 4816|      0|    case MCK_Reg76: return true;
  ------------------
  |  Branch (4816:5): [True: 0, False: 0]
  ------------------
 4817|      0|    case MCK_Reg85: return true;
  ------------------
  |  Branch (4817:5): [True: 0, False: 0]
  ------------------
 4818|      0|    case MCK_Reg77: return true;
  ------------------
  |  Branch (4818:5): [True: 0, False: 0]
  ------------------
 4819|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (4819:5): [True: 0, False: 0]
  ------------------
 4820|      0|    case MCK_Reg86: return true;
  ------------------
  |  Branch (4820:5): [True: 0, False: 0]
  ------------------
 4821|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (4821:5): [True: 0, False: 0]
  ------------------
 4822|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (4822:5): [True: 0, False: 0]
  ------------------
 4823|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (4823:5): [True: 0, False: 0]
  ------------------
 4824|      0|    }
 4825|       |
 4826|      0|  case MCK_Reg68:
  ------------------
  |  Branch (4826:3): [True: 0, False: 178k]
  ------------------
 4827|      0|    switch (B) {
 4828|      0|    default: return false;
  ------------------
  |  Branch (4828:5): [True: 0, False: 0]
  ------------------
 4829|      0|    case MCK_Reg69: return true;
  ------------------
  |  Branch (4829:5): [True: 0, False: 0]
  ------------------
 4830|      0|    case MCK_GPRPair: return true;
  ------------------
  |  Branch (4830:5): [True: 0, False: 0]
  ------------------
 4831|      0|    }
 4832|       |
 4833|      0|  case MCK_Reg61:
  ------------------
  |  Branch (4833:3): [True: 0, False: 178k]
  ------------------
 4834|      0|    switch (B) {
 4835|      0|    default: return false;
  ------------------
  |  Branch (4835:5): [True: 0, False: 0]
  ------------------
 4836|      0|    case MCK_Reg62: return true;
  ------------------
  |  Branch (4836:5): [True: 0, False: 0]
  ------------------
 4837|      0|    case MCK_Reg63: return true;
  ------------------
  |  Branch (4837:5): [True: 0, False: 0]
  ------------------
 4838|      0|    case MCK_Reg64: return true;
  ------------------
  |  Branch (4838:5): [True: 0, False: 0]
  ------------------
 4839|      0|    case MCK_Reg65: return true;
  ------------------
  |  Branch (4839:5): [True: 0, False: 0]
  ------------------
 4840|      0|    case MCK_QQQQPR: return true;
  ------------------
  |  Branch (4840:5): [True: 0, False: 0]
  ------------------
 4841|      0|    }
 4842|       |
 4843|      0|  case MCK_Reg45:
  ------------------
  |  Branch (4843:3): [True: 0, False: 178k]
  ------------------
 4844|      0|    switch (B) {
 4845|      0|    default: return false;
  ------------------
  |  Branch (4845:5): [True: 0, False: 0]
  ------------------
 4846|      0|    case MCK_Reg54: return true;
  ------------------
  |  Branch (4846:5): [True: 0, False: 0]
  ------------------
 4847|      0|    case MCK_Reg46: return true;
  ------------------
  |  Branch (4847:5): [True: 0, False: 0]
  ------------------
 4848|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (4848:5): [True: 0, False: 0]
  ------------------
 4849|      0|    case MCK_Reg47: return true;
  ------------------
  |  Branch (4849:5): [True: 0, False: 0]
  ------------------
 4850|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4850:5): [True: 0, False: 0]
  ------------------
 4851|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4851:5): [True: 0, False: 0]
  ------------------
 4852|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4852:5): [True: 0, False: 0]
  ------------------
 4853|      0|    case MCK_QQPR: return true;
  ------------------
  |  Branch (4853:5): [True: 0, False: 0]
  ------------------
 4854|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4854:5): [True: 0, False: 0]
  ------------------
 4855|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4855:5): [True: 0, False: 0]
  ------------------
 4856|      0|    }
 4857|       |
 4858|  47.4k|  case MCK_Reg0:
  ------------------
  |  Branch (4858:3): [True: 47.4k, False: 131k]
  ------------------
 4859|  47.4k|    switch (B) {
 4860|  7.36k|    default: return false;
  ------------------
  |  Branch (4860:5): [True: 7.36k, False: 40.0k]
  ------------------
 4861|     65|    case MCK_tcGPR: return true;
  ------------------
  |  Branch (4861:5): [True: 65, False: 47.3k]
  ------------------
 4862|  10.0k|    case MCK_tGPR: return true;
  ------------------
  |  Branch (4862:5): [True: 10.0k, False: 37.3k]
  ------------------
 4863|  12.0k|    case MCK_rGPR: return true;
  ------------------
  |  Branch (4863:5): [True: 12.0k, False: 35.4k]
  ------------------
 4864|  9.55k|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (4864:5): [True: 9.55k, False: 37.8k]
  ------------------
 4865|  8.41k|    case MCK_GPR: return true;
  ------------------
  |  Branch (4865:5): [True: 8.41k, False: 39.0k]
  ------------------
 4866|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (4866:5): [True: 0, False: 47.4k]
  ------------------
 4867|  47.4k|    }
 4868|       |
 4869|    519|  case MCK_QPR_8:
  ------------------
  |  Branch (4869:3): [True: 519, False: 178k]
  ------------------
 4870|    519|    switch (B) {
 4871|    329|    default: return false;
  ------------------
  |  Branch (4871:5): [True: 329, False: 190]
  ------------------
 4872|      0|    case MCK_Reg25: return true;
  ------------------
  |  Branch (4872:5): [True: 0, False: 519]
  ------------------
 4873|      0|    case MCK_Reg26: return true;
  ------------------
  |  Branch (4873:5): [True: 0, False: 519]
  ------------------
 4874|      0|    case MCK_QPR_VFP2: return true;
  ------------------
  |  Branch (4874:5): [True: 0, False: 519]
  ------------------
 4875|      0|    case MCK_Reg23: return true;
  ------------------
  |  Branch (4875:5): [True: 0, False: 519]
  ------------------
 4876|      0|    case MCK_Reg24: return true;
  ------------------
  |  Branch (4876:5): [True: 0, False: 519]
  ------------------
 4877|    190|    case MCK_QPR: return true;
  ------------------
  |  Branch (4877:5): [True: 190, False: 329]
  ------------------
 4878|      0|    case MCK_DPair: return true;
  ------------------
  |  Branch (4878:5): [True: 0, False: 519]
  ------------------
 4879|    519|    }
 4880|       |
 4881|      0|  case MCK_Reg62:
  ------------------
  |  Branch (4881:3): [True: 0, False: 178k]
  ------------------
 4882|      0|    switch (B) {
 4883|      0|    default: return false;
  ------------------
  |  Branch (4883:5): [True: 0, False: 0]
  ------------------
 4884|      0|    case MCK_Reg63: return true;
  ------------------
  |  Branch (4884:5): [True: 0, False: 0]
  ------------------
 4885|      0|    case MCK_Reg64: return true;
  ------------------
  |  Branch (4885:5): [True: 0, False: 0]
  ------------------
 4886|      0|    case MCK_Reg65: return true;
  ------------------
  |  Branch (4886:5): [True: 0, False: 0]
  ------------------
 4887|      0|    case MCK_QQQQPR: return true;
  ------------------
  |  Branch (4887:5): [True: 0, False: 0]
  ------------------
 4888|      0|    }
 4889|       |
 4890|      0|  case MCK_Reg56:
  ------------------
  |  Branch (4890:3): [True: 0, False: 178k]
  ------------------
 4891|      0|    switch (B) {
 4892|      0|    default: return false;
  ------------------
  |  Branch (4892:5): [True: 0, False: 0]
  ------------------
 4893|      0|    case MCK_Reg57: return true;
  ------------------
  |  Branch (4893:5): [True: 0, False: 0]
  ------------------
 4894|      0|    case MCK_Reg54: return true;
  ------------------
  |  Branch (4894:5): [True: 0, False: 0]
  ------------------
 4895|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (4895:5): [True: 0, False: 0]
  ------------------
 4896|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4896:5): [True: 0, False: 0]
  ------------------
 4897|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4897:5): [True: 0, False: 0]
  ------------------
 4898|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4898:5): [True: 0, False: 0]
  ------------------
 4899|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4899:5): [True: 0, False: 0]
  ------------------
 4900|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4900:5): [True: 0, False: 0]
  ------------------
 4901|      0|    }
 4902|       |
 4903|      0|  case MCK_tcGPR:
  ------------------
  |  Branch (4903:3): [True: 0, False: 178k]
  ------------------
 4904|      0|    switch (B) {
 4905|      0|    default: return false;
  ------------------
  |  Branch (4905:5): [True: 0, False: 0]
  ------------------
 4906|      0|    case MCK_rGPR: return true;
  ------------------
  |  Branch (4906:5): [True: 0, False: 0]
  ------------------
 4907|      0|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (4907:5): [True: 0, False: 0]
  ------------------
 4908|      0|    case MCK_GPR: return true;
  ------------------
  |  Branch (4908:5): [True: 0, False: 0]
  ------------------
 4909|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (4909:5): [True: 0, False: 0]
  ------------------
 4910|      0|    }
 4911|       |
 4912|      0|  case MCK_Reg102:
  ------------------
  |  Branch (4912:3): [True: 0, False: 178k]
  ------------------
 4913|      0|    switch (B) {
 4914|      0|    default: return false;
  ------------------
  |  Branch (4914:5): [True: 0, False: 0]
  ------------------
 4915|      0|    case MCK_Reg103: return true;
  ------------------
  |  Branch (4915:5): [True: 0, False: 0]
  ------------------
 4916|      0|    case MCK_Reg104: return true;
  ------------------
  |  Branch (4916:5): [True: 0, False: 0]
  ------------------
 4917|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4917:5): [True: 0, False: 0]
  ------------------
 4918|      0|    case MCK_Reg105: return true;
  ------------------
  |  Branch (4918:5): [True: 0, False: 0]
  ------------------
 4919|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4919:5): [True: 0, False: 0]
  ------------------
 4920|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4920:5): [True: 0, False: 0]
  ------------------
 4921|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4921:5): [True: 0, False: 0]
  ------------------
 4922|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4922:5): [True: 0, False: 0]
  ------------------
 4923|      0|    }
 4924|       |
 4925|      0|  case MCK_Reg93:
  ------------------
  |  Branch (4925:3): [True: 0, False: 178k]
  ------------------
 4926|      0|    switch (B) {
 4927|      0|    default: return false;
  ------------------
  |  Branch (4927:5): [True: 0, False: 0]
  ------------------
 4928|      0|    case MCK_Reg94: return true;
  ------------------
  |  Branch (4928:5): [True: 0, False: 0]
  ------------------
 4929|      0|    case MCK_Reg95: return true;
  ------------------
  |  Branch (4929:5): [True: 0, False: 0]
  ------------------
 4930|      0|    case MCK_Reg96: return true;
  ------------------
  |  Branch (4930:5): [True: 0, False: 0]
  ------------------
 4931|      0|    case MCK_Reg97: return true;
  ------------------
  |  Branch (4931:5): [True: 0, False: 0]
  ------------------
 4932|      0|    case MCK_DTripleSpc: return true;
  ------------------
  |  Branch (4932:5): [True: 0, False: 0]
  ------------------
 4933|      0|    }
 4934|       |
 4935|      0|  case MCK_Reg75:
  ------------------
  |  Branch (4935:3): [True: 0, False: 178k]
  ------------------
 4936|      0|    switch (B) {
 4937|      0|    default: return false;
  ------------------
  |  Branch (4937:5): [True: 0, False: 0]
  ------------------
 4938|      0|    case MCK_Reg76: return true;
  ------------------
  |  Branch (4938:5): [True: 0, False: 0]
  ------------------
 4939|      0|    case MCK_Reg77: return true;
  ------------------
  |  Branch (4939:5): [True: 0, False: 0]
  ------------------
 4940|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (4940:5): [True: 0, False: 0]
  ------------------
 4941|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (4941:5): [True: 0, False: 0]
  ------------------
 4942|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (4942:5): [True: 0, False: 0]
  ------------------
 4943|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (4943:5): [True: 0, False: 0]
  ------------------
 4944|      0|    }
 4945|       |
 4946|      0|  case MCK_Reg69:
  ------------------
  |  Branch (4946:3): [True: 0, False: 178k]
  ------------------
 4947|      0|    return B == MCK_GPRPair;
 4948|       |
 4949|      0|  case MCK_Reg63:
  ------------------
  |  Branch (4949:3): [True: 0, False: 178k]
  ------------------
 4950|      0|    switch (B) {
 4951|      0|    default: return false;
  ------------------
  |  Branch (4951:5): [True: 0, False: 0]
  ------------------
 4952|      0|    case MCK_Reg64: return true;
  ------------------
  |  Branch (4952:5): [True: 0, False: 0]
  ------------------
 4953|      0|    case MCK_Reg65: return true;
  ------------------
  |  Branch (4953:5): [True: 0, False: 0]
  ------------------
 4954|      0|    case MCK_QQQQPR: return true;
  ------------------
  |  Branch (4954:5): [True: 0, False: 0]
  ------------------
 4955|      0|    }
 4956|       |
 4957|      0|  case MCK_Reg57:
  ------------------
  |  Branch (4957:3): [True: 0, False: 178k]
  ------------------
 4958|      0|    switch (B) {
 4959|      0|    default: return false;
  ------------------
  |  Branch (4959:5): [True: 0, False: 0]
  ------------------
 4960|      0|    case MCK_Reg54: return true;
  ------------------
  |  Branch (4960:5): [True: 0, False: 0]
  ------------------
 4961|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (4961:5): [True: 0, False: 0]
  ------------------
 4962|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (4962:5): [True: 0, False: 0]
  ------------------
 4963|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4963:5): [True: 0, False: 0]
  ------------------
 4964|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4964:5): [True: 0, False: 0]
  ------------------
 4965|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4965:5): [True: 0, False: 0]
  ------------------
 4966|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4966:5): [True: 0, False: 0]
  ------------------
 4967|      0|    }
 4968|       |
 4969|      0|  case MCK_Reg39:
  ------------------
  |  Branch (4969:3): [True: 0, False: 178k]
  ------------------
 4970|      0|    switch (B) {
 4971|      0|    default: return false;
  ------------------
  |  Branch (4971:5): [True: 0, False: 0]
  ------------------
 4972|      0|    case MCK_Reg40: return true;
  ------------------
  |  Branch (4972:5): [True: 0, False: 0]
  ------------------
 4973|      0|    case MCK_Reg41: return true;
  ------------------
  |  Branch (4973:5): [True: 0, False: 0]
  ------------------
 4974|      0|    case MCK_Reg42: return true;
  ------------------
  |  Branch (4974:5): [True: 0, False: 0]
  ------------------
 4975|      0|    case MCK_DPairSpc: return true;
  ------------------
  |  Branch (4975:5): [True: 0, False: 0]
  ------------------
 4976|      0|    }
 4977|       |
 4978|  15.5k|  case MCK_Reg9:
  ------------------
  |  Branch (4978:3): [True: 15.5k, False: 163k]
  ------------------
 4979|  15.5k|    switch (B) {
 4980|  7.92k|    default: return false;
  ------------------
  |  Branch (4980:5): [True: 7.92k, False: 7.59k]
  ------------------
 4981|      0|    case MCK_Reg7: return true;
  ------------------
  |  Branch (4981:5): [True: 0, False: 15.5k]
  ------------------
 4982|      0|    case MCK_hGPR: return true;
  ------------------
  |  Branch (4982:5): [True: 0, False: 15.5k]
  ------------------
 4983|  2.88k|    case MCK_rGPR: return true;
  ------------------
  |  Branch (4983:5): [True: 2.88k, False: 12.6k]
  ------------------
 4984|  1.82k|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (4984:5): [True: 1.82k, False: 13.6k]
  ------------------
 4985|  2.88k|    case MCK_GPR: return true;
  ------------------
  |  Branch (4985:5): [True: 2.88k, False: 12.6k]
  ------------------
 4986|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (4986:5): [True: 0, False: 15.5k]
  ------------------
 4987|  15.5k|    }
 4988|       |
 4989|      0|  case MCK_Reg103:
  ------------------
  |  Branch (4989:3): [True: 0, False: 178k]
  ------------------
 4990|      0|    switch (B) {
 4991|      0|    default: return false;
  ------------------
  |  Branch (4991:5): [True: 0, False: 0]
  ------------------
 4992|      0|    case MCK_Reg104: return true;
  ------------------
  |  Branch (4992:5): [True: 0, False: 0]
  ------------------
 4993|      0|    case MCK_Reg105: return true;
  ------------------
  |  Branch (4993:5): [True: 0, False: 0]
  ------------------
 4994|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (4994:5): [True: 0, False: 0]
  ------------------
 4995|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (4995:5): [True: 0, False: 0]
  ------------------
 4996|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (4996:5): [True: 0, False: 0]
  ------------------
 4997|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (4997:5): [True: 0, False: 0]
  ------------------
 4998|      0|    }
 4999|       |
 5000|      0|  case MCK_Reg89:
  ------------------
  |  Branch (5000:3): [True: 0, False: 178k]
  ------------------
 5001|      0|    switch (B) {
 5002|      0|    default: return false;
  ------------------
  |  Branch (5002:5): [True: 0, False: 0]
  ------------------
 5003|      0|    case MCK_Reg90: return true;
  ------------------
  |  Branch (5003:5): [True: 0, False: 0]
  ------------------
 5004|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (5004:5): [True: 0, False: 0]
  ------------------
 5005|      0|    case MCK_Reg91: return true;
  ------------------
  |  Branch (5005:5): [True: 0, False: 0]
  ------------------
 5006|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (5006:5): [True: 0, False: 0]
  ------------------
 5007|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5007:5): [True: 0, False: 0]
  ------------------
 5008|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5008:5): [True: 0, False: 0]
  ------------------
 5009|      0|    }
 5010|       |
 5011|      0|  case MCK_Reg84:
  ------------------
  |  Branch (5011:3): [True: 0, False: 178k]
  ------------------
 5012|      0|    switch (B) {
 5013|      0|    default: return false;
  ------------------
  |  Branch (5013:5): [True: 0, False: 0]
  ------------------
 5014|      0|    case MCK_Reg85: return true;
  ------------------
  |  Branch (5014:5): [True: 0, False: 0]
  ------------------
 5015|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (5015:5): [True: 0, False: 0]
  ------------------
 5016|      0|    case MCK_Reg86: return true;
  ------------------
  |  Branch (5016:5): [True: 0, False: 0]
  ------------------
 5017|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (5017:5): [True: 0, False: 0]
  ------------------
 5018|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5018:5): [True: 0, False: 0]
  ------------------
 5019|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5019:5): [True: 0, False: 0]
  ------------------
 5020|      0|    }
 5021|       |
 5022|      0|  case MCK_Reg76:
  ------------------
  |  Branch (5022:3): [True: 0, False: 178k]
  ------------------
 5023|      0|    switch (B) {
 5024|      0|    default: return false;
  ------------------
  |  Branch (5024:5): [True: 0, False: 0]
  ------------------
 5025|      0|    case MCK_Reg77: return true;
  ------------------
  |  Branch (5025:5): [True: 0, False: 0]
  ------------------
 5026|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (5026:5): [True: 0, False: 0]
  ------------------
 5027|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (5027:5): [True: 0, False: 0]
  ------------------
 5028|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5028:5): [True: 0, False: 0]
  ------------------
 5029|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5029:5): [True: 0, False: 0]
  ------------------
 5030|      0|    }
 5031|       |
 5032|      0|  case MCK_Reg64:
  ------------------
  |  Branch (5032:3): [True: 0, False: 178k]
  ------------------
 5033|      0|    switch (B) {
 5034|      0|    default: return false;
  ------------------
  |  Branch (5034:5): [True: 0, False: 0]
  ------------------
 5035|      0|    case MCK_Reg65: return true;
  ------------------
  |  Branch (5035:5): [True: 0, False: 0]
  ------------------
 5036|      0|    case MCK_QQQQPR: return true;
  ------------------
  |  Branch (5036:5): [True: 0, False: 0]
  ------------------
 5037|      0|    }
 5038|       |
 5039|      0|  case MCK_Reg54:
  ------------------
  |  Branch (5039:3): [True: 0, False: 178k]
  ------------------
 5040|      0|    switch (B) {
 5041|      0|    default: return false;
  ------------------
  |  Branch (5041:5): [True: 0, False: 0]
  ------------------
 5042|      0|    case MCK_Reg55: return true;
  ------------------
  |  Branch (5042:5): [True: 0, False: 0]
  ------------------
 5043|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (5043:5): [True: 0, False: 0]
  ------------------
 5044|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (5044:5): [True: 0, False: 0]
  ------------------
 5045|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (5045:5): [True: 0, False: 0]
  ------------------
 5046|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5046:5): [True: 0, False: 0]
  ------------------
 5047|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5047:5): [True: 0, False: 0]
  ------------------
 5048|      0|    }
 5049|       |
 5050|      0|  case MCK_Reg46:
  ------------------
  |  Branch (5050:3): [True: 0, False: 178k]
  ------------------
 5051|      0|    switch (B) {
 5052|      0|    default: return false;
  ------------------
  |  Branch (5052:5): [True: 0, False: 0]
  ------------------
 5053|      0|    case MCK_Reg47: return true;
  ------------------
  |  Branch (5053:5): [True: 0, False: 0]
  ------------------
 5054|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (5054:5): [True: 0, False: 0]
  ------------------
 5055|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (5055:5): [True: 0, False: 0]
  ------------------
 5056|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (5056:5): [True: 0, False: 0]
  ------------------
 5057|      0|    case MCK_QQPR: return true;
  ------------------
  |  Branch (5057:5): [True: 0, False: 0]
  ------------------
 5058|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5058:5): [True: 0, False: 0]
  ------------------
 5059|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5059:5): [True: 0, False: 0]
  ------------------
 5060|      0|    }
 5061|       |
 5062|      0|  case MCK_Reg25:
  ------------------
  |  Branch (5062:3): [True: 0, False: 178k]
  ------------------
 5063|      0|    switch (B) {
 5064|      0|    default: return false;
  ------------------
  |  Branch (5064:5): [True: 0, False: 0]
  ------------------
 5065|      0|    case MCK_Reg26: return true;
  ------------------
  |  Branch (5065:5): [True: 0, False: 0]
  ------------------
 5066|      0|    case MCK_Reg23: return true;
  ------------------
  |  Branch (5066:5): [True: 0, False: 0]
  ------------------
 5067|      0|    case MCK_Reg24: return true;
  ------------------
  |  Branch (5067:5): [True: 0, False: 0]
  ------------------
 5068|      0|    case MCK_DPair: return true;
  ------------------
  |  Branch (5068:5): [True: 0, False: 0]
  ------------------
 5069|      0|    }
 5070|       |
 5071|      0|  case MCK_Reg7:
  ------------------
  |  Branch (5071:3): [True: 0, False: 178k]
  ------------------
 5072|      0|    switch (B) {
 5073|      0|    default: return false;
  ------------------
  |  Branch (5073:5): [True: 0, False: 0]
  ------------------
 5074|      0|    case MCK_hGPR: return true;
  ------------------
  |  Branch (5074:5): [True: 0, False: 0]
  ------------------
 5075|      0|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (5075:5): [True: 0, False: 0]
  ------------------
 5076|      0|    case MCK_GPR: return true;
  ------------------
  |  Branch (5076:5): [True: 0, False: 0]
  ------------------
 5077|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (5077:5): [True: 0, False: 0]
  ------------------
 5078|      0|    }
 5079|       |
 5080|      0|  case MCK_Reg104:
  ------------------
  |  Branch (5080:3): [True: 0, False: 178k]
  ------------------
 5081|      0|    switch (B) {
 5082|      0|    default: return false;
  ------------------
  |  Branch (5082:5): [True: 0, False: 0]
  ------------------
 5083|      0|    case MCK_Reg105: return true;
  ------------------
  |  Branch (5083:5): [True: 0, False: 0]
  ------------------
 5084|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5084:5): [True: 0, False: 0]
  ------------------
 5085|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5085:5): [True: 0, False: 0]
  ------------------
 5086|      0|    }
 5087|       |
 5088|      0|  case MCK_Reg94:
  ------------------
  |  Branch (5088:3): [True: 0, False: 178k]
  ------------------
 5089|      0|    switch (B) {
 5090|      0|    default: return false;
  ------------------
  |  Branch (5090:5): [True: 0, False: 0]
  ------------------
 5091|      0|    case MCK_Reg95: return true;
  ------------------
  |  Branch (5091:5): [True: 0, False: 0]
  ------------------
 5092|      0|    case MCK_Reg96: return true;
  ------------------
  |  Branch (5092:5): [True: 0, False: 0]
  ------------------
 5093|      0|    case MCK_Reg97: return true;
  ------------------
  |  Branch (5093:5): [True: 0, False: 0]
  ------------------
 5094|      0|    case MCK_DTripleSpc: return true;
  ------------------
  |  Branch (5094:5): [True: 0, False: 0]
  ------------------
 5095|      0|    }
 5096|       |
 5097|      0|  case MCK_Reg90:
  ------------------
  |  Branch (5097:3): [True: 0, False: 178k]
  ------------------
 5098|      0|    switch (B) {
 5099|      0|    default: return false;
  ------------------
  |  Branch (5099:5): [True: 0, False: 0]
  ------------------
 5100|      0|    case MCK_Reg91: return true;
  ------------------
  |  Branch (5100:5): [True: 0, False: 0]
  ------------------
 5101|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5101:5): [True: 0, False: 0]
  ------------------
 5102|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5102:5): [True: 0, False: 0]
  ------------------
 5103|      0|    }
 5104|       |
 5105|      0|  case MCK_Reg85:
  ------------------
  |  Branch (5105:3): [True: 0, False: 178k]
  ------------------
 5106|      0|    switch (B) {
 5107|      0|    default: return false;
  ------------------
  |  Branch (5107:5): [True: 0, False: 0]
  ------------------
 5108|      0|    case MCK_Reg86: return true;
  ------------------
  |  Branch (5108:5): [True: 0, False: 0]
  ------------------
 5109|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (5109:5): [True: 0, False: 0]
  ------------------
 5110|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5110:5): [True: 0, False: 0]
  ------------------
 5111|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5111:5): [True: 0, False: 0]
  ------------------
 5112|      0|    }
 5113|       |
 5114|      0|  case MCK_Reg77:
  ------------------
  |  Branch (5114:3): [True: 0, False: 178k]
  ------------------
 5115|      0|    switch (B) {
 5116|      0|    default: return false;
  ------------------
  |  Branch (5116:5): [True: 0, False: 0]
  ------------------
 5117|      0|    case MCK_Reg78: return true;
  ------------------
  |  Branch (5117:5): [True: 0, False: 0]
  ------------------
 5118|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (5118:5): [True: 0, False: 0]
  ------------------
 5119|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5119:5): [True: 0, False: 0]
  ------------------
 5120|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5120:5): [True: 0, False: 0]
  ------------------
 5121|      0|    }
 5122|       |
 5123|      0|  case MCK_Reg65:
  ------------------
  |  Branch (5123:3): [True: 0, False: 178k]
  ------------------
 5124|      0|    return B == MCK_QQQQPR;
 5125|       |
 5126|      0|  case MCK_Reg55:
  ------------------
  |  Branch (5126:3): [True: 0, False: 178k]
  ------------------
 5127|      0|    switch (B) {
 5128|      0|    default: return false;
  ------------------
  |  Branch (5128:5): [True: 0, False: 0]
  ------------------
 5129|      0|    case MCK_Reg52: return true;
  ------------------
  |  Branch (5129:5): [True: 0, False: 0]
  ------------------
 5130|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (5130:5): [True: 0, False: 0]
  ------------------
 5131|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (5131:5): [True: 0, False: 0]
  ------------------
 5132|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5132:5): [True: 0, False: 0]
  ------------------
 5133|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5133:5): [True: 0, False: 0]
  ------------------
 5134|      0|    }
 5135|       |
 5136|      0|  case MCK_Reg47:
  ------------------
  |  Branch (5136:3): [True: 0, False: 178k]
  ------------------
 5137|      0|    switch (B) {
 5138|      0|    default: return false;
  ------------------
  |  Branch (5138:5): [True: 0, False: 0]
  ------------------
 5139|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (5139:5): [True: 0, False: 0]
  ------------------
 5140|      0|    case MCK_QQPR: return true;
  ------------------
  |  Branch (5140:5): [True: 0, False: 0]
  ------------------
 5141|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5141:5): [True: 0, False: 0]
  ------------------
 5142|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5142:5): [True: 0, False: 0]
  ------------------
 5143|      0|    }
 5144|       |
 5145|      0|  case MCK_Reg40:
  ------------------
  |  Branch (5145:3): [True: 0, False: 178k]
  ------------------
 5146|      0|    switch (B) {
 5147|      0|    default: return false;
  ------------------
  |  Branch (5147:5): [True: 0, False: 0]
  ------------------
 5148|      0|    case MCK_Reg41: return true;
  ------------------
  |  Branch (5148:5): [True: 0, False: 0]
  ------------------
 5149|      0|    case MCK_Reg42: return true;
  ------------------
  |  Branch (5149:5): [True: 0, False: 0]
  ------------------
 5150|      0|    case MCK_DPairSpc: return true;
  ------------------
  |  Branch (5150:5): [True: 0, False: 0]
  ------------------
 5151|      0|    }
 5152|       |
 5153|      0|  case MCK_Reg26:
  ------------------
  |  Branch (5153:3): [True: 0, False: 178k]
  ------------------
 5154|      0|    switch (B) {
 5155|      0|    default: return false;
  ------------------
  |  Branch (5155:5): [True: 0, False: 0]
  ------------------
 5156|      0|    case MCK_Reg23: return true;
  ------------------
  |  Branch (5156:5): [True: 0, False: 0]
  ------------------
 5157|      0|    case MCK_Reg24: return true;
  ------------------
  |  Branch (5157:5): [True: 0, False: 0]
  ------------------
 5158|      0|    case MCK_DPair: return true;
  ------------------
  |  Branch (5158:5): [True: 0, False: 0]
  ------------------
 5159|      0|    }
 5160|       |
 5161|  3.89k|  case MCK_DPR_8:
  ------------------
  |  Branch (5161:3): [True: 3.89k, False: 174k]
  ------------------
 5162|  3.89k|    switch (B) {
 5163|  2.35k|    default: return false;
  ------------------
  |  Branch (5163:5): [True: 2.35k, False: 1.54k]
  ------------------
 5164|      0|    case MCK_DPR_VFP2: return true;
  ------------------
  |  Branch (5164:5): [True: 0, False: 3.89k]
  ------------------
 5165|  1.54k|    case MCK_DPR: return true;
  ------------------
  |  Branch (5165:5): [True: 1.54k, False: 2.35k]
  ------------------
 5166|  3.89k|    }
 5167|       |
 5168|    405|  case MCK_QPR_VFP2:
  ------------------
  |  Branch (5168:3): [True: 405, False: 178k]
  ------------------
 5169|    405|    switch (B) {
 5170|    341|    default: return false;
  ------------------
  |  Branch (5170:5): [True: 341, False: 64]
  ------------------
 5171|      0|    case MCK_Reg23: return true;
  ------------------
  |  Branch (5171:5): [True: 0, False: 405]
  ------------------
 5172|      0|    case MCK_Reg24: return true;
  ------------------
  |  Branch (5172:5): [True: 0, False: 405]
  ------------------
 5173|     64|    case MCK_QPR: return true;
  ------------------
  |  Branch (5173:5): [True: 64, False: 341]
  ------------------
 5174|      0|    case MCK_DPair: return true;
  ------------------
  |  Branch (5174:5): [True: 0, False: 405]
  ------------------
 5175|    405|    }
 5176|       |
 5177|      0|  case MCK_hGPR:
  ------------------
  |  Branch (5177:3): [True: 0, False: 178k]
  ------------------
 5178|      0|    return B == MCK_GPR;
 5179|       |
 5180|  57.2k|  case MCK_tGPR:
  ------------------
  |  Branch (5180:3): [True: 57.2k, False: 121k]
  ------------------
 5181|  57.2k|    switch (B) {
 5182|  9.18k|    default: return false;
  ------------------
  |  Branch (5182:5): [True: 9.18k, False: 48.0k]
  ------------------
 5183|  11.3k|    case MCK_rGPR: return true;
  ------------------
  |  Branch (5183:5): [True: 11.3k, False: 45.8k]
  ------------------
 5184|  21.1k|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (5184:5): [True: 21.1k, False: 36.1k]
  ------------------
 5185|  15.5k|    case MCK_GPR: return true;
  ------------------
  |  Branch (5185:5): [True: 15.5k, False: 41.6k]
  ------------------
 5186|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (5186:5): [True: 0, False: 57.2k]
  ------------------
 5187|  57.2k|    }
 5188|       |
 5189|      0|  case MCK_Reg95:
  ------------------
  |  Branch (5189:3): [True: 0, False: 178k]
  ------------------
 5190|      0|    switch (B) {
 5191|      0|    default: return false;
  ------------------
  |  Branch (5191:5): [True: 0, False: 0]
  ------------------
 5192|      0|    case MCK_Reg96: return true;
  ------------------
  |  Branch (5192:5): [True: 0, False: 0]
  ------------------
 5193|      0|    case MCK_Reg97: return true;
  ------------------
  |  Branch (5193:5): [True: 0, False: 0]
  ------------------
 5194|      0|    case MCK_DTripleSpc: return true;
  ------------------
  |  Branch (5194:5): [True: 0, False: 0]
  ------------------
 5195|      0|    }
 5196|       |
 5197|      0|  case MCK_Reg52:
  ------------------
  |  Branch (5197:3): [True: 0, False: 178k]
  ------------------
 5198|      0|    switch (B) {
 5199|      0|    default: return false;
  ------------------
  |  Branch (5199:5): [True: 0, False: 0]
  ------------------
 5200|      0|    case MCK_Reg53: return true;
  ------------------
  |  Branch (5200:5): [True: 0, False: 0]
  ------------------
 5201|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (5201:5): [True: 0, False: 0]
  ------------------
 5202|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5202:5): [True: 0, False: 0]
  ------------------
 5203|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5203:5): [True: 0, False: 0]
  ------------------
 5204|      0|    }
 5205|       |
 5206|      0|  case MCK_Reg105:
  ------------------
  |  Branch (5206:3): [True: 0, False: 178k]
  ------------------
 5207|      0|    return B == MCK_DQuad;
 5208|       |
 5209|      0|  case MCK_Reg96:
  ------------------
  |  Branch (5209:3): [True: 0, False: 178k]
  ------------------
 5210|      0|    switch (B) {
 5211|      0|    default: return false;
  ------------------
  |  Branch (5211:5): [True: 0, False: 0]
  ------------------
 5212|      0|    case MCK_Reg97: return true;
  ------------------
  |  Branch (5212:5): [True: 0, False: 0]
  ------------------
 5213|      0|    case MCK_DTripleSpc: return true;
  ------------------
  |  Branch (5213:5): [True: 0, False: 0]
  ------------------
 5214|      0|    }
 5215|       |
 5216|      0|  case MCK_Reg78:
  ------------------
  |  Branch (5216:3): [True: 0, False: 178k]
  ------------------
 5217|      0|    switch (B) {
 5218|      0|    default: return false;
  ------------------
  |  Branch (5218:5): [True: 0, False: 0]
  ------------------
 5219|      0|    case MCK_Reg79: return true;
  ------------------
  |  Branch (5219:5): [True: 0, False: 0]
  ------------------
 5220|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5220:5): [True: 0, False: 0]
  ------------------
 5221|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5221:5): [True: 0, False: 0]
  ------------------
 5222|      0|    }
 5223|       |
 5224|      0|  case MCK_Reg53:
  ------------------
  |  Branch (5224:3): [True: 0, False: 178k]
  ------------------
 5225|      0|    switch (B) {
 5226|      0|    default: return false;
  ------------------
  |  Branch (5226:5): [True: 0, False: 0]
  ------------------
 5227|      0|    case MCK_Reg50: return true;
  ------------------
  |  Branch (5227:5): [True: 0, False: 0]
  ------------------
 5228|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5228:5): [True: 0, False: 0]
  ------------------
 5229|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5229:5): [True: 0, False: 0]
  ------------------
 5230|      0|    }
 5231|       |
 5232|      0|  case MCK_Reg41:
  ------------------
  |  Branch (5232:3): [True: 0, False: 178k]
  ------------------
 5233|      0|    switch (B) {
 5234|      0|    default: return false;
  ------------------
  |  Branch (5234:5): [True: 0, False: 0]
  ------------------
 5235|      0|    case MCK_Reg42: return true;
  ------------------
  |  Branch (5235:5): [True: 0, False: 0]
  ------------------
 5236|      0|    case MCK_DPairSpc: return true;
  ------------------
  |  Branch (5236:5): [True: 0, False: 0]
  ------------------
 5237|      0|    }
 5238|       |
 5239|      0|  case MCK_rGPR:
  ------------------
  |  Branch (5239:3): [True: 0, False: 178k]
  ------------------
 5240|      0|    switch (B) {
 5241|      0|    default: return false;
  ------------------
  |  Branch (5241:5): [True: 0, False: 0]
  ------------------
 5242|      0|    case MCK_GPRnopc: return true;
  ------------------
  |  Branch (5242:5): [True: 0, False: 0]
  ------------------
 5243|      0|    case MCK_GPR: return true;
  ------------------
  |  Branch (5243:5): [True: 0, False: 0]
  ------------------
 5244|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (5244:5): [True: 0, False: 0]
  ------------------
 5245|      0|    }
 5246|       |
 5247|      0|  case MCK_Reg91:
  ------------------
  |  Branch (5247:3): [True: 0, False: 178k]
  ------------------
 5248|      0|    return B == MCK_DTriple;
 5249|       |
 5250|      0|  case MCK_Reg86:
  ------------------
  |  Branch (5250:3): [True: 0, False: 178k]
  ------------------
 5251|      0|    return B == MCK_DTriple;
 5252|       |
 5253|      0|  case MCK_Reg79:
  ------------------
  |  Branch (5253:3): [True: 0, False: 178k]
  ------------------
 5254|      0|    switch (B) {
 5255|      0|    default: return false;
  ------------------
  |  Branch (5255:5): [True: 0, False: 0]
  ------------------
 5256|      0|    case MCK_Reg80: return true;
  ------------------
  |  Branch (5256:5): [True: 0, False: 0]
  ------------------
 5257|      0|    case MCK_DTriple: return true;
  ------------------
  |  Branch (5257:5): [True: 0, False: 0]
  ------------------
 5258|      0|    }
 5259|       |
 5260|      0|  case MCK_Reg50:
  ------------------
  |  Branch (5260:3): [True: 0, False: 178k]
  ------------------
 5261|      0|    switch (B) {
 5262|      0|    default: return false;
  ------------------
  |  Branch (5262:5): [True: 0, False: 0]
  ------------------
 5263|      0|    case MCK_Reg51: return true;
  ------------------
  |  Branch (5263:5): [True: 0, False: 0]
  ------------------
 5264|      0|    case MCK_DQuad: return true;
  ------------------
  |  Branch (5264:5): [True: 0, False: 0]
  ------------------
 5265|      0|    }
 5266|       |
 5267|      0|  case MCK_Reg23:
  ------------------
  |  Branch (5267:3): [True: 0, False: 178k]
  ------------------
 5268|      0|    switch (B) {
 5269|      0|    default: return false;
  ------------------
  |  Branch (5269:5): [True: 0, False: 0]
  ------------------
 5270|      0|    case MCK_Reg24: return true;
  ------------------
  |  Branch (5270:5): [True: 0, False: 0]
  ------------------
 5271|      0|    case MCK_DPair: return true;
  ------------------
  |  Branch (5271:5): [True: 0, False: 0]
  ------------------
 5272|      0|    }
 5273|       |
 5274|      0|  case MCK_GPRnopc:
  ------------------
  |  Branch (5274:3): [True: 0, False: 178k]
  ------------------
 5275|      0|    switch (B) {
 5276|      0|    default: return false;
  ------------------
  |  Branch (5276:5): [True: 0, False: 0]
  ------------------
 5277|      0|    case MCK_GPR: return true;
  ------------------
  |  Branch (5277:5): [True: 0, False: 0]
  ------------------
 5278|      0|    case MCK_GPRwithAPSR: return true;
  ------------------
  |  Branch (5278:5): [True: 0, False: 0]
  ------------------
 5279|      0|    }
 5280|       |
 5281|      0|  case MCK_QQPR:
  ------------------
  |  Branch (5281:3): [True: 0, False: 178k]
  ------------------
 5282|      0|    return B == MCK_DQuad;
 5283|       |
 5284|      0|  case MCK_Reg97:
  ------------------
  |  Branch (5284:3): [True: 0, False: 178k]
  ------------------
 5285|      0|    return B == MCK_DTripleSpc;
 5286|       |
 5287|      0|  case MCK_Reg80:
  ------------------
  |  Branch (5287:3): [True: 0, False: 178k]
  ------------------
 5288|      0|    return B == MCK_DTriple;
 5289|       |
 5290|      0|  case MCK_Reg51:
  ------------------
  |  Branch (5290:3): [True: 0, False: 178k]
  ------------------
 5291|      0|    return B == MCK_DQuad;
 5292|       |
 5293|      0|  case MCK_Reg42:
  ------------------
  |  Branch (5293:3): [True: 0, False: 178k]
  ------------------
 5294|      0|    return B == MCK_DPairSpc;
 5295|       |
 5296|      0|  case MCK_Reg24:
  ------------------
  |  Branch (5296:3): [True: 0, False: 178k]
  ------------------
 5297|      0|    return B == MCK_DPair;
 5298|       |
 5299|    421|  case MCK_DPR_VFP2:
  ------------------
  |  Branch (5299:3): [True: 421, False: 178k]
  ------------------
 5300|    421|    return B == MCK_DPR;
 5301|       |
 5302|    364|  case MCK_QPR:
  ------------------
  |  Branch (5302:3): [True: 364, False: 178k]
  ------------------
 5303|    364|    return B == MCK_DPair;
 5304|       |
 5305|  1.26k|  case MCK_SPR_8:
  ------------------
  |  Branch (5305:3): [True: 1.26k, False: 177k]
  ------------------
 5306|  1.26k|    return B == MCK_SPR;
 5307|   178k|  }
 5308|   178k|}
ARMAsmParser.cpp:_ZL16matchTokenStringN7llvm_ks9StringRefE:
 4301|  33.9k|static MatchClassKind matchTokenString(StringRef Name) {
 4302|  33.9k|  switch (Name.size()) {
 4303|    454|  default: break;
  ------------------
  |  Branch (4303:3): [True: 454, False: 33.5k]
  ------------------
 4304|  2.09k|  case 1:	 // 6 strings to match.
  ------------------
  |  Branch (4304:3): [True: 2.09k, False: 31.8k]
  ------------------
 4305|  2.09k|    switch (Name[0]) {
 4306|  1.91k|    default: break;
  ------------------
  |  Branch (4306:5): [True: 1.91k, False: 184]
  ------------------
 4307|  1.91k|    case '!':	 // 1 string to match.
  ------------------
  |  Branch (4307:5): [True: 184, False: 1.91k]
  ------------------
 4308|    184|      return MCK__EXCLAIM_;	 // "!"
 4309|      0|    case '[':	 // 1 string to match.
  ------------------
  |  Branch (4309:5): [True: 0, False: 2.09k]
  ------------------
 4310|      0|      return MCK__91_;	 // "["
 4311|      0|    case ']':	 // 1 string to match.
  ------------------
  |  Branch (4311:5): [True: 0, False: 2.09k]
  ------------------
 4312|      0|      return MCK__93_;	 // "]"
 4313|      0|    case '^':	 // 1 string to match.
  ------------------
  |  Branch (4313:5): [True: 0, False: 2.09k]
  ------------------
 4314|      0|      return MCK__94_;	 // "^"
 4315|      0|    case '{':	 // 1 string to match.
  ------------------
  |  Branch (4315:5): [True: 0, False: 2.09k]
  ------------------
 4316|      0|      return MCK__123_;	 // "{"
 4317|      0|    case '}':	 // 1 string to match.
  ------------------
  |  Branch (4317:5): [True: 0, False: 2.09k]
  ------------------
 4318|      0|      return MCK__125_;	 // "}"
 4319|  2.09k|    }
 4320|  1.91k|    break;
 4321|  4.80k|  case 2:	 // 5 strings to match.
  ------------------
  |  Branch (4321:3): [True: 4.80k, False: 29.1k]
  ------------------
 4322|  4.80k|    switch (Name[0]) {
 4323|      0|    default: break;
  ------------------
  |  Branch (4323:5): [True: 0, False: 4.80k]
  ------------------
 4324|      0|    case '#':	 // 1 string to match.
  ------------------
  |  Branch (4324:5): [True: 0, False: 4.80k]
  ------------------
 4325|      0|      if (Name[1] != '0')
  ------------------
  |  Branch (4325:11): [True: 0, False: 0]
  ------------------
 4326|      0|        break;
 4327|      0|      return MCK__35_0;	 // "#0"
 4328|  4.80k|    case '.':	 // 4 strings to match.
  ------------------
  |  Branch (4328:5): [True: 4.80k, False: 0]
  ------------------
 4329|  4.80k|      switch (Name[1]) {
 4330|    237|      default: break;
  ------------------
  |  Branch (4330:7): [True: 237, False: 4.57k]
  ------------------
 4331|    473|      case '8':	 // 1 string to match.
  ------------------
  |  Branch (4331:7): [True: 473, False: 4.33k]
  ------------------
 4332|    473|        return MCK__DOT_8;	 // ".8"
 4333|    233|      case 'd':	 // 1 string to match.
  ------------------
  |  Branch (4333:7): [True: 233, False: 4.57k]
  ------------------
 4334|    233|        return MCK__DOT_d;	 // ".d"
 4335|  2.34k|      case 'f':	 // 1 string to match.
  ------------------
  |  Branch (4335:7): [True: 2.34k, False: 2.46k]
  ------------------
 4336|  2.34k|        return MCK__DOT_f;	 // ".f"
 4337|  1.52k|      case 'w':	 // 1 string to match.
  ------------------
  |  Branch (4337:7): [True: 1.52k, False: 3.28k]
  ------------------
 4338|  1.52k|        return MCK__DOT_w;	 // ".w"
 4339|  4.80k|      }
 4340|    237|      break;
 4341|  4.80k|    }
 4342|    237|    break;
 4343|  3.37k|  case 3:	 // 7 strings to match.
  ------------------
  |  Branch (4343:3): [True: 3.37k, False: 30.6k]
  ------------------
 4344|  3.37k|    if (Name[0] != '.')
  ------------------
  |  Branch (4344:9): [True: 0, False: 3.37k]
  ------------------
 4345|      0|      break;
 4346|  3.37k|    switch (Name[1]) {
 4347|    263|    default: break;
  ------------------
  |  Branch (4347:5): [True: 263, False: 3.10k]
  ------------------
 4348|    457|    case '1':	 // 1 string to match.
  ------------------
  |  Branch (4348:5): [True: 457, False: 2.91k]
  ------------------
 4349|    457|      if (Name[2] != '6')
  ------------------
  |  Branch (4349:11): [True: 117, False: 340]
  ------------------
 4350|    117|        break;
 4351|    340|      return MCK__DOT_16;	 // ".16"
 4352|    237|    case '3':	 // 1 string to match.
  ------------------
  |  Branch (4352:5): [True: 237, False: 3.13k]
  ------------------
 4353|    237|      if (Name[2] != '2')
  ------------------
  |  Branch (4353:11): [True: 126, False: 111]
  ------------------
 4354|    126|        break;
 4355|    111|      return MCK__DOT_32;	 // ".32"
 4356|    221|    case '6':	 // 1 string to match.
  ------------------
  |  Branch (4356:5): [True: 221, False: 3.15k]
  ------------------
 4357|    221|      if (Name[2] != '4')
  ------------------
  |  Branch (4357:11): [True: 116, False: 105]
  ------------------
 4358|    116|        break;
 4359|    105|      return MCK__DOT_64;	 // ".64"
 4360|    211|    case 'i':	 // 1 string to match.
  ------------------
  |  Branch (4360:5): [True: 211, False: 3.16k]
  ------------------
 4361|    211|      if (Name[2] != '8')
  ------------------
  |  Branch (4361:11): [True: 93, False: 118]
  ------------------
 4362|     93|        break;
 4363|    118|      return MCK__DOT_i8;	 // ".i8"
 4364|    301|    case 'p':	 // 1 string to match.
  ------------------
  |  Branch (4364:5): [True: 301, False: 3.07k]
  ------------------
 4365|    301|      if (Name[2] != '8')
  ------------------
  |  Branch (4365:11): [True: 166, False: 135]
  ------------------
 4366|    166|        break;
 4367|    135|      return MCK__DOT_p8;	 // ".p8"
 4368|    991|    case 's':	 // 1 string to match.
  ------------------
  |  Branch (4368:5): [True: 991, False: 2.38k]
  ------------------
 4369|    991|      if (Name[2] != '8')
  ------------------
  |  Branch (4369:11): [True: 118, False: 873]
  ------------------
 4370|    118|        break;
 4371|    873|      return MCK__DOT_s8;	 // ".s8"
 4372|    690|    case 'u':	 // 1 string to match.
  ------------------
  |  Branch (4372:5): [True: 690, False: 2.68k]
  ------------------
 4373|    690|      if (Name[2] != '8')
  ------------------
  |  Branch (4373:11): [True: 106, False: 584]
  ------------------
 4374|    106|        break;
 4375|    584|      return MCK__DOT_u8;	 // ".u8"
 4376|  3.37k|    }
 4377|  1.10k|    break;
 4378|  23.2k|  case 4:	 // 14 strings to match.
  ------------------
  |  Branch (4378:3): [True: 23.2k, False: 10.7k]
  ------------------
 4379|  23.2k|    if (Name[0] != '.')
  ------------------
  |  Branch (4379:9): [True: 0, False: 23.2k]
  ------------------
 4380|      0|      break;
 4381|  23.2k|    switch (Name[1]) {
 4382|    109|    default: break;
  ------------------
  |  Branch (4382:5): [True: 109, False: 23.1k]
  ------------------
 4383|  4.48k|    case 'f':	 // 3 strings to match.
  ------------------
  |  Branch (4383:5): [True: 4.48k, False: 18.7k]
  ------------------
 4384|  4.48k|      switch (Name[2]) {
 4385|    100|      default: break;
  ------------------
  |  Branch (4385:7): [True: 100, False: 4.38k]
  ------------------
 4386|    202|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (4386:7): [True: 202, False: 4.28k]
  ------------------
 4387|    202|        if (Name[3] != '6')
  ------------------
  |  Branch (4387:13): [True: 101, False: 101]
  ------------------
 4388|    101|          break;
 4389|    101|        return MCK__DOT_f16;	 // ".f16"
 4390|  3.28k|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (4390:7): [True: 3.28k, False: 1.20k]
  ------------------
 4391|  3.28k|        if (Name[3] != '2')
  ------------------
  |  Branch (4391:13): [True: 103, False: 3.18k]
  ------------------
 4392|    103|          break;
 4393|  3.18k|        return MCK__DOT_f32;	 // ".f32"
 4394|    901|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (4394:7): [True: 901, False: 3.58k]
  ------------------
 4395|    901|        if (Name[3] != '4')
  ------------------
  |  Branch (4395:13): [True: 126, False: 775]
  ------------------
 4396|    126|          break;
 4397|    775|        return MCK__DOT_f64;	 // ".f64"
 4398|  4.48k|      }
 4399|    430|      break;
 4400|  1.26k|    case 'i':	 // 3 strings to match.
  ------------------
  |  Branch (4400:5): [True: 1.26k, False: 21.9k]
  ------------------
 4401|  1.26k|      switch (Name[2]) {
 4402|     91|      default: break;
  ------------------
  |  Branch (4402:7): [True: 91, False: 1.17k]
  ------------------
 4403|    456|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (4403:7): [True: 456, False: 808]
  ------------------
 4404|    456|        if (Name[3] != '6')
  ------------------
  |  Branch (4404:13): [True: 76, False: 380]
  ------------------
 4405|     76|          break;
 4406|    380|        return MCK__DOT_i16;	 // ".i16"
 4407|    385|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (4407:7): [True: 385, False: 879]
  ------------------
 4408|    385|        if (Name[3] != '2')
  ------------------
  |  Branch (4408:13): [True: 97, False: 288]
  ------------------
 4409|     97|          break;
 4410|    288|        return MCK__DOT_i32;	 // ".i32"
 4411|    332|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (4411:7): [True: 332, False: 932]
  ------------------
 4412|    332|        if (Name[3] != '4')
  ------------------
  |  Branch (4412:13): [True: 187, False: 145]
  ------------------
 4413|    187|          break;
 4414|    145|        return MCK__DOT_i64;	 // ".i64"
 4415|  1.26k|      }
 4416|    451|      break;
 4417|    830|    case 'p':	 // 2 strings to match.
  ------------------
  |  Branch (4417:5): [True: 830, False: 22.4k]
  ------------------
 4418|    830|      switch (Name[2]) {
 4419|    443|      default: break;
  ------------------
  |  Branch (4419:7): [True: 443, False: 387]
  ------------------
 4420|    443|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (4420:7): [True: 193, False: 637]
  ------------------
 4421|    193|        if (Name[3] != '6')
  ------------------
  |  Branch (4421:13): [True: 91, False: 102]
  ------------------
 4422|     91|          break;
 4423|    102|        return MCK__DOT_p16;	 // ".p16"
 4424|    194|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (4424:7): [True: 194, False: 636]
  ------------------
 4425|    194|        if (Name[3] != '4')
  ------------------
  |  Branch (4425:13): [True: 71, False: 123]
  ------------------
 4426|     71|          break;
 4427|    123|        return MCK__DOT_p64;	 // ".p64"
 4428|    830|      }
 4429|    605|      break;
 4430|  13.8k|    case 's':	 // 3 strings to match.
  ------------------
  |  Branch (4430:5): [True: 13.8k, False: 9.36k]
  ------------------
 4431|  13.8k|      switch (Name[2]) {
 4432|    101|      default: break;
  ------------------
  |  Branch (4432:7): [True: 101, False: 13.7k]
  ------------------
 4433|  3.64k|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (4433:7): [True: 3.64k, False: 10.2k]
  ------------------
 4434|  3.64k|        if (Name[3] != '6')
  ------------------
  |  Branch (4434:13): [True: 94, False: 3.55k]
  ------------------
 4435|     94|          break;
 4436|  3.55k|        return MCK__DOT_s16;	 // ".s16"
 4437|  9.62k|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (4437:7): [True: 9.62k, False: 4.25k]
  ------------------
 4438|  9.62k|        if (Name[3] != '2')
  ------------------
  |  Branch (4438:13): [True: 73, False: 9.55k]
  ------------------
 4439|     73|          break;
 4440|  9.55k|        return MCK__DOT_s32;	 // ".s32"
 4441|    501|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (4441:7): [True: 501, False: 13.3k]
  ------------------
 4442|    501|        if (Name[3] != '4')
  ------------------
  |  Branch (4442:13): [True: 83, False: 418]
  ------------------
 4443|     83|          break;
 4444|    418|        return MCK__DOT_s64;	 // ".s64"
 4445|  13.8k|      }
 4446|    351|      break;
 4447|  2.67k|    case 'u':	 // 3 strings to match.
  ------------------
  |  Branch (4447:5): [True: 2.67k, False: 20.5k]
  ------------------
 4448|  2.67k|      switch (Name[2]) {
 4449|    160|      default: break;
  ------------------
  |  Branch (4449:7): [True: 160, False: 2.51k]
  ------------------
 4450|    662|      case '1':	 // 1 string to match.
  ------------------
  |  Branch (4450:7): [True: 662, False: 2.01k]
  ------------------
 4451|    662|        if (Name[3] != '6')
  ------------------
  |  Branch (4451:13): [True: 110, False: 552]
  ------------------
 4452|    110|          break;
 4453|    552|        return MCK__DOT_u16;	 // ".u16"
 4454|  1.09k|      case '3':	 // 1 string to match.
  ------------------
  |  Branch (4454:7): [True: 1.09k, False: 1.58k]
  ------------------
 4455|  1.09k|        if (Name[3] != '2')
  ------------------
  |  Branch (4455:13): [True: 109, False: 981]
  ------------------
 4456|    109|          break;
 4457|    981|        return MCK__DOT_u32;	 // ".u32"
 4458|    762|      case '6':	 // 1 string to match.
  ------------------
  |  Branch (4458:7): [True: 762, False: 1.91k]
  ------------------
 4459|    762|        if (Name[3] != '4')
  ------------------
  |  Branch (4459:13): [True: 76, False: 686]
  ------------------
 4460|     76|          break;
 4461|    686|        return MCK__DOT_u64;	 // ".u64"
 4462|  2.67k|      }
 4463|    455|      break;
 4464|  23.2k|    }
 4465|  2.40k|    break;
 4466|  33.9k|  }
 4467|  6.10k|  return InvalidMatchClass;
 4468|  33.9k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser15convertToMCInstEjRN7llvm_ks6MCInstEjRKNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS5_14default_deleteIS7_EEEEEE:
 3089|  30.0k|                const OperandVector &Operands) {
 3090|  30.0k|  assert(Kind < CVT_NUM_SIGNATURES && "Invalid signature!");
  ------------------
  |  Branch (3090:3): [True: 30.0k, False: 0]
  |  Branch (3090:3): [True: 30.0k, Folded]
  |  Branch (3090:3): [True: 30.0k, False: 0]
  ------------------
 3091|  30.0k|  const uint8_t *Converter = ConversionTable[Kind];
 3092|  30.0k|  Inst.setOpcode(Opcode);
 3093|   118k|  for (const uint8_t *p = Converter; *p; p+= 2) {
  ------------------
  |  Branch (3093:38): [True: 88.5k, False: 30.0k]
  ------------------
 3094|  88.5k|    switch (*p) {
 3095|      0|    default: llvm_unreachable("invalid conversion entry!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (3095:5): [True: 0, False: 88.5k]
  ------------------
 3096|      0|    case CVT_Reg:
  ------------------
  |  Branch (3096:5): [True: 0, False: 88.5k]
  ------------------
 3097|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addRegOperands(Inst, 1);
 3098|      0|      break;
 3099|  1.49k|    case CVT_Tied:
  ------------------
  |  Branch (3099:5): [True: 1.49k, False: 87.0k]
  ------------------
 3100|  1.49k|      Inst.addOperand(Inst.getOperand(*(p + 1)));
 3101|  1.49k|      break;
 3102|  27.9k|    case CVT_95_Reg:
  ------------------
  |  Branch (3102:5): [True: 27.9k, False: 60.5k]
  ------------------
 3103|  27.9k|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addRegOperands(Inst, 1);
 3104|  27.9k|      break;
 3105|  7.08k|    case CVT_95_addCCOutOperands:
  ------------------
  |  Branch (3105:5): [True: 7.08k, False: 81.5k]
  ------------------
 3106|  7.08k|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addCCOutOperands(Inst, 1);
 3107|  7.08k|      break;
 3108|  24.4k|    case CVT_95_addCondCodeOperands:
  ------------------
  |  Branch (3108:5): [True: 24.4k, False: 64.1k]
  ------------------
 3109|  24.4k|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addCondCodeOperands(Inst, 2);
 3110|  24.4k|      break;
 3111|     20|    case CVT_95_addRegShiftedRegOperands:
  ------------------
  |  Branch (3111:5): [True: 20, False: 88.5k]
  ------------------
 3112|     20|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addRegShiftedRegOperands(Inst, 3);
 3113|     20|      break;
 3114|  3.09k|    case CVT_95_addModImmOperands:
  ------------------
  |  Branch (3114:5): [True: 3.09k, False: 85.5k]
  ------------------
 3115|  3.09k|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addModImmOperands(Inst, 1);
 3116|  3.09k|      break;
 3117|    301|    case CVT_95_addRegShiftedImmOperands:
  ------------------
  |  Branch (3117:5): [True: 301, False: 88.2k]
  ------------------
 3118|    301|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addRegShiftedImmOperands(Inst, 2);
 3119|    301|      break;
 3120|  9.28k|    case CVT_95_addImmOperands:
  ------------------
  |  Branch (3120:5): [True: 9.28k, False: 79.3k]
  ------------------
 3121|  9.28k|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImmOperands(Inst, 1);
 3122|  9.28k|      break;
 3123|    350|    case CVT_95_addImm0_95_508s4Operands:
  ------------------
  |  Branch (3123:5): [True: 350, False: 88.2k]
  ------------------
 3124|    350|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImm0_508s4Operands(Inst, 1);
 3125|    350|      break;
 3126|     26|    case CVT_regSP:
  ------------------
  |  Branch (3126:5): [True: 26, False: 88.5k]
  ------------------
 3127|     26|      Inst.addOperand(MCOperand::createReg(ARM::SP));
 3128|     26|      break;
 3129|     20|    case CVT_95_addImm0_95_508s4NegOperands:
  ------------------
  |  Branch (3129:5): [True: 20, False: 88.5k]
  ------------------
 3130|     20|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImm0_508s4NegOperands(Inst, 1);
 3131|     20|      break;
 3132|     51|    case CVT_95_addImm0_95_4095NegOperands:
  ------------------
  |  Branch (3132:5): [True: 51, False: 88.5k]
  ------------------
 3133|     51|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImm0_4095NegOperands(Inst, 1);
 3134|     51|      break;
 3135|     28|    case CVT_95_addT2SOImmNegOperands:
  ------------------
  |  Branch (3135:5): [True: 28, False: 88.5k]
  ------------------
 3136|     28|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addT2SOImmNegOperands(Inst, 1);
 3137|     28|      break;
 3138|    348|    case CVT_95_addModImmNegOperands:
  ------------------
  |  Branch (3138:5): [True: 348, False: 88.2k]
  ------------------
 3139|    348|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addModImmNegOperands(Inst, 1);
 3140|    348|      break;
 3141|      8|    case CVT_95_addImm0_95_1020s4Operands:
  ------------------
  |  Branch (3141:5): [True: 8, False: 88.5k]
  ------------------
 3142|      8|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImm0_1020s4Operands(Inst, 1);
 3143|      8|      break;
 3144|     65|    case CVT_95_addUnsignedOffset_95_b8s2Operands:
  ------------------
  |  Branch (3144:5): [True: 65, False: 88.5k]
  ------------------
 3145|     65|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addUnsignedOffset_b8s2Operands(Inst, 1);
 3146|     65|      break;
 3147|  1.92k|    case CVT_95_addAdrLabelOperands:
  ------------------
  |  Branch (3147:5): [True: 1.92k, False: 86.6k]
  ------------------
 3148|  1.92k|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAdrLabelOperands(Inst, 1);
 3149|  1.92k|      break;
 3150|      6|    case CVT_95_addT2SOImmNotOperands:
  ------------------
  |  Branch (3150:5): [True: 6, False: 88.5k]
  ------------------
 3151|      6|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addT2SOImmNotOperands(Inst, 1);
 3152|      6|      break;
 3153|    164|    case CVT_95_addModImmNotOperands:
  ------------------
  |  Branch (3153:5): [True: 164, False: 88.4k]
  ------------------
 3154|    164|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addModImmNotOperands(Inst, 1);
 3155|    164|      break;
 3156|    139|    case CVT_95_addImmThumbSROperands:
  ------------------
  |  Branch (3156:5): [True: 139, False: 88.4k]
  ------------------
 3157|    139|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImmThumbSROperands(Inst, 1);
 3158|    139|      break;
 3159|  2.82k|    case CVT_cvtThumbBranches:
  ------------------
  |  Branch (3159:5): [True: 2.82k, False: 85.7k]
  ------------------
 3160|  2.82k|      cvtThumbBranches(Inst, Operands);
 3161|  2.82k|      break;
 3162|      3|    case CVT_95_addBitfieldOperands:
  ------------------
  |  Branch (3162:5): [True: 3, False: 88.5k]
  ------------------
 3163|      3|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addBitfieldOperands(Inst, 1);
 3164|      3|      break;
 3165|    613|    case CVT_imm_95_0:
  ------------------
  |  Branch (3165:5): [True: 613, False: 87.9k]
  ------------------
 3166|    613|      Inst.addOperand(MCOperand::createImm(0));
 3167|    613|      break;
 3168|    311|    case CVT_95_addCoprocNumOperands:
  ------------------
  |  Branch (3168:5): [True: 311, False: 88.2k]
  ------------------
 3169|    311|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addCoprocNumOperands(Inst, 1);
 3170|    311|      break;
 3171|    311|    case CVT_95_addCoprocRegOperands:
  ------------------
  |  Branch (3171:5): [True: 311, False: 88.2k]
  ------------------
 3172|    311|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addCoprocRegOperands(Inst, 1);
 3173|    311|      break;
 3174|     40|    case CVT_95_addProcIFlagsOperands:
  ------------------
  |  Branch (3174:5): [True: 40, False: 88.5k]
  ------------------
 3175|     40|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addProcIFlagsOperands(Inst, 1);
 3176|     40|      break;
 3177|    411|    case CVT_imm_95_15:
  ------------------
  |  Branch (3177:5): [True: 411, False: 88.1k]
  ------------------
 3178|    411|      Inst.addOperand(MCOperand::createImm(15));
 3179|    411|      break;
 3180|    754|    case CVT_95_addMemBarrierOptOperands:
  ------------------
  |  Branch (3180:5): [True: 754, False: 87.8k]
  ------------------
 3181|    754|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemBarrierOptOperands(Inst, 1);
 3182|    754|      break;
 3183|    110|    case CVT_95_addFPImmOperands:
  ------------------
  |  Branch (3183:5): [True: 110, False: 88.4k]
  ------------------
 3184|    110|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addFPImmOperands(Inst, 1);
 3185|    110|      break;
 3186|      0|    case CVT_95_addDPRRegListOperands:
  ------------------
  |  Branch (3186:5): [True: 0, False: 88.5k]
  ------------------
 3187|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addDPRRegListOperands(Inst, 1);
 3188|      0|      break;
 3189|     12|    case CVT_imm_95_1:
  ------------------
  |  Branch (3189:5): [True: 12, False: 88.5k]
  ------------------
 3190|     12|      Inst.addOperand(MCOperand::createImm(1));
 3191|     12|      break;
 3192|    264|    case CVT_95_addInstSyncBarrierOptOperands:
  ------------------
  |  Branch (3192:5): [True: 264, False: 88.3k]
  ------------------
 3193|    264|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addInstSyncBarrierOptOperands(Inst, 1);
 3194|    264|      break;
 3195|    431|    case CVT_95_addITCondCodeOperands:
  ------------------
  |  Branch (3195:5): [True: 431, False: 88.1k]
  ------------------
 3196|    431|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addITCondCodeOperands(Inst, 1);
 3197|    431|      break;
 3198|    431|    case CVT_95_addITMaskOperands:
  ------------------
  |  Branch (3198:5): [True: 431, False: 88.1k]
  ------------------
 3199|    431|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addITMaskOperands(Inst, 1);
 3200|    431|      break;
 3201|    697|    case CVT_95_addMemNoOffsetOperands:
  ------------------
  |  Branch (3201:5): [True: 697, False: 87.8k]
  ------------------
 3202|    697|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemNoOffsetOperands(Inst, 1);
 3203|    697|      break;
 3204|    539|    case CVT_95_addAddrMode5Operands:
  ------------------
  |  Branch (3204:5): [True: 539, False: 88.0k]
  ------------------
 3205|    539|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAddrMode5Operands(Inst, 2);
 3206|    539|      break;
 3207|      0|    case CVT_95_addCoprocOptionOperands:
  ------------------
  |  Branch (3207:5): [True: 0, False: 88.5k]
  ------------------
 3208|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addCoprocOptionOperands(Inst, 1);
 3209|      0|      break;
 3210|      0|    case CVT_95_addPostIdxImm8s4Operands:
  ------------------
  |  Branch (3210:5): [True: 0, False: 88.5k]
  ------------------
 3211|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addPostIdxImm8s4Operands(Inst, 1);
 3212|      0|      break;
 3213|      0|    case CVT_95_addRegListOperands:
  ------------------
  |  Branch (3213:5): [True: 0, False: 88.5k]
  ------------------
 3214|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addRegListOperands(Inst, 1);
 3215|      0|      break;
 3216|    517|    case CVT_95_addThumbMemPCOperands:
  ------------------
  |  Branch (3216:5): [True: 517, False: 88.0k]
  ------------------
 3217|    517|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addThumbMemPCOperands(Inst, 1);
 3218|    517|      break;
 3219|     22|    case CVT_95_addMemThumbRIs4Operands:
  ------------------
  |  Branch (3219:5): [True: 22, False: 88.5k]
  ------------------
 3220|     22|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemThumbRIs4Operands(Inst, 2);
 3221|     22|      break;
 3222|      7|    case CVT_95_addMemThumbRROperands:
  ------------------
  |  Branch (3222:5): [True: 7, False: 88.5k]
  ------------------
 3223|      7|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemThumbRROperands(Inst, 2);
 3224|      7|      break;
 3225|      0|    case CVT_95_addMemThumbSPIOperands:
  ------------------
  |  Branch (3225:5): [True: 0, False: 88.5k]
  ------------------
 3226|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemThumbSPIOperands(Inst, 2);
 3227|      0|      break;
 3228|    833|    case CVT_95_addMemImm12OffsetOperands:
  ------------------
  |  Branch (3228:5): [True: 833, False: 87.7k]
  ------------------
 3229|    833|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemImm12OffsetOperands(Inst, 2);
 3230|    833|      break;
 3231|      0|    case CVT_95_addMemNegImm8OffsetOperands:
  ------------------
  |  Branch (3231:5): [True: 0, False: 88.5k]
  ------------------
 3232|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemNegImm8OffsetOperands(Inst, 2);
 3233|      0|      break;
 3234|     16|    case CVT_95_addMemRegOffsetOperands:
  ------------------
  |  Branch (3234:5): [True: 16, False: 88.5k]
  ------------------
 3235|     16|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemRegOffsetOperands(Inst, 3);
 3236|     16|      break;
 3237|     57|    case CVT_95_addMemUImm12OffsetOperands:
  ------------------
  |  Branch (3237:5): [True: 57, False: 88.5k]
  ------------------
 3238|     57|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemUImm12OffsetOperands(Inst, 2);
 3239|     57|      break;
 3240|      8|    case CVT_95_addT2MemRegOffsetOperands:
  ------------------
  |  Branch (3240:5): [True: 8, False: 88.5k]
  ------------------
 3241|      8|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addT2MemRegOffsetOperands(Inst, 3);
 3242|      8|      break;
 3243|      0|    case CVT_95_addMemPCRelImm12Operands:
  ------------------
  |  Branch (3243:5): [True: 0, False: 88.5k]
  ------------------
 3244|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemPCRelImm12Operands(Inst, 1);
 3245|      0|      break;
 3246|      1|    case CVT_95_addMemImm8OffsetOperands:
  ------------------
  |  Branch (3246:5): [True: 1, False: 88.5k]
  ------------------
 3247|      1|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemImm8OffsetOperands(Inst, 2);
 3248|      1|      break;
 3249|    575|    case CVT_95_addAM2OffsetImmOperands:
  ------------------
  |  Branch (3249:5): [True: 575, False: 88.0k]
  ------------------
 3250|    575|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAM2OffsetImmOperands(Inst, 2);
 3251|    575|      break;
 3252|     38|    case CVT_95_addPostIdxRegShiftedOperands:
  ------------------
  |  Branch (3252:5): [True: 38, False: 88.5k]
  ------------------
 3253|     38|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addPostIdxRegShiftedOperands(Inst, 2);
 3254|     38|      break;
 3255|     30|    case CVT_95_addMemThumbRIs1Operands:
  ------------------
  |  Branch (3255:5): [True: 30, False: 88.5k]
  ------------------
 3256|     30|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemThumbRIs1Operands(Inst, 2);
 3257|     30|      break;
 3258|     20|    case CVT_95_addMemPosImm8OffsetOperands:
  ------------------
  |  Branch (3258:5): [True: 20, False: 88.5k]
  ------------------
 3259|     20|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemPosImm8OffsetOperands(Inst, 2);
 3260|     20|      break;
 3261|     14|    case CVT_95_addMemImm8s4OffsetOperands:
  ------------------
  |  Branch (3261:5): [True: 14, False: 88.5k]
  ------------------
 3262|     14|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemImm8s4OffsetOperands(Inst, 2);
 3263|     14|      break;
 3264|    962|    case CVT_95_addAddrMode3Operands:
  ------------------
  |  Branch (3264:5): [True: 962, False: 87.6k]
  ------------------
 3265|    962|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAddrMode3Operands(Inst, 3);
 3266|    962|      break;
 3267|     38|    case CVT_95_addAM3OffsetOperands:
  ------------------
  |  Branch (3267:5): [True: 38, False: 88.5k]
  ------------------
 3268|     38|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAM3OffsetOperands(Inst, 2);
 3269|     38|      break;
 3270|      0|    case CVT_95_addMemImm0_95_1020s4OffsetOperands:
  ------------------
  |  Branch (3270:5): [True: 0, False: 88.5k]
  ------------------
 3271|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemImm0_1020s4OffsetOperands(Inst, 2);
 3272|      0|      break;
 3273|      6|    case CVT_95_addMemThumbRIs2Operands:
  ------------------
  |  Branch (3273:5): [True: 6, False: 88.5k]
  ------------------
 3274|      6|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemThumbRIs2Operands(Inst, 2);
 3275|      6|      break;
 3276|      0|    case CVT_95_addPostIdxRegOperands:
  ------------------
  |  Branch (3276:5): [True: 0, False: 88.5k]
  ------------------
 3277|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addPostIdxRegOperands(Inst, 2);
 3278|      0|      break;
 3279|      0|    case CVT_95_addPostIdxImm8Operands:
  ------------------
  |  Branch (3279:5): [True: 0, False: 88.5k]
  ------------------
 3280|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addPostIdxImm8Operands(Inst, 1);
 3281|      0|      break;
 3282|     60|    case CVT_reg0:
  ------------------
  |  Branch (3282:5): [True: 60, False: 88.5k]
  ------------------
 3283|     60|      Inst.addOperand(MCOperand::createReg(0));
 3284|     60|      break;
 3285|     75|    case CVT_regCPSR:
  ------------------
  |  Branch (3285:5): [True: 75, False: 88.5k]
  ------------------
 3286|     75|      Inst.addOperand(MCOperand::createReg(ARM::CPSR));
 3287|     75|      break;
 3288|     36|    case CVT_imm_95_14:
  ------------------
  |  Branch (3288:5): [True: 36, False: 88.5k]
  ------------------
 3289|     36|      Inst.addOperand(MCOperand::createImm(14));
 3290|     36|      break;
 3291|      0|    case CVT_95_addBankedRegOperands:
  ------------------
  |  Branch (3291:5): [True: 0, False: 88.5k]
  ------------------
 3292|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addBankedRegOperands(Inst, 1);
 3293|      0|      break;
 3294|     83|    case CVT_95_addMSRMaskOperands:
  ------------------
  |  Branch (3294:5): [True: 83, False: 88.5k]
  ------------------
 3295|     83|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMSRMaskOperands(Inst, 1);
 3296|     83|      break;
 3297|     42|    case CVT_cvtThumbMultiply:
  ------------------
  |  Branch (3297:5): [True: 42, False: 88.5k]
  ------------------
 3298|     42|      cvtThumbMultiply(Inst, Operands);
 3299|     42|      break;
 3300|     60|    case CVT_regR8:
  ------------------
  |  Branch (3300:5): [True: 60, False: 88.5k]
  ------------------
 3301|     60|      Inst.addOperand(MCOperand::createReg(ARM::R8));
 3302|     60|      break;
 3303|     44|    case CVT_regR0:
  ------------------
  |  Branch (3303:5): [True: 44, False: 88.5k]
  ------------------
 3304|     44|      Inst.addOperand(MCOperand::createReg(ARM::R0));
 3305|     44|      break;
 3306|      0|    case CVT_95_addPKHASRImmOperands:
  ------------------
  |  Branch (3306:5): [True: 0, False: 88.5k]
  ------------------
 3307|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addPKHASRImmOperands(Inst, 1);
 3308|      0|      break;
 3309|      0|    case CVT_95_addImm1_95_32Operands:
  ------------------
  |  Branch (3309:5): [True: 0, False: 88.5k]
  ------------------
 3310|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImm1_32Operands(Inst, 1);
 3311|      0|      break;
 3312|    128|    case CVT_imm_95_4:
  ------------------
  |  Branch (3312:5): [True: 128, False: 88.4k]
  ------------------
 3313|    128|      Inst.addOperand(MCOperand::createImm(4));
 3314|    128|      break;
 3315|      0|    case CVT_imm_95_5:
  ------------------
  |  Branch (3315:5): [True: 0, False: 88.5k]
  ------------------
 3316|      0|      Inst.addOperand(MCOperand::createImm(5));
 3317|      0|      break;
 3318|      0|    case CVT_95_addShifterImmOperands:
  ------------------
  |  Branch (3318:5): [True: 0, False: 88.5k]
  ------------------
 3319|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addShifterImmOperands(Inst, 1);
 3320|      0|      break;
 3321|      0|    case CVT_95_addImm1_95_16Operands:
  ------------------
  |  Branch (3321:5): [True: 0, False: 88.5k]
  ------------------
 3322|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addImm1_16Operands(Inst, 1);
 3323|      0|      break;
 3324|      0|    case CVT_95_addRotImmOperands:
  ------------------
  |  Branch (3324:5): [True: 0, False: 88.5k]
  ------------------
 3325|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addRotImmOperands(Inst, 1);
 3326|      0|      break;
 3327|      0|    case CVT_95_addMemTBBOperands:
  ------------------
  |  Branch (3327:5): [True: 0, False: 88.5k]
  ------------------
 3328|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemTBBOperands(Inst, 2);
 3329|      0|      break;
 3330|      0|    case CVT_95_addMemTBHOperands:
  ------------------
  |  Branch (3330:5): [True: 0, False: 88.5k]
  ------------------
 3331|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addMemTBHOperands(Inst, 2);
 3332|      0|      break;
 3333|      3|    case CVT_95_addNEONi16splatNotOperands:
  ------------------
  |  Branch (3333:5): [True: 3, False: 88.5k]
  ------------------
 3334|      3|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi16splatNotOperands(Inst, 1);
 3335|      3|      break;
 3336|     13|    case CVT_95_addNEONi32splatNotOperands:
  ------------------
  |  Branch (3336:5): [True: 13, False: 88.5k]
  ------------------
 3337|     13|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi32splatNotOperands(Inst, 1);
 3338|     13|      break;
 3339|     27|    case CVT_95_addNEONi16splatOperands:
  ------------------
  |  Branch (3339:5): [True: 27, False: 88.5k]
  ------------------
 3340|     27|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi16splatOperands(Inst, 1);
 3341|     27|      break;
 3342|      3|    case CVT_95_addNEONi32splatOperands:
  ------------------
  |  Branch (3342:5): [True: 3, False: 88.5k]
  ------------------
 3343|      3|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi32splatOperands(Inst, 1);
 3344|      3|      break;
 3345|      0|    case CVT_95_addFBits16Operands:
  ------------------
  |  Branch (3345:5): [True: 0, False: 88.5k]
  ------------------
 3346|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addFBits16Operands(Inst, 1);
 3347|      0|      break;
 3348|      0|    case CVT_95_addFBits32Operands:
  ------------------
  |  Branch (3348:5): [True: 0, False: 88.5k]
  ------------------
 3349|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addFBits32Operands(Inst, 1);
 3350|      0|      break;
 3351|      0|    case CVT_95_addVectorIndex16Operands:
  ------------------
  |  Branch (3351:5): [True: 0, False: 88.5k]
  ------------------
 3352|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addVectorIndex16Operands(Inst, 1);
 3353|      0|      break;
 3354|      0|    case CVT_95_addVectorIndex32Operands:
  ------------------
  |  Branch (3354:5): [True: 0, False: 88.5k]
  ------------------
 3355|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addVectorIndex32Operands(Inst, 1);
 3356|      0|      break;
 3357|      0|    case CVT_95_addVectorIndex8Operands:
  ------------------
  |  Branch (3357:5): [True: 0, False: 88.5k]
  ------------------
 3358|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addVectorIndex8Operands(Inst, 1);
 3359|      0|      break;
 3360|      0|    case CVT_95_addVecListOperands:
  ------------------
  |  Branch (3360:5): [True: 0, False: 88.5k]
  ------------------
 3361|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addVecListOperands(Inst, 1);
 3362|      0|      break;
 3363|      0|    case CVT_95_addDupAlignedMemory16Operands:
  ------------------
  |  Branch (3363:5): [True: 0, False: 88.5k]
  ------------------
 3364|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addDupAlignedMemory16Operands(Inst, 2);
 3365|      0|      break;
 3366|      0|    case CVT_95_addAlignedMemory64or128Operands:
  ------------------
  |  Branch (3366:5): [True: 0, False: 88.5k]
  ------------------
 3367|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAlignedMemory64or128Operands(Inst, 2);
 3368|      0|      break;
 3369|      0|    case CVT_95_addAlignedMemory64or128or256Operands:
  ------------------
  |  Branch (3369:5): [True: 0, False: 88.5k]
  ------------------
 3370|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAlignedMemory64or128or256Operands(Inst, 2);
 3371|      0|      break;
 3372|      0|    case CVT_95_addAlignedMemory64Operands:
  ------------------
  |  Branch (3372:5): [True: 0, False: 88.5k]
  ------------------
 3373|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAlignedMemory64Operands(Inst, 2);
 3374|      0|      break;
 3375|      0|    case CVT_95_addVecListIndexedOperands:
  ------------------
  |  Branch (3375:5): [True: 0, False: 88.5k]
  ------------------
 3376|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addVecListIndexedOperands(Inst, 2);
 3377|      0|      break;
 3378|      0|    case CVT_95_addAlignedMemory16Operands:
  ------------------
  |  Branch (3378:5): [True: 0, False: 88.5k]
  ------------------
 3379|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAlignedMemory16Operands(Inst, 2);
 3380|      0|      break;
 3381|      0|    case CVT_95_addDupAlignedMemory32Operands:
  ------------------
  |  Branch (3381:5): [True: 0, False: 88.5k]
  ------------------
 3382|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addDupAlignedMemory32Operands(Inst, 2);
 3383|      0|      break;
 3384|      0|    case CVT_95_addAlignedMemory32Operands:
  ------------------
  |  Branch (3384:5): [True: 0, False: 88.5k]
  ------------------
 3385|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAlignedMemory32Operands(Inst, 2);
 3386|      0|      break;
 3387|      0|    case CVT_95_addDupAlignedMemoryNoneOperands:
  ------------------
  |  Branch (3387:5): [True: 0, False: 88.5k]
  ------------------
 3388|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addDupAlignedMemoryNoneOperands(Inst, 2);
 3389|      0|      break;
 3390|      0|    case CVT_95_addAlignedMemoryNoneOperands:
  ------------------
  |  Branch (3390:5): [True: 0, False: 88.5k]
  ------------------
 3391|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAlignedMemoryNoneOperands(Inst, 2);
 3392|      0|      break;
 3393|      0|    case CVT_95_addAlignedMemoryOperands:
  ------------------
  |  Branch (3393:5): [True: 0, False: 88.5k]
  ------------------
 3394|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAlignedMemoryOperands(Inst, 2);
 3395|      0|      break;
 3396|      0|    case CVT_95_addDupAlignedMemory64Operands:
  ------------------
  |  Branch (3396:5): [True: 0, False: 88.5k]
  ------------------
 3397|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addDupAlignedMemory64Operands(Inst, 2);
 3398|      0|      break;
 3399|      0|    case CVT_95_addDupAlignedMemory64or128Operands:
  ------------------
  |  Branch (3399:5): [True: 0, False: 88.5k]
  ------------------
 3400|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addDupAlignedMemory64or128Operands(Inst, 2);
 3401|      0|      break;
 3402|      0|    case CVT_95_addSPRRegListOperands:
  ------------------
  |  Branch (3402:5): [True: 0, False: 88.5k]
  ------------------
 3403|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addSPRRegListOperands(Inst, 1);
 3404|      0|      break;
 3405|      0|    case CVT_95_addAddrMode5FP16Operands:
  ------------------
  |  Branch (3405:5): [True: 0, False: 88.5k]
  ------------------
 3406|      0|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addAddrMode5FP16Operands(Inst, 2);
 3407|      0|      break;
 3408|     97|    case CVT_95_addNEONi32vmovOperands:
  ------------------
  |  Branch (3408:5): [True: 97, False: 88.4k]
  ------------------
 3409|     97|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi32vmovOperands(Inst, 1);
 3410|     97|      break;
 3411|      3|    case CVT_95_addNEONvmovByteReplicateOperands:
  ------------------
  |  Branch (3411:5): [True: 3, False: 88.5k]
  ------------------
 3412|      3|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONvmovByteReplicateOperands(Inst, 1);
 3413|      3|      break;
 3414|     63|    case CVT_95_addNEONi32vmovNegOperands:
  ------------------
  |  Branch (3414:5): [True: 63, False: 88.5k]
  ------------------
 3415|     63|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi32vmovNegOperands(Inst, 1);
 3416|     63|      break;
 3417|      2|    case CVT_95_addNEONi64splatOperands:
  ------------------
  |  Branch (3417:5): [True: 2, False: 88.5k]
  ------------------
 3418|      2|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi64splatOperands(Inst, 1);
 3419|      2|      break;
 3420|      5|    case CVT_95_addNEONi8splatOperands:
  ------------------
  |  Branch (3420:5): [True: 5, False: 88.5k]
  ------------------
 3421|      5|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONi8splatOperands(Inst, 1);
 3422|      5|      break;
 3423|      2|    case CVT_95_addNEONinvByteReplicateOperands:
  ------------------
  |  Branch (3423:5): [True: 2, False: 88.5k]
  ------------------
 3424|      2|      static_cast<ARMOperand&>(*Operands[*(p + 1)]).addNEONinvByteReplicateOperands(Inst, 1);
 3425|      2|      break;
 3426|     84|    case CVT_imm_95_2:
  ------------------
  |  Branch (3426:5): [True: 84, False: 88.5k]
  ------------------
 3427|     84|      Inst.addOperand(MCOperand::createImm(2));
 3428|     84|      break;
 3429|     70|    case CVT_imm_95_3:
  ------------------
  |  Branch (3429:5): [True: 70, False: 88.5k]
  ------------------
 3430|     70|      Inst.addOperand(MCOperand::createImm(3));
 3431|     70|      break;
 3432|  88.5k|    }
 3433|  88.5k|  }
 3434|  30.0k|}

ARMMCTargetDesc.cpp:_ZN7llvm_ksL18InitARMMCInstrInfoEPNS_11MCInstrInfoE:
 7053|  20.9k|static inline void InitARMMCInstrInfo(MCInstrInfo *II) {
 7054|  20.9k|  II->InitMCInstrInfo(ARMInsts, NULL, NULL, 3007);
 7055|  20.9k|}

ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter21getBinaryCodeForInstrERKN7llvm_ks6MCInstERNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
   11|  29.4k|    const MCSubtargetInfo &STI) const {
   12|  29.4k|  static const uint64_t InstBits[] = {
   13|  29.4k|    UINT64_C(0),
   14|  29.4k|    UINT64_C(0),
   15|  29.4k|    UINT64_C(0),
   16|  29.4k|    UINT64_C(0),
   17|  29.4k|    UINT64_C(0),
   18|  29.4k|    UINT64_C(0),
   19|  29.4k|    UINT64_C(0),
   20|  29.4k|    UINT64_C(0),
   21|  29.4k|    UINT64_C(0),
   22|  29.4k|    UINT64_C(0),
   23|  29.4k|    UINT64_C(0),
   24|  29.4k|    UINT64_C(0),
   25|  29.4k|    UINT64_C(0),
   26|  29.4k|    UINT64_C(0),
   27|  29.4k|    UINT64_C(0),
   28|  29.4k|    UINT64_C(0),
   29|  29.4k|    UINT64_C(0),
   30|  29.4k|    UINT64_C(0),
   31|  29.4k|    UINT64_C(0),
   32|  29.4k|    UINT64_C(0),
   33|  29.4k|    UINT64_C(0),
   34|  29.4k|    UINT64_C(0),
   35|  29.4k|    UINT64_C(0),
   36|  29.4k|    UINT64_C(0),
   37|  29.4k|    UINT64_C(0),
   38|  29.4k|    UINT64_C(44040192),	// ADCri
   39|  29.4k|    UINT64_C(10485760),	// ADCrr
   40|  29.4k|    UINT64_C(10485760),	// ADCrsi
   41|  29.4k|    UINT64_C(10485776),	// ADCrsr
   42|  29.4k|    UINT64_C(0),
   43|  29.4k|    UINT64_C(0),
   44|  29.4k|    UINT64_C(0),
   45|  29.4k|    UINT64_C(0),
   46|  29.4k|    UINT64_C(41943040),	// ADDri
   47|  29.4k|    UINT64_C(8388608),	// ADDrr
   48|  29.4k|    UINT64_C(8388608),	// ADDrsi
   49|  29.4k|    UINT64_C(8388624),	// ADDrsr
   50|  29.4k|    UINT64_C(0),
   51|  29.4k|    UINT64_C(0),
   52|  29.4k|    UINT64_C(34537472),	// ADR
   53|  29.4k|    UINT64_C(4088398656),	// AESD
   54|  29.4k|    UINT64_C(4088398592),	// AESE
   55|  29.4k|    UINT64_C(4088398784),	// AESIMC
   56|  29.4k|    UINT64_C(4088398720),	// AESMC
   57|  29.4k|    UINT64_C(33554432),	// ANDri
   58|  29.4k|    UINT64_C(0),	// ANDrr
   59|  29.4k|    UINT64_C(0),	// ANDrsi
   60|  29.4k|    UINT64_C(16),	// ANDrsr
   61|  29.4k|    UINT64_C(0),
   62|  29.4k|    UINT64_C(0),
   63|  29.4k|    UINT64_C(0),
   64|  29.4k|    UINT64_C(0),
   65|  29.4k|    UINT64_C(0),
   66|  29.4k|    UINT64_C(130023455),	// BFC
   67|  29.4k|    UINT64_C(130023440),	// BFI
   68|  29.4k|    UINT64_C(62914560),	// BICri
   69|  29.4k|    UINT64_C(29360128),	// BICrr
   70|  29.4k|    UINT64_C(29360128),	// BICrsi
   71|  29.4k|    UINT64_C(29360144),	// BICrsr
   72|  29.4k|    UINT64_C(3776970864),	// BKPT
   73|  29.4k|    UINT64_C(3942645760),	// BL
   74|  29.4k|    UINT64_C(3778019120),	// BLX
   75|  29.4k|    UINT64_C(19922736),	// BLX_pred
   76|  29.4k|    UINT64_C(4194304000),	// BLXi
   77|  29.4k|    UINT64_C(184549376),	// BL_pred
   78|  29.4k|    UINT64_C(0),
   79|  29.4k|    UINT64_C(0),
   80|  29.4k|    UINT64_C(0),
   81|  29.4k|    UINT64_C(0),
   82|  29.4k|    UINT64_C(0),
   83|  29.4k|    UINT64_C(3778019088),	// BX
   84|  29.4k|    UINT64_C(19922720),	// BXJ
   85|  29.4k|    UINT64_C(0),
   86|  29.4k|    UINT64_C(19922718),	// BX_RET
   87|  29.4k|    UINT64_C(19922704),	// BX_pred
   88|  29.4k|    UINT64_C(167772160),	// Bcc
   89|  29.4k|    UINT64_C(234881024),	// CDP
   90|  29.4k|    UINT64_C(4261412864),	// CDP2
   91|  29.4k|    UINT64_C(4118802463),	// CLREX
   92|  29.4k|    UINT64_C(24055568),	// CLZ
   93|  29.4k|    UINT64_C(57671680),	// CMNri
   94|  29.4k|    UINT64_C(24117248),	// CMNzrr
   95|  29.4k|    UINT64_C(24117248),	// CMNzrsi
   96|  29.4k|    UINT64_C(24117264),	// CMNzrsr
   97|  29.4k|    UINT64_C(55574528),	// CMPri
   98|  29.4k|    UINT64_C(22020096),	// CMPrr
   99|  29.4k|    UINT64_C(22020096),	// CMPrsi
  100|  29.4k|    UINT64_C(22020112),	// CMPrsr
  101|  29.4k|    UINT64_C(0),
  102|  29.4k|    UINT64_C(0),
  103|  29.4k|    UINT64_C(4043440128),	// CPS1p
  104|  29.4k|    UINT64_C(4043309056),	// CPS2p
  105|  29.4k|    UINT64_C(4043440128),	// CPS3p
  106|  29.4k|    UINT64_C(3774873664),	// CRC32B
  107|  29.4k|    UINT64_C(3774874176),	// CRC32CB
  108|  29.4k|    UINT64_C(3776971328),	// CRC32CH
  109|  29.4k|    UINT64_C(3779068480),	// CRC32CW
  110|  29.4k|    UINT64_C(3776970816),	// CRC32H
  111|  29.4k|    UINT64_C(3779067968),	// CRC32W
  112|  29.4k|    UINT64_C(52490480),	// DBG
  113|  29.4k|    UINT64_C(4118802512),	// DMB
  114|  29.4k|    UINT64_C(4118802496),	// DSB
  115|  29.4k|    UINT64_C(35651584),	// EORri
  116|  29.4k|    UINT64_C(2097152),	// EORrr
  117|  29.4k|    UINT64_C(2097152),	// EORrsi
  118|  29.4k|    UINT64_C(2097168),	// EORrsr
  119|  29.4k|    UINT64_C(23068782),	// ERET
  120|  29.4k|    UINT64_C(246418176),	// FCONSTD
  121|  29.4k|    UINT64_C(246417664),	// FCONSTH
  122|  29.4k|    UINT64_C(246417920),	// FCONSTS
  123|  29.4k|    UINT64_C(221252353),	// FLDMXDB_UPD
  124|  29.4k|    UINT64_C(210766593),	// FLDMXIA
  125|  29.4k|    UINT64_C(212863745),	// FLDMXIA_UPD
  126|  29.4k|    UINT64_C(250739216),	// FMSTAT
  127|  29.4k|    UINT64_C(220203777),	// FSTMXDB_UPD
  128|  29.4k|    UINT64_C(209718017),	// FSTMXIA
  129|  29.4k|    UINT64_C(211815169),	// FSTMXIA_UPD
  130|  29.4k|    UINT64_C(52490240),	// HINT
  131|  29.4k|    UINT64_C(3774873712),	// HLT
  132|  29.4k|    UINT64_C(3779068016),	// HVC
  133|  29.4k|    UINT64_C(4118802528),	// ISB
  134|  29.4k|    UINT64_C(0),
  135|  29.4k|    UINT64_C(0),
  136|  29.4k|    UINT64_C(0),
  137|  29.4k|    UINT64_C(0),
  138|  29.4k|    UINT64_C(0),
  139|  29.4k|    UINT64_C(0),
  140|  29.4k|    UINT64_C(0),
  141|  29.4k|    UINT64_C(0),
  142|  29.4k|    UINT64_C(0),
  143|  29.4k|    UINT64_C(0),
  144|  29.4k|    UINT64_C(26217631),	// LDA
  145|  29.4k|    UINT64_C(30411935),	// LDAB
  146|  29.4k|    UINT64_C(26218143),	// LDAEX
  147|  29.4k|    UINT64_C(30412447),	// LDAEXB
  148|  29.4k|    UINT64_C(28315295),	// LDAEXD
  149|  29.4k|    UINT64_C(32509599),	// LDAEXH
  150|  29.4k|    UINT64_C(32509087),	// LDAH
  151|  29.4k|    UINT64_C(4249878528),	// LDC2L_OFFSET
  152|  29.4k|    UINT64_C(4241489920),	// LDC2L_OPTION
  153|  29.4k|    UINT64_C(4235198464),	// LDC2L_POST
  154|  29.4k|    UINT64_C(4251975680),	// LDC2L_PRE
  155|  29.4k|    UINT64_C(4245684224),	// LDC2_OFFSET
  156|  29.4k|    UINT64_C(4237295616),	// LDC2_OPTION
  157|  29.4k|    UINT64_C(4231004160),	// LDC2_POST
  158|  29.4k|    UINT64_C(4247781376),	// LDC2_PRE
  159|  29.4k|    UINT64_C(223346688),	// LDCL_OFFSET
  160|  29.4k|    UINT64_C(214958080),	// LDCL_OPTION
  161|  29.4k|    UINT64_C(208666624),	// LDCL_POST
  162|  29.4k|    UINT64_C(225443840),	// LDCL_PRE
  163|  29.4k|    UINT64_C(219152384),	// LDC_OFFSET
  164|  29.4k|    UINT64_C(210763776),	// LDC_OPTION
  165|  29.4k|    UINT64_C(204472320),	// LDC_POST
  166|  29.4k|    UINT64_C(221249536),	// LDC_PRE
  167|  29.4k|    UINT64_C(135266304),	// LDMDA
  168|  29.4k|    UINT64_C(137363456),	// LDMDA_UPD
  169|  29.4k|    UINT64_C(152043520),	// LDMDB
  170|  29.4k|    UINT64_C(154140672),	// LDMDB_UPD
  171|  29.4k|    UINT64_C(143654912),	// LDMIA
  172|  29.4k|    UINT64_C(0),
  173|  29.4k|    UINT64_C(145752064),	// LDMIA_UPD
  174|  29.4k|    UINT64_C(160432128),	// LDMIB
  175|  29.4k|    UINT64_C(162529280),	// LDMIB_UPD
  176|  29.4k|    UINT64_C(0),
  177|  29.4k|    UINT64_C(74448896),	// LDRBT_POST_IMM
  178|  29.4k|    UINT64_C(108003328),	// LDRBT_POST_REG
  179|  29.4k|    UINT64_C(72351744),	// LDRB_POST_IMM
  180|  29.4k|    UINT64_C(105906176),	// LDRB_POST_REG
  181|  29.4k|    UINT64_C(91226112),	// LDRB_PRE_IMM
  182|  29.4k|    UINT64_C(124780544),	// LDRB_PRE_REG
  183|  29.4k|    UINT64_C(89128960),	// LDRBi12
  184|  29.4k|    UINT64_C(122683392),	// LDRBrs
  185|  29.4k|    UINT64_C(16777424),	// LDRD
  186|  29.4k|    UINT64_C(208),	// LDRD_POST
  187|  29.4k|    UINT64_C(18874576),	// LDRD_PRE
  188|  29.4k|    UINT64_C(26218399),	// LDREX
  189|  29.4k|    UINT64_C(30412703),	// LDREXB
  190|  29.4k|    UINT64_C(28315551),	// LDREXD
  191|  29.4k|    UINT64_C(32509855),	// LDREXH
  192|  29.4k|    UINT64_C(17825968),	// LDRH
  193|  29.4k|    UINT64_C(7340208),	// LDRHTi
  194|  29.4k|    UINT64_C(3145904),	// LDRHTr
  195|  29.4k|    UINT64_C(1048752),	// LDRH_POST
  196|  29.4k|    UINT64_C(19923120),	// LDRH_PRE
  197|  29.4k|    UINT64_C(0),
  198|  29.4k|    UINT64_C(0),
  199|  29.4k|    UINT64_C(0),
  200|  29.4k|    UINT64_C(17826000),	// LDRSB
  201|  29.4k|    UINT64_C(7340240),	// LDRSBTi
  202|  29.4k|    UINT64_C(3145936),	// LDRSBTr
  203|  29.4k|    UINT64_C(1048784),	// LDRSB_POST
  204|  29.4k|    UINT64_C(19923152),	// LDRSB_PRE
  205|  29.4k|    UINT64_C(17826032),	// LDRSH
  206|  29.4k|    UINT64_C(7340272),	// LDRSHTi
  207|  29.4k|    UINT64_C(3145968),	// LDRSHTr
  208|  29.4k|    UINT64_C(1048816),	// LDRSH_POST
  209|  29.4k|    UINT64_C(19923184),	// LDRSH_PRE
  210|  29.4k|    UINT64_C(0),
  211|  29.4k|    UINT64_C(70254592),	// LDRT_POST_IMM
  212|  29.4k|    UINT64_C(103809024),	// LDRT_POST_REG
  213|  29.4k|    UINT64_C(68157440),	// LDR_POST_IMM
  214|  29.4k|    UINT64_C(101711872),	// LDR_POST_REG
  215|  29.4k|    UINT64_C(87031808),	// LDR_PRE_IMM
  216|  29.4k|    UINT64_C(120586240),	// LDR_PRE_REG
  217|  29.4k|    UINT64_C(85917696),	// LDRcp
  218|  29.4k|    UINT64_C(84934656),	// LDRi12
  219|  29.4k|    UINT64_C(118489088),	// LDRrs
  220|  29.4k|    UINT64_C(0),
  221|  29.4k|    UINT64_C(0),
  222|  29.4k|    UINT64_C(0),
  223|  29.4k|    UINT64_C(0),
  224|  29.4k|    UINT64_C(0),
  225|  29.4k|    UINT64_C(0),
  226|  29.4k|    UINT64_C(234881040),	// MCR
  227|  29.4k|    UINT64_C(4261412880),	// MCR2
  228|  29.4k|    UINT64_C(205520896),	// MCRR
  229|  29.4k|    UINT64_C(4232052736),	// MCRR2
  230|  29.4k|    UINT64_C(0),
  231|  29.4k|    UINT64_C(2097296),	// MLA
  232|  29.4k|    UINT64_C(0),
  233|  29.4k|    UINT64_C(6291600),	// MLS
  234|  29.4k|    UINT64_C(0),
  235|  29.4k|    UINT64_C(0),
  236|  29.4k|    UINT64_C(0),
  237|  29.4k|    UINT64_C(0),
  238|  29.4k|    UINT64_C(0),
  239|  29.4k|    UINT64_C(0),
  240|  29.4k|    UINT64_C(27324430),	// MOVPCLR
  241|  29.4k|    UINT64_C(0),
  242|  29.4k|    UINT64_C(54525952),	// MOVTi16
  243|  29.4k|    UINT64_C(0),
  244|  29.4k|    UINT64_C(0),
  245|  29.4k|    UINT64_C(0),
  246|  29.4k|    UINT64_C(60817408),	// MOVi
  247|  29.4k|    UINT64_C(50331648),	// MOVi16
  248|  29.4k|    UINT64_C(0),
  249|  29.4k|    UINT64_C(0),
  250|  29.4k|    UINT64_C(27262976),	// MOVr
  251|  29.4k|    UINT64_C(27262976),	// MOVr_TC
  252|  29.4k|    UINT64_C(27262976),	// MOVsi
  253|  29.4k|    UINT64_C(27262992),	// MOVsr
  254|  29.4k|    UINT64_C(0),
  255|  29.4k|    UINT64_C(0),
  256|  29.4k|    UINT64_C(235929616),	// MRC
  257|  29.4k|    UINT64_C(4262461456),	// MRC2
  258|  29.4k|    UINT64_C(206569472),	// MRRC
  259|  29.4k|    UINT64_C(4233101312),	// MRRC2
  260|  29.4k|    UINT64_C(17760256),	// MRS
  261|  29.4k|    UINT64_C(16777728),	// MRSbanked
  262|  29.4k|    UINT64_C(21954560),	// MRSsys
  263|  29.4k|    UINT64_C(18935808),	// MSR
  264|  29.4k|    UINT64_C(18936320),	// MSRbanked
  265|  29.4k|    UINT64_C(52490240),	// MSRi
  266|  29.4k|    UINT64_C(144),	// MUL
  267|  29.4k|    UINT64_C(0),
  268|  29.4k|    UINT64_C(0),
  269|  29.4k|    UINT64_C(65011712),	// MVNi
  270|  29.4k|    UINT64_C(31457280),	// MVNr
  271|  29.4k|    UINT64_C(31457280),	// MVNsi
  272|  29.4k|    UINT64_C(31457296),	// MVNsr
  273|  29.4k|    UINT64_C(58720256),	// ORRri
  274|  29.4k|    UINT64_C(25165824),	// ORRrr
  275|  29.4k|    UINT64_C(25165824),	// ORRrsi
  276|  29.4k|    UINT64_C(25165840),	// ORRrsr
  277|  29.4k|    UINT64_C(0),
  278|  29.4k|    UINT64_C(0),
  279|  29.4k|    UINT64_C(0),
  280|  29.4k|    UINT64_C(0),
  281|  29.4k|    UINT64_C(0),
  282|  29.4k|    UINT64_C(0),
  283|  29.4k|    UINT64_C(0),
  284|  29.4k|    UINT64_C(0),
  285|  29.4k|    UINT64_C(0),
  286|  29.4k|    UINT64_C(109051920),	// PKHBT
  287|  29.4k|    UINT64_C(109051984),	// PKHTB
  288|  29.4k|    UINT64_C(4111527936),	// PLDWi12
  289|  29.4k|    UINT64_C(4145082368),	// PLDWrs
  290|  29.4k|    UINT64_C(4115722240),	// PLDi12
  291|  29.4k|    UINT64_C(4149276672),	// PLDrs
  292|  29.4k|    UINT64_C(4098945024),	// PLIi12
  293|  29.4k|    UINT64_C(4132499456),	// PLIrs
  294|  29.4k|    UINT64_C(16777296),	// QADD
  295|  29.4k|    UINT64_C(102764304),	// QADD16
  296|  29.4k|    UINT64_C(102764432),	// QADD8
  297|  29.4k|    UINT64_C(102764336),	// QASX
  298|  29.4k|    UINT64_C(20971600),	// QDADD
  299|  29.4k|    UINT64_C(23068752),	// QDSUB
  300|  29.4k|    UINT64_C(102764368),	// QSAX
  301|  29.4k|    UINT64_C(18874448),	// QSUB
  302|  29.4k|    UINT64_C(102764400),	// QSUB16
  303|  29.4k|    UINT64_C(102764528),	// QSUB8
  304|  29.4k|    UINT64_C(117378864),	// RBIT
  305|  29.4k|    UINT64_C(113184560),	// REV
  306|  29.4k|    UINT64_C(113184688),	// REV16
  307|  29.4k|    UINT64_C(117378992),	// REVSH
  308|  29.4k|    UINT64_C(4161800704),	// RFEDA
  309|  29.4k|    UINT64_C(4163897856),	// RFEDA_UPD
  310|  29.4k|    UINT64_C(4178577920),	// RFEDB
  311|  29.4k|    UINT64_C(4180675072),	// RFEDB_UPD
  312|  29.4k|    UINT64_C(4170189312),	// RFEIA
  313|  29.4k|    UINT64_C(4172286464),	// RFEIA_UPD
  314|  29.4k|    UINT64_C(4186966528),	// RFEIB
  315|  29.4k|    UINT64_C(4189063680),	// RFEIB_UPD
  316|  29.4k|    UINT64_C(0),
  317|  29.4k|    UINT64_C(0),
  318|  29.4k|    UINT64_C(0),
  319|  29.4k|    UINT64_C(0),
  320|  29.4k|    UINT64_C(0),
  321|  29.4k|    UINT64_C(0),
  322|  29.4k|    UINT64_C(0),
  323|  29.4k|    UINT64_C(39845888),	// RSBri
  324|  29.4k|    UINT64_C(6291456),	// RSBrr
  325|  29.4k|    UINT64_C(6291456),	// RSBrsi
  326|  29.4k|    UINT64_C(6291472),	// RSBrsr
  327|  29.4k|    UINT64_C(48234496),	// RSCri
  328|  29.4k|    UINT64_C(14680064),	// RSCrr
  329|  29.4k|    UINT64_C(14680064),	// RSCrsi
  330|  29.4k|    UINT64_C(14680080),	// RSCrsr
  331|  29.4k|    UINT64_C(101715728),	// SADD16
  332|  29.4k|    UINT64_C(101715856),	// SADD8
  333|  29.4k|    UINT64_C(101715760),	// SASX
  334|  29.4k|    UINT64_C(46137344),	// SBCri
  335|  29.4k|    UINT64_C(12582912),	// SBCrr
  336|  29.4k|    UINT64_C(12582912),	// SBCrsi
  337|  29.4k|    UINT64_C(12582928),	// SBCrsr
  338|  29.4k|    UINT64_C(127926352),	// SBFX
  339|  29.4k|    UINT64_C(118550544),	// SDIV
  340|  29.4k|    UINT64_C(109055920),	// SEL
  341|  29.4k|    UINT64_C(4043374592),	// SETEND
  342|  29.4k|    UINT64_C(4044357632),	// SETPAN
  343|  29.4k|    UINT64_C(4060089408),	// SHA1C
  344|  29.4k|    UINT64_C(4088988352),	// SHA1H
  345|  29.4k|    UINT64_C(4062186560),	// SHA1M
  346|  29.4k|    UINT64_C(4061137984),	// SHA1P
  347|  29.4k|    UINT64_C(4063235136),	// SHA1SU0
  348|  29.4k|    UINT64_C(4089054080),	// SHA1SU1
  349|  29.4k|    UINT64_C(4076866624),	// SHA256H
  350|  29.4k|    UINT64_C(4077915200),	// SHA256H2
  351|  29.4k|    UINT64_C(4089054144),	// SHA256SU0
  352|  29.4k|    UINT64_C(4078963776),	// SHA256SU1
  353|  29.4k|    UINT64_C(103812880),	// SHADD16
  354|  29.4k|    UINT64_C(103813008),	// SHADD8
  355|  29.4k|    UINT64_C(103812912),	// SHASX
  356|  29.4k|    UINT64_C(103812944),	// SHSAX
  357|  29.4k|    UINT64_C(103812976),	// SHSUB16
  358|  29.4k|    UINT64_C(103813104),	// SHSUB8
  359|  29.4k|    UINT64_C(23068784),	// SMC
  360|  29.4k|    UINT64_C(16777344),	// SMLABB
  361|  29.4k|    UINT64_C(16777408),	// SMLABT
  362|  29.4k|    UINT64_C(117440528),	// SMLAD
  363|  29.4k|    UINT64_C(117440560),	// SMLADX
  364|  29.4k|    UINT64_C(14680208),	// SMLAL
  365|  29.4k|    UINT64_C(20971648),	// SMLALBB
  366|  29.4k|    UINT64_C(20971712),	// SMLALBT
  367|  29.4k|    UINT64_C(121634832),	// SMLALD
  368|  29.4k|    UINT64_C(121634864),	// SMLALDX
  369|  29.4k|    UINT64_C(20971680),	// SMLALTB
  370|  29.4k|    UINT64_C(20971744),	// SMLALTT
  371|  29.4k|    UINT64_C(0),
  372|  29.4k|    UINT64_C(16777376),	// SMLATB
  373|  29.4k|    UINT64_C(16777440),	// SMLATT
  374|  29.4k|    UINT64_C(18874496),	// SMLAWB
  375|  29.4k|    UINT64_C(18874560),	// SMLAWT
  376|  29.4k|    UINT64_C(117440592),	// SMLSD
  377|  29.4k|    UINT64_C(117440624),	// SMLSDX
  378|  29.4k|    UINT64_C(121634896),	// SMLSLD
  379|  29.4k|    UINT64_C(121634928),	// SMLSLDX
  380|  29.4k|    UINT64_C(122683408),	// SMMLA
  381|  29.4k|    UINT64_C(122683440),	// SMMLAR
  382|  29.4k|    UINT64_C(122683600),	// SMMLS
  383|  29.4k|    UINT64_C(122683632),	// SMMLSR
  384|  29.4k|    UINT64_C(122744848),	// SMMUL
  385|  29.4k|    UINT64_C(122744880),	// SMMULR
  386|  29.4k|    UINT64_C(117501968),	// SMUAD
  387|  29.4k|    UINT64_C(117502000),	// SMUADX
  388|  29.4k|    UINT64_C(23068800),	// SMULBB
  389|  29.4k|    UINT64_C(23068864),	// SMULBT
  390|  29.4k|    UINT64_C(12583056),	// SMULL
  391|  29.4k|    UINT64_C(0),
  392|  29.4k|    UINT64_C(23068832),	// SMULTB
  393|  29.4k|    UINT64_C(23068896),	// SMULTT
  394|  29.4k|    UINT64_C(18874528),	// SMULWB
  395|  29.4k|    UINT64_C(18874592),	// SMULWT
  396|  29.4k|    UINT64_C(117502032),	// SMUSD
  397|  29.4k|    UINT64_C(117502064),	// SMUSDX
  398|  29.4k|    UINT64_C(0),
  399|  29.4k|    UINT64_C(4165797120),	// SRSDA
  400|  29.4k|    UINT64_C(4167894272),	// SRSDA_UPD
  401|  29.4k|    UINT64_C(4182574336),	// SRSDB
  402|  29.4k|    UINT64_C(4184671488),	// SRSDB_UPD
  403|  29.4k|    UINT64_C(4174185728),	// SRSIA
  404|  29.4k|    UINT64_C(4176282880),	// SRSIA_UPD
  405|  29.4k|    UINT64_C(4190962944),	// SRSIB
  406|  29.4k|    UINT64_C(4193060096),	// SRSIB_UPD
  407|  29.4k|    UINT64_C(111149072),	// SSAT
  408|  29.4k|    UINT64_C(111152944),	// SSAT16
  409|  29.4k|    UINT64_C(101715792),	// SSAX
  410|  29.4k|    UINT64_C(101715824),	// SSUB16
  411|  29.4k|    UINT64_C(101715952),	// SSUB8
  412|  29.4k|    UINT64_C(4248829952),	// STC2L_OFFSET
  413|  29.4k|    UINT64_C(4240441344),	// STC2L_OPTION
  414|  29.4k|    UINT64_C(4234149888),	// STC2L_POST
  415|  29.4k|    UINT64_C(4250927104),	// STC2L_PRE
  416|  29.4k|    UINT64_C(4244635648),	// STC2_OFFSET
  417|  29.4k|    UINT64_C(4236247040),	// STC2_OPTION
  418|  29.4k|    UINT64_C(4229955584),	// STC2_POST
  419|  29.4k|    UINT64_C(4246732800),	// STC2_PRE
  420|  29.4k|    UINT64_C(222298112),	// STCL_OFFSET
  421|  29.4k|    UINT64_C(213909504),	// STCL_OPTION
  422|  29.4k|    UINT64_C(207618048),	// STCL_POST
  423|  29.4k|    UINT64_C(224395264),	// STCL_PRE
  424|  29.4k|    UINT64_C(218103808),	// STC_OFFSET
  425|  29.4k|    UINT64_C(209715200),	// STC_OPTION
  426|  29.4k|    UINT64_C(203423744),	// STC_POST
  427|  29.4k|    UINT64_C(220200960),	// STC_PRE
  428|  29.4k|    UINT64_C(25230480),	// STL
  429|  29.4k|    UINT64_C(29424784),	// STLB
  430|  29.4k|    UINT64_C(25169552),	// STLEX
  431|  29.4k|    UINT64_C(29363856),	// STLEXB
  432|  29.4k|    UINT64_C(27266704),	// STLEXD
  433|  29.4k|    UINT64_C(31461008),	// STLEXH
  434|  29.4k|    UINT64_C(31521936),	// STLH
  435|  29.4k|    UINT64_C(134217728),	// STMDA
  436|  29.4k|    UINT64_C(136314880),	// STMDA_UPD
  437|  29.4k|    UINT64_C(150994944),	// STMDB
  438|  29.4k|    UINT64_C(153092096),	// STMDB_UPD
  439|  29.4k|    UINT64_C(142606336),	// STMIA
  440|  29.4k|    UINT64_C(144703488),	// STMIA_UPD
  441|  29.4k|    UINT64_C(159383552),	// STMIB
  442|  29.4k|    UINT64_C(161480704),	// STMIB_UPD
  443|  29.4k|    UINT64_C(0),
  444|  29.4k|    UINT64_C(73400320),	// STRBT_POST_IMM
  445|  29.4k|    UINT64_C(106954752),	// STRBT_POST_REG
  446|  29.4k|    UINT64_C(71303168),	// STRB_POST_IMM
  447|  29.4k|    UINT64_C(104857600),	// STRB_POST_REG
  448|  29.4k|    UINT64_C(90177536),	// STRB_PRE_IMM
  449|  29.4k|    UINT64_C(123731968),	// STRB_PRE_REG
  450|  29.4k|    UINT64_C(88080384),	// STRBi12
  451|  29.4k|    UINT64_C(0),
  452|  29.4k|    UINT64_C(0),
  453|  29.4k|    UINT64_C(121634816),	// STRBrs
  454|  29.4k|    UINT64_C(16777456),	// STRD
  455|  29.4k|    UINT64_C(240),	// STRD_POST
  456|  29.4k|    UINT64_C(18874608),	// STRD_PRE
  457|  29.4k|    UINT64_C(25169808),	// STREX
  458|  29.4k|    UINT64_C(29364112),	// STREXB
  459|  29.4k|    UINT64_C(27266960),	// STREXD
  460|  29.4k|    UINT64_C(31461264),	// STREXH
  461|  29.4k|    UINT64_C(16777392),	// STRH
  462|  29.4k|    UINT64_C(6291632),	// STRHTi
  463|  29.4k|    UINT64_C(2097328),	// STRHTr
  464|  29.4k|    UINT64_C(176),	// STRH_POST
  465|  29.4k|    UINT64_C(18874544),	// STRH_PRE
  466|  29.4k|    UINT64_C(0),
  467|  29.4k|    UINT64_C(0),
  468|  29.4k|    UINT64_C(69206016),	// STRT_POST_IMM
  469|  29.4k|    UINT64_C(102760448),	// STRT_POST_REG
  470|  29.4k|    UINT64_C(67108864),	// STR_POST_IMM
  471|  29.4k|    UINT64_C(100663296),	// STR_POST_REG
  472|  29.4k|    UINT64_C(85983232),	// STR_PRE_IMM
  473|  29.4k|    UINT64_C(119537664),	// STR_PRE_REG
  474|  29.4k|    UINT64_C(83886080),	// STRi12
  475|  29.4k|    UINT64_C(0),
  476|  29.4k|    UINT64_C(0),
  477|  29.4k|    UINT64_C(117440512),	// STRrs
  478|  29.4k|    UINT64_C(0),
  479|  29.4k|    UINT64_C(0),
  480|  29.4k|    UINT64_C(0),
  481|  29.4k|    UINT64_C(0),
  482|  29.4k|    UINT64_C(0),
  483|  29.4k|    UINT64_C(37748736),	// SUBri
  484|  29.4k|    UINT64_C(4194304),	// SUBrr
  485|  29.4k|    UINT64_C(4194304),	// SUBrsi
  486|  29.4k|    UINT64_C(4194320),	// SUBrsr
  487|  29.4k|    UINT64_C(251658240),	// SVC
  488|  29.4k|    UINT64_C(16777360),	// SWP
  489|  29.4k|    UINT64_C(20971664),	// SWPB
  490|  29.4k|    UINT64_C(111149168),	// SXTAB
  491|  29.4k|    UINT64_C(109052016),	// SXTAB16
  492|  29.4k|    UINT64_C(112197744),	// SXTAH
  493|  29.4k|    UINT64_C(112132208),	// SXTB
  494|  29.4k|    UINT64_C(110035056),	// SXTB16
  495|  29.4k|    UINT64_C(113180784),	// SXTH
  496|  29.4k|    UINT64_C(0),
  497|  29.4k|    UINT64_C(0),
  498|  29.4k|    UINT64_C(0),
  499|  29.4k|    UINT64_C(0),
  500|  29.4k|    UINT64_C(53477376),	// TEQri
  501|  29.4k|    UINT64_C(19922944),	// TEQrr
  502|  29.4k|    UINT64_C(19922944),	// TEQrsi
  503|  29.4k|    UINT64_C(19922960),	// TEQrsr
  504|  29.4k|    UINT64_C(0),
  505|  29.4k|    UINT64_C(3892305662),	// TRAP
  506|  29.4k|    UINT64_C(3892240112),	// TRAPNaCl
  507|  29.4k|    UINT64_C(51380224),	// TSTri
  508|  29.4k|    UINT64_C(17825792),	// TSTrr
  509|  29.4k|    UINT64_C(17825792),	// TSTrsi
  510|  29.4k|    UINT64_C(17825808),	// TSTrsr
  511|  29.4k|    UINT64_C(105910032),	// UADD16
  512|  29.4k|    UINT64_C(105910160),	// UADD8
  513|  29.4k|    UINT64_C(105910064),	// UASX
  514|  29.4k|    UINT64_C(132120656),	// UBFX
  515|  29.4k|    UINT64_C(3891265776),	// UDF
  516|  29.4k|    UINT64_C(120647696),	// UDIV
  517|  29.4k|    UINT64_C(108007184),	// UHADD16
  518|  29.4k|    UINT64_C(108007312),	// UHADD8
  519|  29.4k|    UINT64_C(108007216),	// UHASX
  520|  29.4k|    UINT64_C(108007248),	// UHSAX
  521|  29.4k|    UINT64_C(108007280),	// UHSUB16
  522|  29.4k|    UINT64_C(108007408),	// UHSUB8
  523|  29.4k|    UINT64_C(4194448),	// UMAAL
  524|  29.4k|    UINT64_C(10485904),	// UMLAL
  525|  29.4k|    UINT64_C(0),
  526|  29.4k|    UINT64_C(8388752),	// UMULL
  527|  29.4k|    UINT64_C(0),
  528|  29.4k|    UINT64_C(106958608),	// UQADD16
  529|  29.4k|    UINT64_C(106958736),	// UQADD8
  530|  29.4k|    UINT64_C(106958640),	// UQASX
  531|  29.4k|    UINT64_C(106958672),	// UQSAX
  532|  29.4k|    UINT64_C(106958704),	// UQSUB16
  533|  29.4k|    UINT64_C(106958832),	// UQSUB8
  534|  29.4k|    UINT64_C(125890576),	// USAD8
  535|  29.4k|    UINT64_C(125829136),	// USADA8
  536|  29.4k|    UINT64_C(115343376),	// USAT
  537|  29.4k|    UINT64_C(115347248),	// USAT16
  538|  29.4k|    UINT64_C(105910096),	// USAX
  539|  29.4k|    UINT64_C(105910128),	// USUB16
  540|  29.4k|    UINT64_C(105910256),	// USUB8
  541|  29.4k|    UINT64_C(115343472),	// UXTAB
  542|  29.4k|    UINT64_C(113246320),	// UXTAB16
  543|  29.4k|    UINT64_C(116392048),	// UXTAH
  544|  29.4k|    UINT64_C(116326512),	// UXTB
  545|  29.4k|    UINT64_C(114229360),	// UXTB16
  546|  29.4k|    UINT64_C(117375088),	// UXTH
  547|  29.4k|    UINT64_C(4070573312),	// VABALsv2i64
  548|  29.4k|    UINT64_C(4069524736),	// VABALsv4i32
  549|  29.4k|    UINT64_C(4068476160),	// VABALsv8i16
  550|  29.4k|    UINT64_C(4087350528),	// VABALuv2i64
  551|  29.4k|    UINT64_C(4086301952),	// VABALuv4i32
  552|  29.4k|    UINT64_C(4085253376),	// VABALuv8i16
  553|  29.4k|    UINT64_C(4060088144),	// VABAsv16i8
  554|  29.4k|    UINT64_C(4062185232),	// VABAsv2i32
  555|  29.4k|    UINT64_C(4061136656),	// VABAsv4i16
  556|  29.4k|    UINT64_C(4062185296),	// VABAsv4i32
  557|  29.4k|    UINT64_C(4061136720),	// VABAsv8i16
  558|  29.4k|    UINT64_C(4060088080),	// VABAsv8i8
  559|  29.4k|    UINT64_C(4076865360),	// VABAuv16i8
  560|  29.4k|    UINT64_C(4078962448),	// VABAuv2i32
  561|  29.4k|    UINT64_C(4077913872),	// VABAuv4i16
  562|  29.4k|    UINT64_C(4078962512),	// VABAuv4i32
  563|  29.4k|    UINT64_C(4077913936),	// VABAuv8i16
  564|  29.4k|    UINT64_C(4076865296),	// VABAuv8i8
  565|  29.4k|    UINT64_C(4070573824),	// VABDLsv2i64
  566|  29.4k|    UINT64_C(4069525248),	// VABDLsv4i32
  567|  29.4k|    UINT64_C(4068476672),	// VABDLsv8i16
  568|  29.4k|    UINT64_C(4087351040),	// VABDLuv2i64
  569|  29.4k|    UINT64_C(4086302464),	// VABDLuv4i32
  570|  29.4k|    UINT64_C(4085253888),	// VABDLuv8i16
  571|  29.4k|    UINT64_C(4078963968),	// VABDfd
  572|  29.4k|    UINT64_C(4078964032),	// VABDfq
  573|  29.4k|    UINT64_C(4080012544),	// VABDhd
  574|  29.4k|    UINT64_C(4080012608),	// VABDhq
  575|  29.4k|    UINT64_C(4060088128),	// VABDsv16i8
  576|  29.4k|    UINT64_C(4062185216),	// VABDsv2i32
  577|  29.4k|    UINT64_C(4061136640),	// VABDsv4i16
  578|  29.4k|    UINT64_C(4062185280),	// VABDsv4i32
  579|  29.4k|    UINT64_C(4061136704),	// VABDsv8i16
  580|  29.4k|    UINT64_C(4060088064),	// VABDsv8i8
  581|  29.4k|    UINT64_C(4076865344),	// VABDuv16i8
  582|  29.4k|    UINT64_C(4078962432),	// VABDuv2i32
  583|  29.4k|    UINT64_C(4077913856),	// VABDuv4i16
  584|  29.4k|    UINT64_C(4078962496),	// VABDuv4i32
  585|  29.4k|    UINT64_C(4077913920),	// VABDuv8i16
  586|  29.4k|    UINT64_C(4076865280),	// VABDuv8i8
  587|  29.4k|    UINT64_C(246418368),	// VABSD
  588|  29.4k|    UINT64_C(246417856),	// VABSH
  589|  29.4k|    UINT64_C(246418112),	// VABSS
  590|  29.4k|    UINT64_C(4088989440),	// VABSfd
  591|  29.4k|    UINT64_C(4088989504),	// VABSfq
  592|  29.4k|    UINT64_C(4088727296),	// VABShd
  593|  29.4k|    UINT64_C(4088727360),	// VABShq
  594|  29.4k|    UINT64_C(4088464192),	// VABSv16i8
  595|  29.4k|    UINT64_C(4088988416),	// VABSv2i32
  596|  29.4k|    UINT64_C(4088726272),	// VABSv4i16
  597|  29.4k|    UINT64_C(4088988480),	// VABSv4i32
  598|  29.4k|    UINT64_C(4088726336),	// VABSv8i16
  599|  29.4k|    UINT64_C(4088464128),	// VABSv8i8
  600|  29.4k|    UINT64_C(4076867088),	// VACGEfd
  601|  29.4k|    UINT64_C(4076867152),	// VACGEfq
  602|  29.4k|    UINT64_C(4077915664),	// VACGEhd
  603|  29.4k|    UINT64_C(4077915728),	// VACGEhq
  604|  29.4k|    UINT64_C(4078964240),	// VACGTfd
  605|  29.4k|    UINT64_C(4078964304),	// VACGTfq
  606|  29.4k|    UINT64_C(4080012816),	// VACGThd
  607|  29.4k|    UINT64_C(4080012880),	// VACGThq
  608|  29.4k|    UINT64_C(238029568),	// VADDD
  609|  29.4k|    UINT64_C(238029056),	// VADDH
  610|  29.4k|    UINT64_C(4070573056),	// VADDHNv2i32
  611|  29.4k|    UINT64_C(4069524480),	// VADDHNv4i16
  612|  29.4k|    UINT64_C(4068475904),	// VADDHNv8i8
  613|  29.4k|    UINT64_C(4070572032),	// VADDLsv2i64
  614|  29.4k|    UINT64_C(4069523456),	// VADDLsv4i32
  615|  29.4k|    UINT64_C(4068474880),	// VADDLsv8i16
  616|  29.4k|    UINT64_C(4087349248),	// VADDLuv2i64
  617|  29.4k|    UINT64_C(4086300672),	// VADDLuv4i32
  618|  29.4k|    UINT64_C(4085252096),	// VADDLuv8i16
  619|  29.4k|    UINT64_C(238029312),	// VADDS
  620|  29.4k|    UINT64_C(4070572288),	// VADDWsv2i64
  621|  29.4k|    UINT64_C(4069523712),	// VADDWsv4i32
  622|  29.4k|    UINT64_C(4068475136),	// VADDWsv8i16
  623|  29.4k|    UINT64_C(4087349504),	// VADDWuv2i64
  624|  29.4k|    UINT64_C(4086300928),	// VADDWuv4i32
  625|  29.4k|    UINT64_C(4085252352),	// VADDWuv8i16
  626|  29.4k|    UINT64_C(4060089600),	// VADDfd
  627|  29.4k|    UINT64_C(4060089664),	// VADDfq
  628|  29.4k|    UINT64_C(4061138176),	// VADDhd
  629|  29.4k|    UINT64_C(4061138240),	// VADDhq
  630|  29.4k|    UINT64_C(4060088384),	// VADDv16i8
  631|  29.4k|    UINT64_C(4063234048),	// VADDv1i64
  632|  29.4k|    UINT64_C(4062185472),	// VADDv2i32
  633|  29.4k|    UINT64_C(4063234112),	// VADDv2i64
  634|  29.4k|    UINT64_C(4061136896),	// VADDv4i16
  635|  29.4k|    UINT64_C(4062185536),	// VADDv4i32
  636|  29.4k|    UINT64_C(4061136960),	// VADDv8i16
  637|  29.4k|    UINT64_C(4060088320),	// VADDv8i8
  638|  29.4k|    UINT64_C(4060086544),	// VANDd
  639|  29.4k|    UINT64_C(4060086608),	// VANDq
  640|  29.4k|    UINT64_C(4061135120),	// VBICd
  641|  29.4k|    UINT64_C(4068475184),	// VBICiv2i32
  642|  29.4k|    UINT64_C(4068477232),	// VBICiv4i16
  643|  29.4k|    UINT64_C(4068475248),	// VBICiv4i32
  644|  29.4k|    UINT64_C(4068477296),	// VBICiv8i16
  645|  29.4k|    UINT64_C(4061135184),	// VBICq
  646|  29.4k|    UINT64_C(4080009488),	// VBIFd
  647|  29.4k|    UINT64_C(4080009552),	// VBIFq
  648|  29.4k|    UINT64_C(4078960912),	// VBITd
  649|  29.4k|    UINT64_C(4078960976),	// VBITq
  650|  29.4k|    UINT64_C(4077912336),	// VBSLd
  651|  29.4k|    UINT64_C(4077912400),	// VBSLq
  652|  29.4k|    UINT64_C(4060089856),	// VCEQfd
  653|  29.4k|    UINT64_C(4060089920),	// VCEQfq
  654|  29.4k|    UINT64_C(4061138432),	// VCEQhd
  655|  29.4k|    UINT64_C(4061138496),	// VCEQhq
  656|  29.4k|    UINT64_C(4076865616),	// VCEQv16i8
  657|  29.4k|    UINT64_C(4078962704),	// VCEQv2i32
  658|  29.4k|    UINT64_C(4077914128),	// VCEQv4i16
  659|  29.4k|    UINT64_C(4078962768),	// VCEQv4i32
  660|  29.4k|    UINT64_C(4077914192),	// VCEQv8i16
  661|  29.4k|    UINT64_C(4076865552),	// VCEQv8i8
  662|  29.4k|    UINT64_C(4088463680),	// VCEQzv16i8
  663|  29.4k|    UINT64_C(4088988928),	// VCEQzv2f32
  664|  29.4k|    UINT64_C(4088987904),	// VCEQzv2i32
  665|  29.4k|    UINT64_C(4088726784),	// VCEQzv4f16
  666|  29.4k|    UINT64_C(4088988992),	// VCEQzv4f32
  667|  29.4k|    UINT64_C(4088725760),	// VCEQzv4i16
  668|  29.4k|    UINT64_C(4088987968),	// VCEQzv4i32
  669|  29.4k|    UINT64_C(4088726848),	// VCEQzv8f16
  670|  29.4k|    UINT64_C(4088725824),	// VCEQzv8i16
  671|  29.4k|    UINT64_C(4088463616),	// VCEQzv8i8
  672|  29.4k|    UINT64_C(4076867072),	// VCGEfd
  673|  29.4k|    UINT64_C(4076867136),	// VCGEfq
  674|  29.4k|    UINT64_C(4077915648),	// VCGEhd
  675|  29.4k|    UINT64_C(4077915712),	// VCGEhq
  676|  29.4k|    UINT64_C(4060087120),	// VCGEsv16i8
  677|  29.4k|    UINT64_C(4062184208),	// VCGEsv2i32
  678|  29.4k|    UINT64_C(4061135632),	// VCGEsv4i16
  679|  29.4k|    UINT64_C(4062184272),	// VCGEsv4i32
  680|  29.4k|    UINT64_C(4061135696),	// VCGEsv8i16
  681|  29.4k|    UINT64_C(4060087056),	// VCGEsv8i8
  682|  29.4k|    UINT64_C(4076864336),	// VCGEuv16i8
  683|  29.4k|    UINT64_C(4078961424),	// VCGEuv2i32
  684|  29.4k|    UINT64_C(4077912848),	// VCGEuv4i16
  685|  29.4k|    UINT64_C(4078961488),	// VCGEuv4i32
  686|  29.4k|    UINT64_C(4077912912),	// VCGEuv8i16
  687|  29.4k|    UINT64_C(4076864272),	// VCGEuv8i8
  688|  29.4k|    UINT64_C(4088463552),	// VCGEzv16i8
  689|  29.4k|    UINT64_C(4088988800),	// VCGEzv2f32
  690|  29.4k|    UINT64_C(4088987776),	// VCGEzv2i32
  691|  29.4k|    UINT64_C(4088726656),	// VCGEzv4f16
  692|  29.4k|    UINT64_C(4088988864),	// VCGEzv4f32
  693|  29.4k|    UINT64_C(4088725632),	// VCGEzv4i16
  694|  29.4k|    UINT64_C(4088987840),	// VCGEzv4i32
  695|  29.4k|    UINT64_C(4088726720),	// VCGEzv8f16
  696|  29.4k|    UINT64_C(4088725696),	// VCGEzv8i16
  697|  29.4k|    UINT64_C(4088463488),	// VCGEzv8i8
  698|  29.4k|    UINT64_C(4078964224),	// VCGTfd
  699|  29.4k|    UINT64_C(4078964288),	// VCGTfq
  700|  29.4k|    UINT64_C(4080012800),	// VCGThd
  701|  29.4k|    UINT64_C(4080012864),	// VCGThq
  702|  29.4k|    UINT64_C(4060087104),	// VCGTsv16i8
  703|  29.4k|    UINT64_C(4062184192),	// VCGTsv2i32
  704|  29.4k|    UINT64_C(4061135616),	// VCGTsv4i16
  705|  29.4k|    UINT64_C(4062184256),	// VCGTsv4i32
  706|  29.4k|    UINT64_C(4061135680),	// VCGTsv8i16
  707|  29.4k|    UINT64_C(4060087040),	// VCGTsv8i8
  708|  29.4k|    UINT64_C(4076864320),	// VCGTuv16i8
  709|  29.4k|    UINT64_C(4078961408),	// VCGTuv2i32
  710|  29.4k|    UINT64_C(4077912832),	// VCGTuv4i16
  711|  29.4k|    UINT64_C(4078961472),	// VCGTuv4i32
  712|  29.4k|    UINT64_C(4077912896),	// VCGTuv8i16
  713|  29.4k|    UINT64_C(4076864256),	// VCGTuv8i8
  714|  29.4k|    UINT64_C(4088463424),	// VCGTzv16i8
  715|  29.4k|    UINT64_C(4088988672),	// VCGTzv2f32
  716|  29.4k|    UINT64_C(4088987648),	// VCGTzv2i32
  717|  29.4k|    UINT64_C(4088726528),	// VCGTzv4f16
  718|  29.4k|    UINT64_C(4088988736),	// VCGTzv4f32
  719|  29.4k|    UINT64_C(4088725504),	// VCGTzv4i16
  720|  29.4k|    UINT64_C(4088987712),	// VCGTzv4i32
  721|  29.4k|    UINT64_C(4088726592),	// VCGTzv8f16
  722|  29.4k|    UINT64_C(4088725568),	// VCGTzv8i16
  723|  29.4k|    UINT64_C(4088463360),	// VCGTzv8i8
  724|  29.4k|    UINT64_C(4088463808),	// VCLEzv16i8
  725|  29.4k|    UINT64_C(4088989056),	// VCLEzv2f32
  726|  29.4k|    UINT64_C(4088988032),	// VCLEzv2i32
  727|  29.4k|    UINT64_C(4088726912),	// VCLEzv4f16
  728|  29.4k|    UINT64_C(4088989120),	// VCLEzv4f32
  729|  29.4k|    UINT64_C(4088725888),	// VCLEzv4i16
  730|  29.4k|    UINT64_C(4088988096),	// VCLEzv4i32
  731|  29.4k|    UINT64_C(4088726976),	// VCLEzv8f16
  732|  29.4k|    UINT64_C(4088725952),	// VCLEzv8i16
  733|  29.4k|    UINT64_C(4088463744),	// VCLEzv8i8
  734|  29.4k|    UINT64_C(4088398912),	// VCLSv16i8
  735|  29.4k|    UINT64_C(4088923136),	// VCLSv2i32
  736|  29.4k|    UINT64_C(4088660992),	// VCLSv4i16
  737|  29.4k|    UINT64_C(4088923200),	// VCLSv4i32
  738|  29.4k|    UINT64_C(4088661056),	// VCLSv8i16
  739|  29.4k|    UINT64_C(4088398848),	// VCLSv8i8
  740|  29.4k|    UINT64_C(4088463936),	// VCLTzv16i8
  741|  29.4k|    UINT64_C(4088989184),	// VCLTzv2f32
  742|  29.4k|    UINT64_C(4088988160),	// VCLTzv2i32
  743|  29.4k|    UINT64_C(4088727040),	// VCLTzv4f16
  744|  29.4k|    UINT64_C(4088989248),	// VCLTzv4f32
  745|  29.4k|    UINT64_C(4088726016),	// VCLTzv4i16
  746|  29.4k|    UINT64_C(4088988224),	// VCLTzv4i32
  747|  29.4k|    UINT64_C(4088727104),	// VCLTzv8f16
  748|  29.4k|    UINT64_C(4088726080),	// VCLTzv8i16
  749|  29.4k|    UINT64_C(4088463872),	// VCLTzv8i8
  750|  29.4k|    UINT64_C(4088399040),	// VCLZv16i8
  751|  29.4k|    UINT64_C(4088923264),	// VCLZv2i32
  752|  29.4k|    UINT64_C(4088661120),	// VCLZv4i16
  753|  29.4k|    UINT64_C(4088923328),	// VCLZv4i32
  754|  29.4k|    UINT64_C(4088661184),	// VCLZv8i16
  755|  29.4k|    UINT64_C(4088398976),	// VCLZv8i8
  756|  29.4k|    UINT64_C(246680384),	// VCMPD
  757|  29.4k|    UINT64_C(246680512),	// VCMPED
  758|  29.4k|    UINT64_C(246680000),	// VCMPEH
  759|  29.4k|    UINT64_C(246680256),	// VCMPES
  760|  29.4k|    UINT64_C(246746048),	// VCMPEZD
  761|  29.4k|    UINT64_C(246745536),	// VCMPEZH
  762|  29.4k|    UINT64_C(246745792),	// VCMPEZS
  763|  29.4k|    UINT64_C(246679872),	// VCMPH
  764|  29.4k|    UINT64_C(246680128),	// VCMPS
  765|  29.4k|    UINT64_C(246745920),	// VCMPZD
  766|  29.4k|    UINT64_C(246745408),	// VCMPZH
  767|  29.4k|    UINT64_C(246745664),	// VCMPZS
  768|  29.4k|    UINT64_C(4088399104),	// VCNTd
  769|  29.4k|    UINT64_C(4088399168),	// VCNTq
  770|  29.4k|    UINT64_C(4089118720),	// VCVTANSDf
  771|  29.4k|    UINT64_C(4088856576),	// VCVTANSDh
  772|  29.4k|    UINT64_C(4089118784),	// VCVTANSQf
  773|  29.4k|    UINT64_C(4088856640),	// VCVTANSQh
  774|  29.4k|    UINT64_C(4089118848),	// VCVTANUDf
  775|  29.4k|    UINT64_C(4088856704),	// VCVTANUDh
  776|  29.4k|    UINT64_C(4089118912),	// VCVTANUQf
  777|  29.4k|    UINT64_C(4088856768),	// VCVTANUQh
  778|  29.4k|    UINT64_C(4273736640),	// VCVTASD
  779|  29.4k|    UINT64_C(4273736128),	// VCVTASH
  780|  29.4k|    UINT64_C(4273736384),	// VCVTASS
  781|  29.4k|    UINT64_C(4273736512),	// VCVTAUD
  782|  29.4k|    UINT64_C(4273736000),	// VCVTAUH
  783|  29.4k|    UINT64_C(4273736256),	// VCVTAUS
  784|  29.4k|    UINT64_C(246614848),	// VCVTBDH
  785|  29.4k|    UINT64_C(246549312),	// VCVTBHD
  786|  29.4k|    UINT64_C(246549056),	// VCVTBHS
  787|  29.4k|    UINT64_C(246614592),	// VCVTBSH
  788|  29.4k|    UINT64_C(246876864),	// VCVTDS
  789|  29.4k|    UINT64_C(4089119488),	// VCVTMNSDf
  790|  29.4k|    UINT64_C(4088857344),	// VCVTMNSDh
  791|  29.4k|    UINT64_C(4089119552),	// VCVTMNSQf
  792|  29.4k|    UINT64_C(4088857408),	// VCVTMNSQh
  793|  29.4k|    UINT64_C(4089119616),	// VCVTMNUDf
  794|  29.4k|    UINT64_C(4088857472),	// VCVTMNUDh
  795|  29.4k|    UINT64_C(4089119680),	// VCVTMNUQf
  796|  29.4k|    UINT64_C(4088857536),	// VCVTMNUQh
  797|  29.4k|    UINT64_C(4273933248),	// VCVTMSD
  798|  29.4k|    UINT64_C(4273932736),	// VCVTMSH
  799|  29.4k|    UINT64_C(4273932992),	// VCVTMSS
  800|  29.4k|    UINT64_C(4273933120),	// VCVTMUD
  801|  29.4k|    UINT64_C(4273932608),	// VCVTMUH
  802|  29.4k|    UINT64_C(4273932864),	// VCVTMUS
  803|  29.4k|    UINT64_C(4089118976),	// VCVTNNSDf
  804|  29.4k|    UINT64_C(4088856832),	// VCVTNNSDh
  805|  29.4k|    UINT64_C(4089119040),	// VCVTNNSQf
  806|  29.4k|    UINT64_C(4088856896),	// VCVTNNSQh
  807|  29.4k|    UINT64_C(4089119104),	// VCVTNNUDf
  808|  29.4k|    UINT64_C(4088856960),	// VCVTNNUDh
  809|  29.4k|    UINT64_C(4089119168),	// VCVTNNUQf
  810|  29.4k|    UINT64_C(4088857024),	// VCVTNNUQh
  811|  29.4k|    UINT64_C(4273802176),	// VCVTNSD
  812|  29.4k|    UINT64_C(4273801664),	// VCVTNSH
  813|  29.4k|    UINT64_C(4273801920),	// VCVTNSS
  814|  29.4k|    UINT64_C(4273802048),	// VCVTNUD
  815|  29.4k|    UINT64_C(4273801536),	// VCVTNUH
  816|  29.4k|    UINT64_C(4273801792),	// VCVTNUS
  817|  29.4k|    UINT64_C(4089119232),	// VCVTPNSDf
  818|  29.4k|    UINT64_C(4088857088),	// VCVTPNSDh
  819|  29.4k|    UINT64_C(4089119296),	// VCVTPNSQf
  820|  29.4k|    UINT64_C(4088857152),	// VCVTPNSQh
  821|  29.4k|    UINT64_C(4089119360),	// VCVTPNUDf
  822|  29.4k|    UINT64_C(4088857216),	// VCVTPNUDh
  823|  29.4k|    UINT64_C(4089119424),	// VCVTPNUQf
  824|  29.4k|    UINT64_C(4088857280),	// VCVTPNUQh
  825|  29.4k|    UINT64_C(4273867712),	// VCVTPSD
  826|  29.4k|    UINT64_C(4273867200),	// VCVTPSH
  827|  29.4k|    UINT64_C(4273867456),	// VCVTPSS
  828|  29.4k|    UINT64_C(4273867584),	// VCVTPUD
  829|  29.4k|    UINT64_C(4273867072),	// VCVTPUH
  830|  29.4k|    UINT64_C(4273867328),	// VCVTPUS
  831|  29.4k|    UINT64_C(246877120),	// VCVTSD
  832|  29.4k|    UINT64_C(246614976),	// VCVTTDH
  833|  29.4k|    UINT64_C(246549440),	// VCVTTHD
  834|  29.4k|    UINT64_C(246549184),	// VCVTTHS
  835|  29.4k|    UINT64_C(246614720),	// VCVTTSH
  836|  29.4k|    UINT64_C(4088792576),	// VCVTf2h
  837|  29.4k|    UINT64_C(4089120512),	// VCVTf2sd
  838|  29.4k|    UINT64_C(4089120576),	// VCVTf2sq
  839|  29.4k|    UINT64_C(4089120640),	// VCVTf2ud
  840|  29.4k|    UINT64_C(4089120704),	// VCVTf2uq
  841|  29.4k|    UINT64_C(4068478736),	// VCVTf2xsd
  842|  29.4k|    UINT64_C(4068478800),	// VCVTf2xsq
  843|  29.4k|    UINT64_C(4085255952),	// VCVTf2xud
  844|  29.4k|    UINT64_C(4085256016),	// VCVTf2xuq
  845|  29.4k|    UINT64_C(4088792832),	// VCVTh2f
  846|  29.4k|    UINT64_C(4088858368),	// VCVTh2sd
  847|  29.4k|    UINT64_C(4088858432),	// VCVTh2sq
  848|  29.4k|    UINT64_C(4088858496),	// VCVTh2ud
  849|  29.4k|    UINT64_C(4088858560),	// VCVTh2uq
  850|  29.4k|    UINT64_C(4068478224),	// VCVTh2xsd
  851|  29.4k|    UINT64_C(4068478288),	// VCVTh2xsq
  852|  29.4k|    UINT64_C(4085255440),	// VCVTh2xud
  853|  29.4k|    UINT64_C(4085255504),	// VCVTh2xuq
  854|  29.4k|    UINT64_C(4089120256),	// VCVTs2fd
  855|  29.4k|    UINT64_C(4089120320),	// VCVTs2fq
  856|  29.4k|    UINT64_C(4088858112),	// VCVTs2hd
  857|  29.4k|    UINT64_C(4088858176),	// VCVTs2hq
  858|  29.4k|    UINT64_C(4089120384),	// VCVTu2fd
  859|  29.4k|    UINT64_C(4089120448),	// VCVTu2fq
  860|  29.4k|    UINT64_C(4088858240),	// VCVTu2hd
  861|  29.4k|    UINT64_C(4088858304),	// VCVTu2hq
  862|  29.4k|    UINT64_C(4068478480),	// VCVTxs2fd
  863|  29.4k|    UINT64_C(4068478544),	// VCVTxs2fq
  864|  29.4k|    UINT64_C(4068477968),	// VCVTxs2hd
  865|  29.4k|    UINT64_C(4068478032),	// VCVTxs2hq
  866|  29.4k|    UINT64_C(4085255696),	// VCVTxu2fd
  867|  29.4k|    UINT64_C(4085255760),	// VCVTxu2fq
  868|  29.4k|    UINT64_C(4085255184),	// VCVTxu2hd
  869|  29.4k|    UINT64_C(4085255248),	// VCVTxu2hq
  870|  29.4k|    UINT64_C(243272448),	// VDIVD
  871|  29.4k|    UINT64_C(243271936),	// VDIVH
  872|  29.4k|    UINT64_C(243272192),	// VDIVS
  873|  29.4k|    UINT64_C(243272496),	// VDUP16d
  874|  29.4k|    UINT64_C(245369648),	// VDUP16q
  875|  29.4k|    UINT64_C(243272464),	// VDUP32d
  876|  29.4k|    UINT64_C(245369616),	// VDUP32q
  877|  29.4k|    UINT64_C(247466768),	// VDUP8d
  878|  29.4k|    UINT64_C(249563920),	// VDUP8q
  879|  29.4k|    UINT64_C(4088531968),	// VDUPLN16d
  880|  29.4k|    UINT64_C(4088532032),	// VDUPLN16q
  881|  29.4k|    UINT64_C(4088663040),	// VDUPLN32d
  882|  29.4k|    UINT64_C(4088663104),	// VDUPLN32q
  883|  29.4k|    UINT64_C(4088466432),	// VDUPLN8d
  884|  29.4k|    UINT64_C(4088466496),	// VDUPLN8q
  885|  29.4k|    UINT64_C(4076863760),	// VEORd
  886|  29.4k|    UINT64_C(4076863824),	// VEORq
  887|  29.4k|    UINT64_C(4071620608),	// VEXTd16
  888|  29.4k|    UINT64_C(4071620608),	// VEXTd32
  889|  29.4k|    UINT64_C(4071620608),	// VEXTd8
  890|  29.4k|    UINT64_C(4071620672),	// VEXTq16
  891|  29.4k|    UINT64_C(4071620672),	// VEXTq32
  892|  29.4k|    UINT64_C(4071620672),	// VEXTq64
  893|  29.4k|    UINT64_C(4071620672),	// VEXTq8
  894|  29.4k|    UINT64_C(245369600),	// VFMAD
  895|  29.4k|    UINT64_C(245369088),	// VFMAH
  896|  29.4k|    UINT64_C(245369344),	// VFMAS
  897|  29.4k|    UINT64_C(4060089360),	// VFMAfd
  898|  29.4k|    UINT64_C(4060089424),	// VFMAfq
  899|  29.4k|    UINT64_C(4061137936),	// VFMAhd
  900|  29.4k|    UINT64_C(4061138000),	// VFMAhq
  901|  29.4k|    UINT64_C(245369664),	// VFMSD
  902|  29.4k|    UINT64_C(245369152),	// VFMSH
  903|  29.4k|    UINT64_C(245369408),	// VFMSS
  904|  29.4k|    UINT64_C(4062186512),	// VFMSfd
  905|  29.4k|    UINT64_C(4062186576),	// VFMSfq
  906|  29.4k|    UINT64_C(4063235088),	// VFMShd
  907|  29.4k|    UINT64_C(4063235152),	// VFMShq
  908|  29.4k|    UINT64_C(244321088),	// VFNMAD
  909|  29.4k|    UINT64_C(244320576),	// VFNMAH
  910|  29.4k|    UINT64_C(244320832),	// VFNMAS
  911|  29.4k|    UINT64_C(244321024),	// VFNMSD
  912|  29.4k|    UINT64_C(244320512),	// VFNMSH
  913|  29.4k|    UINT64_C(244320768),	// VFNMSS
  914|  29.4k|    UINT64_C(235932432),	// VGETLNi32
  915|  29.4k|    UINT64_C(235932464),	// VGETLNs16
  916|  29.4k|    UINT64_C(240126736),	// VGETLNs8
  917|  29.4k|    UINT64_C(244321072),	// VGETLNu16
  918|  29.4k|    UINT64_C(248515344),	// VGETLNu8
  919|  29.4k|    UINT64_C(4060086336),	// VHADDsv16i8
  920|  29.4k|    UINT64_C(4062183424),	// VHADDsv2i32
  921|  29.4k|    UINT64_C(4061134848),	// VHADDsv4i16
  922|  29.4k|    UINT64_C(4062183488),	// VHADDsv4i32
  923|  29.4k|    UINT64_C(4061134912),	// VHADDsv8i16
  924|  29.4k|    UINT64_C(4060086272),	// VHADDsv8i8
  925|  29.4k|    UINT64_C(4076863552),	// VHADDuv16i8
  926|  29.4k|    UINT64_C(4078960640),	// VHADDuv2i32
  927|  29.4k|    UINT64_C(4077912064),	// VHADDuv4i16
  928|  29.4k|    UINT64_C(4078960704),	// VHADDuv4i32
  929|  29.4k|    UINT64_C(4077912128),	// VHADDuv8i16
  930|  29.4k|    UINT64_C(4076863488),	// VHADDuv8i8
  931|  29.4k|    UINT64_C(4060086848),	// VHSUBsv16i8
  932|  29.4k|    UINT64_C(4062183936),	// VHSUBsv2i32
  933|  29.4k|    UINT64_C(4061135360),	// VHSUBsv4i16
  934|  29.4k|    UINT64_C(4062184000),	// VHSUBsv4i32
  935|  29.4k|    UINT64_C(4061135424),	// VHSUBsv8i16
  936|  29.4k|    UINT64_C(4060086784),	// VHSUBsv8i8
  937|  29.4k|    UINT64_C(4076864064),	// VHSUBuv16i8
  938|  29.4k|    UINT64_C(4078961152),	// VHSUBuv2i32
  939|  29.4k|    UINT64_C(4077912576),	// VHSUBuv4i16
  940|  29.4k|    UINT64_C(4078961216),	// VHSUBuv4i32
  941|  29.4k|    UINT64_C(4077912640),	// VHSUBuv8i16
  942|  29.4k|    UINT64_C(4076864000),	// VHSUBuv8i8
  943|  29.4k|    UINT64_C(4272949952),	// VINSH
  944|  29.4k|    UINT64_C(4104129615),	// VLD1DUPd16
  945|  29.4k|    UINT64_C(4104129613),	// VLD1DUPd16wb_fixed
  946|  29.4k|    UINT64_C(4104129600),	// VLD1DUPd16wb_register
  947|  29.4k|    UINT64_C(4104129679),	// VLD1DUPd32
  948|  29.4k|    UINT64_C(4104129677),	// VLD1DUPd32wb_fixed
  949|  29.4k|    UINT64_C(4104129664),	// VLD1DUPd32wb_register
  950|  29.4k|    UINT64_C(4104129551),	// VLD1DUPd8
  951|  29.4k|    UINT64_C(4104129549),	// VLD1DUPd8wb_fixed
  952|  29.4k|    UINT64_C(4104129536),	// VLD1DUPd8wb_register
  953|  29.4k|    UINT64_C(4104129647),	// VLD1DUPq16
  954|  29.4k|    UINT64_C(4104129645),	// VLD1DUPq16wb_fixed
  955|  29.4k|    UINT64_C(4104129632),	// VLD1DUPq16wb_register
  956|  29.4k|    UINT64_C(4104129711),	// VLD1DUPq32
  957|  29.4k|    UINT64_C(4104129709),	// VLD1DUPq32wb_fixed
  958|  29.4k|    UINT64_C(4104129696),	// VLD1DUPq32wb_register
  959|  29.4k|    UINT64_C(4104129583),	// VLD1DUPq8
  960|  29.4k|    UINT64_C(4104129581),	// VLD1DUPq8wb_fixed
  961|  29.4k|    UINT64_C(4104129568),	// VLD1DUPq8wb_register
  962|  29.4k|    UINT64_C(4104127503),	// VLD1LNd16
  963|  29.4k|    UINT64_C(4104127488),	// VLD1LNd16_UPD
  964|  29.4k|    UINT64_C(4104128527),	// VLD1LNd32
  965|  29.4k|    UINT64_C(4104128512),	// VLD1LNd32_UPD
  966|  29.4k|    UINT64_C(4104126479),	// VLD1LNd8
  967|  29.4k|    UINT64_C(4104126464),	// VLD1LNd8_UPD
  968|  29.4k|    UINT64_C(0),
  969|  29.4k|    UINT64_C(0),
  970|  29.4k|    UINT64_C(0),
  971|  29.4k|    UINT64_C(0),
  972|  29.4k|    UINT64_C(0),
  973|  29.4k|    UINT64_C(0),
  974|  29.4k|    UINT64_C(0),
  975|  29.4k|    UINT64_C(0),
  976|  29.4k|    UINT64_C(0),
  977|  29.4k|    UINT64_C(0),	// VLD1LNq16Pseudo
  978|  29.4k|    UINT64_C(0),	// VLD1LNq16Pseudo_UPD
  979|  29.4k|    UINT64_C(0),	// VLD1LNq32Pseudo
  980|  29.4k|    UINT64_C(0),	// VLD1LNq32Pseudo_UPD
  981|  29.4k|    UINT64_C(0),	// VLD1LNq8Pseudo
  982|  29.4k|    UINT64_C(0),	// VLD1LNq8Pseudo_UPD
  983|  29.4k|    UINT64_C(4095739727),	// VLD1d16
  984|  29.4k|    UINT64_C(4095738447),	// VLD1d16Q
  985|  29.4k|    UINT64_C(4095738445),	// VLD1d16Qwb_fixed
  986|  29.4k|    UINT64_C(4095738432),	// VLD1d16Qwb_register
  987|  29.4k|    UINT64_C(4095739471),	// VLD1d16T
  988|  29.4k|    UINT64_C(4095739469),	// VLD1d16Twb_fixed
  989|  29.4k|    UINT64_C(4095739456),	// VLD1d16Twb_register
  990|  29.4k|    UINT64_C(4095739725),	// VLD1d16wb_fixed
  991|  29.4k|    UINT64_C(4095739712),	// VLD1d16wb_register
  992|  29.4k|    UINT64_C(4095739791),	// VLD1d32
  993|  29.4k|    UINT64_C(4095738511),	// VLD1d32Q
  994|  29.4k|    UINT64_C(4095738509),	// VLD1d32Qwb_fixed
  995|  29.4k|    UINT64_C(4095738496),	// VLD1d32Qwb_register
  996|  29.4k|    UINT64_C(4095739535),	// VLD1d32T
  997|  29.4k|    UINT64_C(4095739533),	// VLD1d32Twb_fixed
  998|  29.4k|    UINT64_C(4095739520),	// VLD1d32Twb_register
  999|  29.4k|    UINT64_C(4095739789),	// VLD1d32wb_fixed
 1000|  29.4k|    UINT64_C(4095739776),	// VLD1d32wb_register
 1001|  29.4k|    UINT64_C(4095739855),	// VLD1d64
 1002|  29.4k|    UINT64_C(4095738575),	// VLD1d64Q
 1003|  29.4k|    UINT64_C(0),	// VLD1d64QPseudo
 1004|  29.4k|    UINT64_C(0),	// VLD1d64QPseudoWB_fixed
 1005|  29.4k|    UINT64_C(0),	// VLD1d64QPseudoWB_register
 1006|  29.4k|    UINT64_C(4095738573),	// VLD1d64Qwb_fixed
 1007|  29.4k|    UINT64_C(4095738560),	// VLD1d64Qwb_register
 1008|  29.4k|    UINT64_C(4095739599),	// VLD1d64T
 1009|  29.4k|    UINT64_C(0),	// VLD1d64TPseudo
 1010|  29.4k|    UINT64_C(0),	// VLD1d64TPseudoWB_fixed
 1011|  29.4k|    UINT64_C(0),	// VLD1d64TPseudoWB_register
 1012|  29.4k|    UINT64_C(4095739597),	// VLD1d64Twb_fixed
 1013|  29.4k|    UINT64_C(4095739584),	// VLD1d64Twb_register
 1014|  29.4k|    UINT64_C(4095739853),	// VLD1d64wb_fixed
 1015|  29.4k|    UINT64_C(4095739840),	// VLD1d64wb_register
 1016|  29.4k|    UINT64_C(4095739663),	// VLD1d8
 1017|  29.4k|    UINT64_C(4095738383),	// VLD1d8Q
 1018|  29.4k|    UINT64_C(4095738381),	// VLD1d8Qwb_fixed
 1019|  29.4k|    UINT64_C(4095738368),	// VLD1d8Qwb_register
 1020|  29.4k|    UINT64_C(4095739407),	// VLD1d8T
 1021|  29.4k|    UINT64_C(4095739405),	// VLD1d8Twb_fixed
 1022|  29.4k|    UINT64_C(4095739392),	// VLD1d8Twb_register
 1023|  29.4k|    UINT64_C(4095739661),	// VLD1d8wb_fixed
 1024|  29.4k|    UINT64_C(4095739648),	// VLD1d8wb_register
 1025|  29.4k|    UINT64_C(4095740495),	// VLD1q16
 1026|  29.4k|    UINT64_C(4095740493),	// VLD1q16wb_fixed
 1027|  29.4k|    UINT64_C(4095740480),	// VLD1q16wb_register
 1028|  29.4k|    UINT64_C(4095740559),	// VLD1q32
 1029|  29.4k|    UINT64_C(4095740557),	// VLD1q32wb_fixed
 1030|  29.4k|    UINT64_C(4095740544),	// VLD1q32wb_register
 1031|  29.4k|    UINT64_C(4095740623),	// VLD1q64
 1032|  29.4k|    UINT64_C(4095740621),	// VLD1q64wb_fixed
 1033|  29.4k|    UINT64_C(4095740608),	// VLD1q64wb_register
 1034|  29.4k|    UINT64_C(4095740431),	// VLD1q8
 1035|  29.4k|    UINT64_C(4095740429),	// VLD1q8wb_fixed
 1036|  29.4k|    UINT64_C(4095740416),	// VLD1q8wb_register
 1037|  29.4k|    UINT64_C(4104129871),	// VLD2DUPd16
 1038|  29.4k|    UINT64_C(4104129869),	// VLD2DUPd16wb_fixed
 1039|  29.4k|    UINT64_C(4104129856),	// VLD2DUPd16wb_register
 1040|  29.4k|    UINT64_C(4104129903),	// VLD2DUPd16x2
 1041|  29.4k|    UINT64_C(4104129901),	// VLD2DUPd16x2wb_fixed
 1042|  29.4k|    UINT64_C(4104129888),	// VLD2DUPd16x2wb_register
 1043|  29.4k|    UINT64_C(4104129935),	// VLD2DUPd32
 1044|  29.4k|    UINT64_C(4104129933),	// VLD2DUPd32wb_fixed
 1045|  29.4k|    UINT64_C(4104129920),	// VLD2DUPd32wb_register
 1046|  29.4k|    UINT64_C(4104129967),	// VLD2DUPd32x2
 1047|  29.4k|    UINT64_C(4104129965),	// VLD2DUPd32x2wb_fixed
 1048|  29.4k|    UINT64_C(4104129952),	// VLD2DUPd32x2wb_register
 1049|  29.4k|    UINT64_C(4104129807),	// VLD2DUPd8
 1050|  29.4k|    UINT64_C(4104129805),	// VLD2DUPd8wb_fixed
 1051|  29.4k|    UINT64_C(4104129792),	// VLD2DUPd8wb_register
 1052|  29.4k|    UINT64_C(4104129839),	// VLD2DUPd8x2
 1053|  29.4k|    UINT64_C(4104129837),	// VLD2DUPd8x2wb_fixed
 1054|  29.4k|    UINT64_C(4104129824),	// VLD2DUPd8x2wb_register
 1055|  29.4k|    UINT64_C(4104127759),	// VLD2LNd16
 1056|  29.4k|    UINT64_C(0),	// VLD2LNd16Pseudo
 1057|  29.4k|    UINT64_C(0),	// VLD2LNd16Pseudo_UPD
 1058|  29.4k|    UINT64_C(4104127744),	// VLD2LNd16_UPD
 1059|  29.4k|    UINT64_C(4104128783),	// VLD2LNd32
 1060|  29.4k|    UINT64_C(0),	// VLD2LNd32Pseudo
 1061|  29.4k|    UINT64_C(0),	// VLD2LNd32Pseudo_UPD
 1062|  29.4k|    UINT64_C(4104128768),	// VLD2LNd32_UPD
 1063|  29.4k|    UINT64_C(4104126735),	// VLD2LNd8
 1064|  29.4k|    UINT64_C(0),	// VLD2LNd8Pseudo
 1065|  29.4k|    UINT64_C(0),	// VLD2LNd8Pseudo_UPD
 1066|  29.4k|    UINT64_C(4104126720),	// VLD2LNd8_UPD
 1067|  29.4k|    UINT64_C(0),
 1068|  29.4k|    UINT64_C(0),
 1069|  29.4k|    UINT64_C(0),
 1070|  29.4k|    UINT64_C(0),
 1071|  29.4k|    UINT64_C(0),
 1072|  29.4k|    UINT64_C(0),
 1073|  29.4k|    UINT64_C(0),
 1074|  29.4k|    UINT64_C(0),
 1075|  29.4k|    UINT64_C(0),
 1076|  29.4k|    UINT64_C(4104127791),	// VLD2LNq16
 1077|  29.4k|    UINT64_C(0),	// VLD2LNq16Pseudo
 1078|  29.4k|    UINT64_C(0),	// VLD2LNq16Pseudo_UPD
 1079|  29.4k|    UINT64_C(4104127776),	// VLD2LNq16_UPD
 1080|  29.4k|    UINT64_C(4104128847),	// VLD2LNq32
 1081|  29.4k|    UINT64_C(0),	// VLD2LNq32Pseudo
 1082|  29.4k|    UINT64_C(0),	// VLD2LNq32Pseudo_UPD
 1083|  29.4k|    UINT64_C(4104128832),	// VLD2LNq32_UPD
 1084|  29.4k|    UINT64_C(0),
 1085|  29.4k|    UINT64_C(0),
 1086|  29.4k|    UINT64_C(0),
 1087|  29.4k|    UINT64_C(0),
 1088|  29.4k|    UINT64_C(0),
 1089|  29.4k|    UINT64_C(0),
 1090|  29.4k|    UINT64_C(4095740239),	// VLD2b16
 1091|  29.4k|    UINT64_C(4095740237),	// VLD2b16wb_fixed
 1092|  29.4k|    UINT64_C(4095740224),	// VLD2b16wb_register
 1093|  29.4k|    UINT64_C(4095740303),	// VLD2b32
 1094|  29.4k|    UINT64_C(4095740301),	// VLD2b32wb_fixed
 1095|  29.4k|    UINT64_C(4095740288),	// VLD2b32wb_register
 1096|  29.4k|    UINT64_C(4095740175),	// VLD2b8
 1097|  29.4k|    UINT64_C(4095740173),	// VLD2b8wb_fixed
 1098|  29.4k|    UINT64_C(4095740160),	// VLD2b8wb_register
 1099|  29.4k|    UINT64_C(4095739983),	// VLD2d16
 1100|  29.4k|    UINT64_C(4095739981),	// VLD2d16wb_fixed
 1101|  29.4k|    UINT64_C(4095739968),	// VLD2d16wb_register
 1102|  29.4k|    UINT64_C(4095740047),	// VLD2d32
 1103|  29.4k|    UINT64_C(4095740045),	// VLD2d32wb_fixed
 1104|  29.4k|    UINT64_C(4095740032),	// VLD2d32wb_register
 1105|  29.4k|    UINT64_C(4095739919),	// VLD2d8
 1106|  29.4k|    UINT64_C(4095739917),	// VLD2d8wb_fixed
 1107|  29.4k|    UINT64_C(4095739904),	// VLD2d8wb_register
 1108|  29.4k|    UINT64_C(4095738703),	// VLD2q16
 1109|  29.4k|    UINT64_C(0),	// VLD2q16Pseudo
 1110|  29.4k|    UINT64_C(0),	// VLD2q16PseudoWB_fixed
 1111|  29.4k|    UINT64_C(0),	// VLD2q16PseudoWB_register
 1112|  29.4k|    UINT64_C(4095738701),	// VLD2q16wb_fixed
 1113|  29.4k|    UINT64_C(4095738688),	// VLD2q16wb_register
 1114|  29.4k|    UINT64_C(4095738767),	// VLD2q32
 1115|  29.4k|    UINT64_C(0),	// VLD2q32Pseudo
 1116|  29.4k|    UINT64_C(0),	// VLD2q32PseudoWB_fixed
 1117|  29.4k|    UINT64_C(0),	// VLD2q32PseudoWB_register
 1118|  29.4k|    UINT64_C(4095738765),	// VLD2q32wb_fixed
 1119|  29.4k|    UINT64_C(4095738752),	// VLD2q32wb_register
 1120|  29.4k|    UINT64_C(4095738639),	// VLD2q8
 1121|  29.4k|    UINT64_C(0),	// VLD2q8Pseudo
 1122|  29.4k|    UINT64_C(0),	// VLD2q8PseudoWB_fixed
 1123|  29.4k|    UINT64_C(0),	// VLD2q8PseudoWB_register
 1124|  29.4k|    UINT64_C(4095738637),	// VLD2q8wb_fixed
 1125|  29.4k|    UINT64_C(4095738624),	// VLD2q8wb_register
 1126|  29.4k|    UINT64_C(4104130127),	// VLD3DUPd16
 1127|  29.4k|    UINT64_C(0),	// VLD3DUPd16Pseudo
 1128|  29.4k|    UINT64_C(0),	// VLD3DUPd16Pseudo_UPD
 1129|  29.4k|    UINT64_C(4104130112),	// VLD3DUPd16_UPD
 1130|  29.4k|    UINT64_C(4104130191),	// VLD3DUPd32
 1131|  29.4k|    UINT64_C(0),	// VLD3DUPd32Pseudo
 1132|  29.4k|    UINT64_C(0),	// VLD3DUPd32Pseudo_UPD
 1133|  29.4k|    UINT64_C(4104130176),	// VLD3DUPd32_UPD
 1134|  29.4k|    UINT64_C(4104130063),	// VLD3DUPd8
 1135|  29.4k|    UINT64_C(0),	// VLD3DUPd8Pseudo
 1136|  29.4k|    UINT64_C(0),	// VLD3DUPd8Pseudo_UPD
 1137|  29.4k|    UINT64_C(4104130048),	// VLD3DUPd8_UPD
 1138|  29.4k|    UINT64_C(0),
 1139|  29.4k|    UINT64_C(0),
 1140|  29.4k|    UINT64_C(0),
 1141|  29.4k|    UINT64_C(0),
 1142|  29.4k|    UINT64_C(0),
 1143|  29.4k|    UINT64_C(0),
 1144|  29.4k|    UINT64_C(0),
 1145|  29.4k|    UINT64_C(0),
 1146|  29.4k|    UINT64_C(0),
 1147|  29.4k|    UINT64_C(4104130159),	// VLD3DUPq16
 1148|  29.4k|    UINT64_C(4104130144),	// VLD3DUPq16_UPD
 1149|  29.4k|    UINT64_C(4104130223),	// VLD3DUPq32
 1150|  29.4k|    UINT64_C(4104130208),	// VLD3DUPq32_UPD
 1151|  29.4k|    UINT64_C(4104130095),	// VLD3DUPq8
 1152|  29.4k|    UINT64_C(4104130080),	// VLD3DUPq8_UPD
 1153|  29.4k|    UINT64_C(0),
 1154|  29.4k|    UINT64_C(0),
 1155|  29.4k|    UINT64_C(0),
 1156|  29.4k|    UINT64_C(0),
 1157|  29.4k|    UINT64_C(0),
 1158|  29.4k|    UINT64_C(0),
 1159|  29.4k|    UINT64_C(0),
 1160|  29.4k|    UINT64_C(0),
 1161|  29.4k|    UINT64_C(0),
 1162|  29.4k|    UINT64_C(4104128015),	// VLD3LNd16
 1163|  29.4k|    UINT64_C(0),	// VLD3LNd16Pseudo
 1164|  29.4k|    UINT64_C(0),	// VLD3LNd16Pseudo_UPD
 1165|  29.4k|    UINT64_C(4104128000),	// VLD3LNd16_UPD
 1166|  29.4k|    UINT64_C(4104129039),	// VLD3LNd32
 1167|  29.4k|    UINT64_C(0),	// VLD3LNd32Pseudo
 1168|  29.4k|    UINT64_C(0),	// VLD3LNd32Pseudo_UPD
 1169|  29.4k|    UINT64_C(4104129024),	// VLD3LNd32_UPD
 1170|  29.4k|    UINT64_C(4104126991),	// VLD3LNd8
 1171|  29.4k|    UINT64_C(0),	// VLD3LNd8Pseudo
 1172|  29.4k|    UINT64_C(0),	// VLD3LNd8Pseudo_UPD
 1173|  29.4k|    UINT64_C(4104126976),	// VLD3LNd8_UPD
 1174|  29.4k|    UINT64_C(0),
 1175|  29.4k|    UINT64_C(0),
 1176|  29.4k|    UINT64_C(0),
 1177|  29.4k|    UINT64_C(0),
 1178|  29.4k|    UINT64_C(0),
 1179|  29.4k|    UINT64_C(0),
 1180|  29.4k|    UINT64_C(0),
 1181|  29.4k|    UINT64_C(0),
 1182|  29.4k|    UINT64_C(0),
 1183|  29.4k|    UINT64_C(4104128047),	// VLD3LNq16
 1184|  29.4k|    UINT64_C(0),	// VLD3LNq16Pseudo
 1185|  29.4k|    UINT64_C(0),	// VLD3LNq16Pseudo_UPD
 1186|  29.4k|    UINT64_C(4104128032),	// VLD3LNq16_UPD
 1187|  29.4k|    UINT64_C(4104129103),	// VLD3LNq32
 1188|  29.4k|    UINT64_C(0),	// VLD3LNq32Pseudo
 1189|  29.4k|    UINT64_C(0),	// VLD3LNq32Pseudo_UPD
 1190|  29.4k|    UINT64_C(4104129088),	// VLD3LNq32_UPD
 1191|  29.4k|    UINT64_C(0),
 1192|  29.4k|    UINT64_C(0),
 1193|  29.4k|    UINT64_C(0),
 1194|  29.4k|    UINT64_C(0),
 1195|  29.4k|    UINT64_C(0),
 1196|  29.4k|    UINT64_C(0),
 1197|  29.4k|    UINT64_C(4095738959),	// VLD3d16
 1198|  29.4k|    UINT64_C(0),	// VLD3d16Pseudo
 1199|  29.4k|    UINT64_C(0),	// VLD3d16Pseudo_UPD
 1200|  29.4k|    UINT64_C(4095738944),	// VLD3d16_UPD
 1201|  29.4k|    UINT64_C(4095739023),	// VLD3d32
 1202|  29.4k|    UINT64_C(0),	// VLD3d32Pseudo
 1203|  29.4k|    UINT64_C(0),	// VLD3d32Pseudo_UPD
 1204|  29.4k|    UINT64_C(4095739008),	// VLD3d32_UPD
 1205|  29.4k|    UINT64_C(4095738895),	// VLD3d8
 1206|  29.4k|    UINT64_C(0),	// VLD3d8Pseudo
 1207|  29.4k|    UINT64_C(0),	// VLD3d8Pseudo_UPD
 1208|  29.4k|    UINT64_C(4095738880),	// VLD3d8_UPD
 1209|  29.4k|    UINT64_C(0),
 1210|  29.4k|    UINT64_C(0),
 1211|  29.4k|    UINT64_C(0),
 1212|  29.4k|    UINT64_C(0),
 1213|  29.4k|    UINT64_C(0),
 1214|  29.4k|    UINT64_C(0),
 1215|  29.4k|    UINT64_C(0),
 1216|  29.4k|    UINT64_C(0),
 1217|  29.4k|    UINT64_C(0),
 1218|  29.4k|    UINT64_C(4095739215),	// VLD3q16
 1219|  29.4k|    UINT64_C(0),	// VLD3q16Pseudo_UPD
 1220|  29.4k|    UINT64_C(4095739200),	// VLD3q16_UPD
 1221|  29.4k|    UINT64_C(0),	// VLD3q16oddPseudo
 1222|  29.4k|    UINT64_C(0),	// VLD3q16oddPseudo_UPD
 1223|  29.4k|    UINT64_C(4095739279),	// VLD3q32
 1224|  29.4k|    UINT64_C(0),	// VLD3q32Pseudo_UPD
 1225|  29.4k|    UINT64_C(4095739264),	// VLD3q32_UPD
 1226|  29.4k|    UINT64_C(0),	// VLD3q32oddPseudo
 1227|  29.4k|    UINT64_C(0),	// VLD3q32oddPseudo_UPD
 1228|  29.4k|    UINT64_C(4095739151),	// VLD3q8
 1229|  29.4k|    UINT64_C(0),	// VLD3q8Pseudo_UPD
 1230|  29.4k|    UINT64_C(4095739136),	// VLD3q8_UPD
 1231|  29.4k|    UINT64_C(0),	// VLD3q8oddPseudo
 1232|  29.4k|    UINT64_C(0),	// VLD3q8oddPseudo_UPD
 1233|  29.4k|    UINT64_C(0),
 1234|  29.4k|    UINT64_C(0),
 1235|  29.4k|    UINT64_C(0),
 1236|  29.4k|    UINT64_C(0),
 1237|  29.4k|    UINT64_C(0),
 1238|  29.4k|    UINT64_C(0),
 1239|  29.4k|    UINT64_C(0),
 1240|  29.4k|    UINT64_C(0),
 1241|  29.4k|    UINT64_C(0),
 1242|  29.4k|    UINT64_C(4104130383),	// VLD4DUPd16
 1243|  29.4k|    UINT64_C(0),	// VLD4DUPd16Pseudo
 1244|  29.4k|    UINT64_C(0),	// VLD4DUPd16Pseudo_UPD
 1245|  29.4k|    UINT64_C(4104130368),	// VLD4DUPd16_UPD
 1246|  29.4k|    UINT64_C(4104130447),	// VLD4DUPd32
 1247|  29.4k|    UINT64_C(0),	// VLD4DUPd32Pseudo
 1248|  29.4k|    UINT64_C(0),	// VLD4DUPd32Pseudo_UPD
 1249|  29.4k|    UINT64_C(4104130432),	// VLD4DUPd32_UPD
 1250|  29.4k|    UINT64_C(4104130319),	// VLD4DUPd8
 1251|  29.4k|    UINT64_C(0),	// VLD4DUPd8Pseudo
 1252|  29.4k|    UINT64_C(0),	// VLD4DUPd8Pseudo_UPD
 1253|  29.4k|    UINT64_C(4104130304),	// VLD4DUPd8_UPD
 1254|  29.4k|    UINT64_C(0),
 1255|  29.4k|    UINT64_C(0),
 1256|  29.4k|    UINT64_C(0),
 1257|  29.4k|    UINT64_C(0),
 1258|  29.4k|    UINT64_C(0),
 1259|  29.4k|    UINT64_C(0),
 1260|  29.4k|    UINT64_C(0),
 1261|  29.4k|    UINT64_C(0),
 1262|  29.4k|    UINT64_C(0),
 1263|  29.4k|    UINT64_C(4104130415),	// VLD4DUPq16
 1264|  29.4k|    UINT64_C(4104130400),	// VLD4DUPq16_UPD
 1265|  29.4k|    UINT64_C(4104130479),	// VLD4DUPq32
 1266|  29.4k|    UINT64_C(4104130464),	// VLD4DUPq32_UPD
 1267|  29.4k|    UINT64_C(4104130351),	// VLD4DUPq8
 1268|  29.4k|    UINT64_C(4104130336),	// VLD4DUPq8_UPD
 1269|  29.4k|    UINT64_C(0),
 1270|  29.4k|    UINT64_C(0),
 1271|  29.4k|    UINT64_C(0),
 1272|  29.4k|    UINT64_C(0),
 1273|  29.4k|    UINT64_C(0),
 1274|  29.4k|    UINT64_C(0),
 1275|  29.4k|    UINT64_C(0),
 1276|  29.4k|    UINT64_C(0),
 1277|  29.4k|    UINT64_C(0),
 1278|  29.4k|    UINT64_C(4104128271),	// VLD4LNd16
 1279|  29.4k|    UINT64_C(0),	// VLD4LNd16Pseudo
 1280|  29.4k|    UINT64_C(0),	// VLD4LNd16Pseudo_UPD
 1281|  29.4k|    UINT64_C(4104128256),	// VLD4LNd16_UPD
 1282|  29.4k|    UINT64_C(4104129295),	// VLD4LNd32
 1283|  29.4k|    UINT64_C(0),	// VLD4LNd32Pseudo
 1284|  29.4k|    UINT64_C(0),	// VLD4LNd32Pseudo_UPD
 1285|  29.4k|    UINT64_C(4104129280),	// VLD4LNd32_UPD
 1286|  29.4k|    UINT64_C(4104127247),	// VLD4LNd8
 1287|  29.4k|    UINT64_C(0),	// VLD4LNd8Pseudo
 1288|  29.4k|    UINT64_C(0),	// VLD4LNd8Pseudo_UPD
 1289|  29.4k|    UINT64_C(4104127232),	// VLD4LNd8_UPD
 1290|  29.4k|    UINT64_C(0),
 1291|  29.4k|    UINT64_C(0),
 1292|  29.4k|    UINT64_C(0),
 1293|  29.4k|    UINT64_C(0),
 1294|  29.4k|    UINT64_C(0),
 1295|  29.4k|    UINT64_C(0),
 1296|  29.4k|    UINT64_C(0),
 1297|  29.4k|    UINT64_C(0),
 1298|  29.4k|    UINT64_C(0),
 1299|  29.4k|    UINT64_C(4104128303),	// VLD4LNq16
 1300|  29.4k|    UINT64_C(0),	// VLD4LNq16Pseudo
 1301|  29.4k|    UINT64_C(0),	// VLD4LNq16Pseudo_UPD
 1302|  29.4k|    UINT64_C(4104128288),	// VLD4LNq16_UPD
 1303|  29.4k|    UINT64_C(4104129359),	// VLD4LNq32
 1304|  29.4k|    UINT64_C(0),	// VLD4LNq32Pseudo
 1305|  29.4k|    UINT64_C(0),	// VLD4LNq32Pseudo_UPD
 1306|  29.4k|    UINT64_C(4104129344),	// VLD4LNq32_UPD
 1307|  29.4k|    UINT64_C(0),
 1308|  29.4k|    UINT64_C(0),
 1309|  29.4k|    UINT64_C(0),
 1310|  29.4k|    UINT64_C(0),
 1311|  29.4k|    UINT64_C(0),
 1312|  29.4k|    UINT64_C(0),
 1313|  29.4k|    UINT64_C(4095737935),	// VLD4d16
 1314|  29.4k|    UINT64_C(0),	// VLD4d16Pseudo
 1315|  29.4k|    UINT64_C(0),	// VLD4d16Pseudo_UPD
 1316|  29.4k|    UINT64_C(4095737920),	// VLD4d16_UPD
 1317|  29.4k|    UINT64_C(4095737999),	// VLD4d32
 1318|  29.4k|    UINT64_C(0),	// VLD4d32Pseudo
 1319|  29.4k|    UINT64_C(0),	// VLD4d32Pseudo_UPD
 1320|  29.4k|    UINT64_C(4095737984),	// VLD4d32_UPD
 1321|  29.4k|    UINT64_C(4095737871),	// VLD4d8
 1322|  29.4k|    UINT64_C(0),	// VLD4d8Pseudo
 1323|  29.4k|    UINT64_C(0),	// VLD4d8Pseudo_UPD
 1324|  29.4k|    UINT64_C(4095737856),	// VLD4d8_UPD
 1325|  29.4k|    UINT64_C(0),
 1326|  29.4k|    UINT64_C(0),
 1327|  29.4k|    UINT64_C(0),
 1328|  29.4k|    UINT64_C(0),
 1329|  29.4k|    UINT64_C(0),
 1330|  29.4k|    UINT64_C(0),
 1331|  29.4k|    UINT64_C(0),
 1332|  29.4k|    UINT64_C(0),
 1333|  29.4k|    UINT64_C(0),
 1334|  29.4k|    UINT64_C(4095738191),	// VLD4q16
 1335|  29.4k|    UINT64_C(0),	// VLD4q16Pseudo_UPD
 1336|  29.4k|    UINT64_C(4095738176),	// VLD4q16_UPD
 1337|  29.4k|    UINT64_C(0),	// VLD4q16oddPseudo
 1338|  29.4k|    UINT64_C(0),	// VLD4q16oddPseudo_UPD
 1339|  29.4k|    UINT64_C(4095738255),	// VLD4q32
 1340|  29.4k|    UINT64_C(0),	// VLD4q32Pseudo_UPD
 1341|  29.4k|    UINT64_C(4095738240),	// VLD4q32_UPD
 1342|  29.4k|    UINT64_C(0),	// VLD4q32oddPseudo
 1343|  29.4k|    UINT64_C(0),	// VLD4q32oddPseudo_UPD
 1344|  29.4k|    UINT64_C(4095738127),	// VLD4q8
 1345|  29.4k|    UINT64_C(0),	// VLD4q8Pseudo_UPD
 1346|  29.4k|    UINT64_C(4095738112),	// VLD4q8_UPD
 1347|  29.4k|    UINT64_C(0),	// VLD4q8oddPseudo
 1348|  29.4k|    UINT64_C(0),	// VLD4q8oddPseudo_UPD
 1349|  29.4k|    UINT64_C(0),
 1350|  29.4k|    UINT64_C(0),
 1351|  29.4k|    UINT64_C(0),
 1352|  29.4k|    UINT64_C(0),
 1353|  29.4k|    UINT64_C(0),
 1354|  29.4k|    UINT64_C(0),
 1355|  29.4k|    UINT64_C(0),
 1356|  29.4k|    UINT64_C(0),
 1357|  29.4k|    UINT64_C(0),
 1358|  29.4k|    UINT64_C(221252352),	// VLDMDDB_UPD
 1359|  29.4k|    UINT64_C(210766592),	// VLDMDIA
 1360|  29.4k|    UINT64_C(212863744),	// VLDMDIA_UPD
 1361|  29.4k|    UINT64_C(0),	// VLDMQIA
 1362|  29.4k|    UINT64_C(221252096),	// VLDMSDB_UPD
 1363|  29.4k|    UINT64_C(210766336),	// VLDMSIA
 1364|  29.4k|    UINT64_C(212863488),	// VLDMSIA_UPD
 1365|  29.4k|    UINT64_C(219155200),	// VLDRD
 1366|  29.4k|    UINT64_C(219154688),	// VLDRH
 1367|  29.4k|    UINT64_C(219154944),	// VLDRS
 1368|  29.4k|    UINT64_C(204474880),	// VLLDM
 1369|  29.4k|    UINT64_C(203426304),	// VLSTM
 1370|  29.4k|    UINT64_C(4269804288),	// VMAXNMD
 1371|  29.4k|    UINT64_C(4269803776),	// VMAXNMH
 1372|  29.4k|    UINT64_C(4076867344),	// VMAXNMNDf
 1373|  29.4k|    UINT64_C(4077915920),	// VMAXNMNDh
 1374|  29.4k|    UINT64_C(4076867408),	// VMAXNMNQf
 1375|  29.4k|    UINT64_C(4077915984),	// VMAXNMNQh
 1376|  29.4k|    UINT64_C(4269804032),	// VMAXNMS
 1377|  29.4k|    UINT64_C(4060090112),	// VMAXfd
 1378|  29.4k|    UINT64_C(4060090176),	// VMAXfq
 1379|  29.4k|    UINT64_C(4061138688),	// VMAXhd
 1380|  29.4k|    UINT64_C(4061138752),	// VMAXhq
 1381|  29.4k|    UINT64_C(4060087872),	// VMAXsv16i8
 1382|  29.4k|    UINT64_C(4062184960),	// VMAXsv2i32
 1383|  29.4k|    UINT64_C(4061136384),	// VMAXsv4i16
 1384|  29.4k|    UINT64_C(4062185024),	// VMAXsv4i32
 1385|  29.4k|    UINT64_C(4061136448),	// VMAXsv8i16
 1386|  29.4k|    UINT64_C(4060087808),	// VMAXsv8i8
 1387|  29.4k|    UINT64_C(4076865088),	// VMAXuv16i8
 1388|  29.4k|    UINT64_C(4078962176),	// VMAXuv2i32
 1389|  29.4k|    UINT64_C(4077913600),	// VMAXuv4i16
 1390|  29.4k|    UINT64_C(4078962240),	// VMAXuv4i32
 1391|  29.4k|    UINT64_C(4077913664),	// VMAXuv8i16
 1392|  29.4k|    UINT64_C(4076865024),	// VMAXuv8i8
 1393|  29.4k|    UINT64_C(4269804352),	// VMINNMD
 1394|  29.4k|    UINT64_C(4269803840),	// VMINNMH
 1395|  29.4k|    UINT64_C(4078964496),	// VMINNMNDf
 1396|  29.4k|    UINT64_C(4080013072),	// VMINNMNDh
 1397|  29.4k|    UINT64_C(4078964560),	// VMINNMNQf
 1398|  29.4k|    UINT64_C(4080013136),	// VMINNMNQh
 1399|  29.4k|    UINT64_C(4269804096),	// VMINNMS
 1400|  29.4k|    UINT64_C(4062187264),	// VMINfd
 1401|  29.4k|    UINT64_C(4062187328),	// VMINfq
 1402|  29.4k|    UINT64_C(4063235840),	// VMINhd
 1403|  29.4k|    UINT64_C(4063235904),	// VMINhq
 1404|  29.4k|    UINT64_C(4060087888),	// VMINsv16i8
 1405|  29.4k|    UINT64_C(4062184976),	// VMINsv2i32
 1406|  29.4k|    UINT64_C(4061136400),	// VMINsv4i16
 1407|  29.4k|    UINT64_C(4062185040),	// VMINsv4i32
 1408|  29.4k|    UINT64_C(4061136464),	// VMINsv8i16
 1409|  29.4k|    UINT64_C(4060087824),	// VMINsv8i8
 1410|  29.4k|    UINT64_C(4076865104),	// VMINuv16i8
 1411|  29.4k|    UINT64_C(4078962192),	// VMINuv2i32
 1412|  29.4k|    UINT64_C(4077913616),	// VMINuv4i16
 1413|  29.4k|    UINT64_C(4078962256),	// VMINuv4i32
 1414|  29.4k|    UINT64_C(4077913680),	// VMINuv8i16
 1415|  29.4k|    UINT64_C(4076865040),	// VMINuv8i8
 1416|  29.4k|    UINT64_C(234883840),	// VMLAD
 1417|  29.4k|    UINT64_C(234883328),	// VMLAH
 1418|  29.4k|    UINT64_C(4070572608),	// VMLALslsv2i32
 1419|  29.4k|    UINT64_C(4069524032),	// VMLALslsv4i16
 1420|  29.4k|    UINT64_C(4087349824),	// VMLALsluv2i32
 1421|  29.4k|    UINT64_C(4086301248),	// VMLALsluv4i16
 1422|  29.4k|    UINT64_C(4070574080),	// VMLALsv2i64
 1423|  29.4k|    UINT64_C(4069525504),	// VMLALsv4i32
 1424|  29.4k|    UINT64_C(4068476928),	// VMLALsv8i16
 1425|  29.4k|    UINT64_C(4087351296),	// VMLALuv2i64
 1426|  29.4k|    UINT64_C(4086302720),	// VMLALuv4i32
 1427|  29.4k|    UINT64_C(4085254144),	// VMLALuv8i16
 1428|  29.4k|    UINT64_C(234883584),	// VMLAS
 1429|  29.4k|    UINT64_C(4060089616),	// VMLAfd
 1430|  29.4k|    UINT64_C(4060089680),	// VMLAfq
 1431|  29.4k|    UINT64_C(4061138192),	// VMLAhd
 1432|  29.4k|    UINT64_C(4061138256),	// VMLAhq
 1433|  29.4k|    UINT64_C(4070572352),	// VMLAslfd
 1434|  29.4k|    UINT64_C(4087349568),	// VMLAslfq
 1435|  29.4k|    UINT64_C(4069523776),	// VMLAslhd
 1436|  29.4k|    UINT64_C(4086300992),	// VMLAslhq
 1437|  29.4k|    UINT64_C(4070572096),	// VMLAslv2i32
 1438|  29.4k|    UINT64_C(4069523520),	// VMLAslv4i16
 1439|  29.4k|    UINT64_C(4087349312),	// VMLAslv4i32
 1440|  29.4k|    UINT64_C(4086300736),	// VMLAslv8i16
 1441|  29.4k|    UINT64_C(4060088640),	// VMLAv16i8
 1442|  29.4k|    UINT64_C(4062185728),	// VMLAv2i32
 1443|  29.4k|    UINT64_C(4061137152),	// VMLAv4i16
 1444|  29.4k|    UINT64_C(4062185792),	// VMLAv4i32
 1445|  29.4k|    UINT64_C(4061137216),	// VMLAv8i16
 1446|  29.4k|    UINT64_C(4060088576),	// VMLAv8i8
 1447|  29.4k|    UINT64_C(234883904),	// VMLSD
 1448|  29.4k|    UINT64_C(234883392),	// VMLSH
 1449|  29.4k|    UINT64_C(4070573632),	// VMLSLslsv2i32
 1450|  29.4k|    UINT64_C(4069525056),	// VMLSLslsv4i16
 1451|  29.4k|    UINT64_C(4087350848),	// VMLSLsluv2i32
 1452|  29.4k|    UINT64_C(4086302272),	// VMLSLsluv4i16
 1453|  29.4k|    UINT64_C(4070574592),	// VMLSLsv2i64
 1454|  29.4k|    UINT64_C(4069526016),	// VMLSLsv4i32
 1455|  29.4k|    UINT64_C(4068477440),	// VMLSLsv8i16
 1456|  29.4k|    UINT64_C(4087351808),	// VMLSLuv2i64
 1457|  29.4k|    UINT64_C(4086303232),	// VMLSLuv4i32
 1458|  29.4k|    UINT64_C(4085254656),	// VMLSLuv8i16
 1459|  29.4k|    UINT64_C(234883648),	// VMLSS
 1460|  29.4k|    UINT64_C(4062186768),	// VMLSfd
 1461|  29.4k|    UINT64_C(4062186832),	// VMLSfq
 1462|  29.4k|    UINT64_C(4063235344),	// VMLShd
 1463|  29.4k|    UINT64_C(4063235408),	// VMLShq
 1464|  29.4k|    UINT64_C(4070573376),	// VMLSslfd
 1465|  29.4k|    UINT64_C(4087350592),	// VMLSslfq
 1466|  29.4k|    UINT64_C(4069524800),	// VMLSslhd
 1467|  29.4k|    UINT64_C(4086302016),	// VMLSslhq
 1468|  29.4k|    UINT64_C(4070573120),	// VMLSslv2i32
 1469|  29.4k|    UINT64_C(4069524544),	// VMLSslv4i16
 1470|  29.4k|    UINT64_C(4087350336),	// VMLSslv4i32
 1471|  29.4k|    UINT64_C(4086301760),	// VMLSslv8i16
 1472|  29.4k|    UINT64_C(4076865856),	// VMLSv16i8
 1473|  29.4k|    UINT64_C(4078962944),	// VMLSv2i32
 1474|  29.4k|    UINT64_C(4077914368),	// VMLSv4i16
 1475|  29.4k|    UINT64_C(4078963008),	// VMLSv4i32
 1476|  29.4k|    UINT64_C(4077914432),	// VMLSv8i16
 1477|  29.4k|    UINT64_C(4076865792),	// VMLSv8i8
 1478|  29.4k|    UINT64_C(246418240),	// VMOVD
 1479|  29.4k|    UINT64_C(0),
 1480|  29.4k|    UINT64_C(205523728),	// VMOVDRR
 1481|  29.4k|    UINT64_C(0),
 1482|  29.4k|    UINT64_C(4272949824),	// VMOVH
 1483|  29.4k|    UINT64_C(234883344),	// VMOVHR
 1484|  29.4k|    UINT64_C(4070574608),	// VMOVLsv2i64
 1485|  29.4k|    UINT64_C(4069526032),	// VMOVLsv4i32
 1486|  29.4k|    UINT64_C(4069001744),	// VMOVLsv8i16
 1487|  29.4k|    UINT64_C(4087351824),	// VMOVLuv2i64
 1488|  29.4k|    UINT64_C(4086303248),	// VMOVLuv4i32
 1489|  29.4k|    UINT64_C(4085778960),	// VMOVLuv8i16
 1490|  29.4k|    UINT64_C(4089053696),	// VMOVNv2i32
 1491|  29.4k|    UINT64_C(4088791552),	// VMOVNv4i16
 1492|  29.4k|    UINT64_C(4088529408),	// VMOVNv8i8
 1493|  29.4k|    UINT64_C(0),
 1494|  29.4k|    UINT64_C(235931920),	// VMOVRH
 1495|  29.4k|    UINT64_C(206572304),	// VMOVRRD
 1496|  29.4k|    UINT64_C(206572048),	// VMOVRRS
 1497|  29.4k|    UINT64_C(235932176),	// VMOVRS
 1498|  29.4k|    UINT64_C(246417984),	// VMOVS
 1499|  29.4k|    UINT64_C(234883600),	// VMOVSR
 1500|  29.4k|    UINT64_C(205523472),	// VMOVSRR
 1501|  29.4k|    UINT64_C(0),
 1502|  29.4k|    UINT64_C(4068478544),	// VMOVv16i8
 1503|  29.4k|    UINT64_C(4068478512),	// VMOVv1i64
 1504|  29.4k|    UINT64_C(4068478736),	// VMOVv2f32
 1505|  29.4k|    UINT64_C(4068474896),	// VMOVv2i32
 1506|  29.4k|    UINT64_C(4068478576),	// VMOVv2i64
 1507|  29.4k|    UINT64_C(4068478800),	// VMOVv4f32
 1508|  29.4k|    UINT64_C(4068476944),	// VMOVv4i16
 1509|  29.4k|    UINT64_C(4068474960),	// VMOVv4i32
 1510|  29.4k|    UINT64_C(4068477008),	// VMOVv8i16
 1511|  29.4k|    UINT64_C(4068478480),	// VMOVv8i8
 1512|  29.4k|    UINT64_C(250677776),	// VMRS
 1513|  29.4k|    UINT64_C(251136528),	// VMRS_FPEXC
 1514|  29.4k|    UINT64_C(251202064),	// VMRS_FPINST
 1515|  29.4k|    UINT64_C(251267600),	// VMRS_FPINST2
 1516|  29.4k|    UINT64_C(250612240),	// VMRS_FPSID
 1517|  29.4k|    UINT64_C(251070992),	// VMRS_MVFR0
 1518|  29.4k|    UINT64_C(251005456),	// VMRS_MVFR1
 1519|  29.4k|    UINT64_C(250939920),	// VMRS_MVFR2
 1520|  29.4k|    UINT64_C(249629200),	// VMSR
 1521|  29.4k|    UINT64_C(250087952),	// VMSR_FPEXC
 1522|  29.4k|    UINT64_C(250153488),	// VMSR_FPINST
 1523|  29.4k|    UINT64_C(250219024),	// VMSR_FPINST2
 1524|  29.4k|    UINT64_C(249563664),	// VMSR_FPSID
 1525|  29.4k|    UINT64_C(236980992),	// VMULD
 1526|  29.4k|    UINT64_C(236980480),	// VMULH
 1527|  29.4k|    UINT64_C(4070575616),	// VMULLp64
 1528|  29.4k|    UINT64_C(4068478464),	// VMULLp8
 1529|  29.4k|    UINT64_C(4070574656),	// VMULLslsv2i32
 1530|  29.4k|    UINT64_C(4069526080),	// VMULLslsv4i16
 1531|  29.4k|    UINT64_C(4087351872),	// VMULLsluv2i32
 1532|  29.4k|    UINT64_C(4086303296),	// VMULLsluv4i16
 1533|  29.4k|    UINT64_C(4070575104),	// VMULLsv2i64
 1534|  29.4k|    UINT64_C(4069526528),	// VMULLsv4i32
 1535|  29.4k|    UINT64_C(4068477952),	// VMULLsv8i16
 1536|  29.4k|    UINT64_C(4087352320),	// VMULLuv2i64
 1537|  29.4k|    UINT64_C(4086303744),	// VMULLuv4i32
 1538|  29.4k|    UINT64_C(4085255168),	// VMULLuv8i16
 1539|  29.4k|    UINT64_C(236980736),	// VMULS
 1540|  29.4k|    UINT64_C(4076866832),	// VMULfd
 1541|  29.4k|    UINT64_C(4076866896),	// VMULfq
 1542|  29.4k|    UINT64_C(4077915408),	// VMULhd
 1543|  29.4k|    UINT64_C(4077915472),	// VMULhq
 1544|  29.4k|    UINT64_C(4076865808),	// VMULpd
 1545|  29.4k|    UINT64_C(4076865872),	// VMULpq
 1546|  29.4k|    UINT64_C(4070574400),	// VMULslfd
 1547|  29.4k|    UINT64_C(4087351616),	// VMULslfq
 1548|  29.4k|    UINT64_C(4069525824),	// VMULslhd
 1549|  29.4k|    UINT64_C(4086303040),	// VMULslhq
 1550|  29.4k|    UINT64_C(4070574144),	// VMULslv2i32
 1551|  29.4k|    UINT64_C(4069525568),	// VMULslv4i16
 1552|  29.4k|    UINT64_C(4087351360),	// VMULslv4i32
 1553|  29.4k|    UINT64_C(4086302784),	// VMULslv8i16
 1554|  29.4k|    UINT64_C(4060088656),	// VMULv16i8
 1555|  29.4k|    UINT64_C(4062185744),	// VMULv2i32
 1556|  29.4k|    UINT64_C(4061137168),	// VMULv4i16
 1557|  29.4k|    UINT64_C(4062185808),	// VMULv4i32
 1558|  29.4k|    UINT64_C(4061137232),	// VMULv8i16
 1559|  29.4k|    UINT64_C(4060088592),	// VMULv8i8
 1560|  29.4k|    UINT64_C(4088399232),	// VMVNd
 1561|  29.4k|    UINT64_C(4088399296),	// VMVNq
 1562|  29.4k|    UINT64_C(4068474928),	// VMVNv2i32
 1563|  29.4k|    UINT64_C(4068476976),	// VMVNv4i16
 1564|  29.4k|    UINT64_C(4068474992),	// VMVNv4i32
 1565|  29.4k|    UINT64_C(4068477040),	// VMVNv8i16
 1566|  29.4k|    UINT64_C(246483776),	// VNEGD
 1567|  29.4k|    UINT64_C(246483264),	// VNEGH
 1568|  29.4k|    UINT64_C(246483520),	// VNEGS
 1569|  29.4k|    UINT64_C(4088989632),	// VNEGf32q
 1570|  29.4k|    UINT64_C(4088989568),	// VNEGfd
 1571|  29.4k|    UINT64_C(4088727424),	// VNEGhd
 1572|  29.4k|    UINT64_C(4088727488),	// VNEGhq
 1573|  29.4k|    UINT64_C(4088726400),	// VNEGs16d
 1574|  29.4k|    UINT64_C(4088726464),	// VNEGs16q
 1575|  29.4k|    UINT64_C(4088988544),	// VNEGs32d
 1576|  29.4k|    UINT64_C(4088988608),	// VNEGs32q
 1577|  29.4k|    UINT64_C(4088464256),	// VNEGs8d
 1578|  29.4k|    UINT64_C(4088464320),	// VNEGs8q
 1579|  29.4k|    UINT64_C(235932480),	// VNMLAD
 1580|  29.4k|    UINT64_C(235931968),	// VNMLAH
 1581|  29.4k|    UINT64_C(235932224),	// VNMLAS
 1582|  29.4k|    UINT64_C(235932416),	// VNMLSD
 1583|  29.4k|    UINT64_C(235931904),	// VNMLSH
 1584|  29.4k|    UINT64_C(235932160),	// VNMLSS
 1585|  29.4k|    UINT64_C(236981056),	// VNMULD
 1586|  29.4k|    UINT64_C(236980544),	// VNMULH
 1587|  29.4k|    UINT64_C(236980800),	// VNMULS
 1588|  29.4k|    UINT64_C(4063232272),	// VORNd
 1589|  29.4k|    UINT64_C(4063232336),	// VORNq
 1590|  29.4k|    UINT64_C(4062183696),	// VORRd
 1591|  29.4k|    UINT64_C(4068475152),	// VORRiv2i32
 1592|  29.4k|    UINT64_C(4068477200),	// VORRiv4i16
 1593|  29.4k|    UINT64_C(4068475216),	// VORRiv4i32
 1594|  29.4k|    UINT64_C(4068477264),	// VORRiv8i16
 1595|  29.4k|    UINT64_C(4062183760),	// VORRq
 1596|  29.4k|    UINT64_C(4088399424),	// VPADALsv16i8
 1597|  29.4k|    UINT64_C(4088923648),	// VPADALsv2i32
 1598|  29.4k|    UINT64_C(4088661504),	// VPADALsv4i16
 1599|  29.4k|    UINT64_C(4088923712),	// VPADALsv4i32
 1600|  29.4k|    UINT64_C(4088661568),	// VPADALsv8i16
 1601|  29.4k|    UINT64_C(4088399360),	// VPADALsv8i8
 1602|  29.4k|    UINT64_C(4088399552),	// VPADALuv16i8
 1603|  29.4k|    UINT64_C(4088923776),	// VPADALuv2i32
 1604|  29.4k|    UINT64_C(4088661632),	// VPADALuv4i16
 1605|  29.4k|    UINT64_C(4088923840),	// VPADALuv4i32
 1606|  29.4k|    UINT64_C(4088661696),	// VPADALuv8i16
 1607|  29.4k|    UINT64_C(4088399488),	// VPADALuv8i8
 1608|  29.4k|    UINT64_C(4088398400),	// VPADDLsv16i8
 1609|  29.4k|    UINT64_C(4088922624),	// VPADDLsv2i32
 1610|  29.4k|    UINT64_C(4088660480),	// VPADDLsv4i16
 1611|  29.4k|    UINT64_C(4088922688),	// VPADDLsv4i32
 1612|  29.4k|    UINT64_C(4088660544),	// VPADDLsv8i16
 1613|  29.4k|    UINT64_C(4088398336),	// VPADDLsv8i8
 1614|  29.4k|    UINT64_C(4088398528),	// VPADDLuv16i8
 1615|  29.4k|    UINT64_C(4088922752),	// VPADDLuv2i32
 1616|  29.4k|    UINT64_C(4088660608),	// VPADDLuv4i16
 1617|  29.4k|    UINT64_C(4088922816),	// VPADDLuv4i32
 1618|  29.4k|    UINT64_C(4088660672),	// VPADDLuv8i16
 1619|  29.4k|    UINT64_C(4088398464),	// VPADDLuv8i8
 1620|  29.4k|    UINT64_C(4076866816),	// VPADDf
 1621|  29.4k|    UINT64_C(4077915392),	// VPADDh
 1622|  29.4k|    UINT64_C(4061137680),	// VPADDi16
 1623|  29.4k|    UINT64_C(4062186256),	// VPADDi32
 1624|  29.4k|    UINT64_C(4060089104),	// VPADDi8
 1625|  29.4k|    UINT64_C(4076867328),	// VPMAXf
 1626|  29.4k|    UINT64_C(4077915904),	// VPMAXh
 1627|  29.4k|    UINT64_C(4061137408),	// VPMAXs16
 1628|  29.4k|    UINT64_C(4062185984),	// VPMAXs32
 1629|  29.4k|    UINT64_C(4060088832),	// VPMAXs8
 1630|  29.4k|    UINT64_C(4077914624),	// VPMAXu16
 1631|  29.4k|    UINT64_C(4078963200),	// VPMAXu32
 1632|  29.4k|    UINT64_C(4076866048),	// VPMAXu8
 1633|  29.4k|    UINT64_C(4078964480),	// VPMINf
 1634|  29.4k|    UINT64_C(4080013056),	// VPMINh
 1635|  29.4k|    UINT64_C(4061137424),	// VPMINs16
 1636|  29.4k|    UINT64_C(4062186000),	// VPMINs32
 1637|  29.4k|    UINT64_C(4060088848),	// VPMINs8
 1638|  29.4k|    UINT64_C(4077914640),	// VPMINu16
 1639|  29.4k|    UINT64_C(4078963216),	// VPMINu32
 1640|  29.4k|    UINT64_C(4076866064),	// VPMINu8
 1641|  29.4k|    UINT64_C(4088399680),	// VQABSv16i8
 1642|  29.4k|    UINT64_C(4088923904),	// VQABSv2i32
 1643|  29.4k|    UINT64_C(4088661760),	// VQABSv4i16
 1644|  29.4k|    UINT64_C(4088923968),	// VQABSv4i32
 1645|  29.4k|    UINT64_C(4088661824),	// VQABSv8i16
 1646|  29.4k|    UINT64_C(4088399616),	// VQABSv8i8
 1647|  29.4k|    UINT64_C(4060086352),	// VQADDsv16i8
 1648|  29.4k|    UINT64_C(4063232016),	// VQADDsv1i64
 1649|  29.4k|    UINT64_C(4062183440),	// VQADDsv2i32
 1650|  29.4k|    UINT64_C(4063232080),	// VQADDsv2i64
 1651|  29.4k|    UINT64_C(4061134864),	// VQADDsv4i16
 1652|  29.4k|    UINT64_C(4062183504),	// VQADDsv4i32
 1653|  29.4k|    UINT64_C(4061134928),	// VQADDsv8i16
 1654|  29.4k|    UINT64_C(4060086288),	// VQADDsv8i8
 1655|  29.4k|    UINT64_C(4076863568),	// VQADDuv16i8
 1656|  29.4k|    UINT64_C(4080009232),	// VQADDuv1i64
 1657|  29.4k|    UINT64_C(4078960656),	// VQADDuv2i32
 1658|  29.4k|    UINT64_C(4080009296),	// VQADDuv2i64
 1659|  29.4k|    UINT64_C(4077912080),	// VQADDuv4i16
 1660|  29.4k|    UINT64_C(4078960720),	// VQADDuv4i32
 1661|  29.4k|    UINT64_C(4077912144),	// VQADDuv8i16
 1662|  29.4k|    UINT64_C(4076863504),	// VQADDuv8i8
 1663|  29.4k|    UINT64_C(4070572864),	// VQDMLALslv2i32
 1664|  29.4k|    UINT64_C(4069524288),	// VQDMLALslv4i16
 1665|  29.4k|    UINT64_C(4070574336),	// VQDMLALv2i64
 1666|  29.4k|    UINT64_C(4069525760),	// VQDMLALv4i32
 1667|  29.4k|    UINT64_C(4070573888),	// VQDMLSLslv2i32
 1668|  29.4k|    UINT64_C(4069525312),	// VQDMLSLslv4i16
 1669|  29.4k|    UINT64_C(4070574848),	// VQDMLSLv2i64
 1670|  29.4k|    UINT64_C(4069526272),	// VQDMLSLv4i32
 1671|  29.4k|    UINT64_C(4070575168),	// VQDMULHslv2i32
 1672|  29.4k|    UINT64_C(4069526592),	// VQDMULHslv4i16
 1673|  29.4k|    UINT64_C(4087352384),	// VQDMULHslv4i32
 1674|  29.4k|    UINT64_C(4086303808),	// VQDMULHslv8i16
 1675|  29.4k|    UINT64_C(4062186240),	// VQDMULHv2i32
 1676|  29.4k|    UINT64_C(4061137664),	// VQDMULHv4i16
 1677|  29.4k|    UINT64_C(4062186304),	// VQDMULHv4i32
 1678|  29.4k|    UINT64_C(4061137728),	// VQDMULHv8i16
 1679|  29.4k|    UINT64_C(4070574912),	// VQDMULLslv2i32
 1680|  29.4k|    UINT64_C(4069526336),	// VQDMULLslv4i16
 1681|  29.4k|    UINT64_C(4070575360),	// VQDMULLv2i64
 1682|  29.4k|    UINT64_C(4069526784),	// VQDMULLv4i32
 1683|  29.4k|    UINT64_C(4089053760),	// VQMOVNsuv2i32
 1684|  29.4k|    UINT64_C(4088791616),	// VQMOVNsuv4i16
 1685|  29.4k|    UINT64_C(4088529472),	// VQMOVNsuv8i8
 1686|  29.4k|    UINT64_C(4089053824),	// VQMOVNsv2i32
 1687|  29.4k|    UINT64_C(4088791680),	// VQMOVNsv4i16
 1688|  29.4k|    UINT64_C(4088529536),	// VQMOVNsv8i8
 1689|  29.4k|    UINT64_C(4089053888),	// VQMOVNuv2i32
 1690|  29.4k|    UINT64_C(4088791744),	// VQMOVNuv4i16
 1691|  29.4k|    UINT64_C(4088529600),	// VQMOVNuv8i8
 1692|  29.4k|    UINT64_C(4088399808),	// VQNEGv16i8
 1693|  29.4k|    UINT64_C(4088924032),	// VQNEGv2i32
 1694|  29.4k|    UINT64_C(4088661888),	// VQNEGv4i16
 1695|  29.4k|    UINT64_C(4088924096),	// VQNEGv4i32
 1696|  29.4k|    UINT64_C(4088661952),	// VQNEGv8i16
 1697|  29.4k|    UINT64_C(4088399744),	// VQNEGv8i8
 1698|  29.4k|    UINT64_C(4070575680),	// VQRDMLAHslv2i32
 1699|  29.4k|    UINT64_C(4069527104),	// VQRDMLAHslv4i16
 1700|  29.4k|    UINT64_C(4087352896),	// VQRDMLAHslv4i32
 1701|  29.4k|    UINT64_C(4086304320),	// VQRDMLAHslv8i16
 1702|  29.4k|    UINT64_C(4078963472),	// VQRDMLAHv2i32
 1703|  29.4k|    UINT64_C(4077914896),	// VQRDMLAHv4i16
 1704|  29.4k|    UINT64_C(4078963536),	// VQRDMLAHv4i32
 1705|  29.4k|    UINT64_C(4077914960),	// VQRDMLAHv8i16
 1706|  29.4k|    UINT64_C(4070575936),	// VQRDMLSHslv2i32
 1707|  29.4k|    UINT64_C(4069527360),	// VQRDMLSHslv4i16
 1708|  29.4k|    UINT64_C(4087353152),	// VQRDMLSHslv4i32
 1709|  29.4k|    UINT64_C(4086304576),	// VQRDMLSHslv8i16
 1710|  29.4k|    UINT64_C(4078963728),	// VQRDMLSHv2i32
 1711|  29.4k|    UINT64_C(4077915152),	// VQRDMLSHv4i16
 1712|  29.4k|    UINT64_C(4078963792),	// VQRDMLSHv4i32
 1713|  29.4k|    UINT64_C(4077915216),	// VQRDMLSHv8i16
 1714|  29.4k|    UINT64_C(4070575424),	// VQRDMULHslv2i32
 1715|  29.4k|    UINT64_C(4069526848),	// VQRDMULHslv4i16
 1716|  29.4k|    UINT64_C(4087352640),	// VQRDMULHslv4i32
 1717|  29.4k|    UINT64_C(4086304064),	// VQRDMULHslv8i16
 1718|  29.4k|    UINT64_C(4078963456),	// VQRDMULHv2i32
 1719|  29.4k|    UINT64_C(4077914880),	// VQRDMULHv4i16
 1720|  29.4k|    UINT64_C(4078963520),	// VQRDMULHv4i32
 1721|  29.4k|    UINT64_C(4077914944),	// VQRDMULHv8i16
 1722|  29.4k|    UINT64_C(4060087632),	// VQRSHLsv16i8
 1723|  29.4k|    UINT64_C(4063233296),	// VQRSHLsv1i64
 1724|  29.4k|    UINT64_C(4062184720),	// VQRSHLsv2i32
 1725|  29.4k|    UINT64_C(4063233360),	// VQRSHLsv2i64
 1726|  29.4k|    UINT64_C(4061136144),	// VQRSHLsv4i16
 1727|  29.4k|    UINT64_C(4062184784),	// VQRSHLsv4i32
 1728|  29.4k|    UINT64_C(4061136208),	// VQRSHLsv8i16
 1729|  29.4k|    UINT64_C(4060087568),	// VQRSHLsv8i8
 1730|  29.4k|    UINT64_C(4076864848),	// VQRSHLuv16i8
 1731|  29.4k|    UINT64_C(4080010512),	// VQRSHLuv1i64
 1732|  29.4k|    UINT64_C(4078961936),	// VQRSHLuv2i32
 1733|  29.4k|    UINT64_C(4080010576),	// VQRSHLuv2i64
 1734|  29.4k|    UINT64_C(4077913360),	// VQRSHLuv4i16
 1735|  29.4k|    UINT64_C(4078962000),	// VQRSHLuv4i32
 1736|  29.4k|    UINT64_C(4077913424),	// VQRSHLuv8i16
 1737|  29.4k|    UINT64_C(4076864784),	// VQRSHLuv8i8
 1738|  29.4k|    UINT64_C(4070574416),	// VQRSHRNsv2i32
 1739|  29.4k|    UINT64_C(4069525840),	// VQRSHRNsv4i16
 1740|  29.4k|    UINT64_C(4069001552),	// VQRSHRNsv8i8
 1741|  29.4k|    UINT64_C(4087351632),	// VQRSHRNuv2i32
 1742|  29.4k|    UINT64_C(4086303056),	// VQRSHRNuv4i16
 1743|  29.4k|    UINT64_C(4085778768),	// VQRSHRNuv8i8
 1744|  29.4k|    UINT64_C(4087351376),	// VQRSHRUNv2i32
 1745|  29.4k|    UINT64_C(4086302800),	// VQRSHRUNv4i16
 1746|  29.4k|    UINT64_C(4085778512),	// VQRSHRUNv8i8
 1747|  29.4k|    UINT64_C(4069001040),	// VQSHLsiv16i8
 1748|  29.4k|    UINT64_C(4068476816),	// VQSHLsiv1i64
 1749|  29.4k|    UINT64_C(4070573840),	// VQSHLsiv2i32
 1750|  29.4k|    UINT64_C(4068476880),	// VQSHLsiv2i64
 1751|  29.4k|    UINT64_C(4069525264),	// VQSHLsiv4i16
 1752|  29.4k|    UINT64_C(4070573904),	// VQSHLsiv4i32
 1753|  29.4k|    UINT64_C(4069525328),	// VQSHLsiv8i16
 1754|  29.4k|    UINT64_C(4069000976),	// VQSHLsiv8i8
 1755|  29.4k|    UINT64_C(4085778000),	// VQSHLsuv16i8
 1756|  29.4k|    UINT64_C(4085253776),	// VQSHLsuv1i64
 1757|  29.4k|    UINT64_C(4087350800),	// VQSHLsuv2i32
 1758|  29.4k|    UINT64_C(4085253840),	// VQSHLsuv2i64
 1759|  29.4k|    UINT64_C(4086302224),	// VQSHLsuv4i16
 1760|  29.4k|    UINT64_C(4087350864),	// VQSHLsuv4i32
 1761|  29.4k|    UINT64_C(4086302288),	// VQSHLsuv8i16
 1762|  29.4k|    UINT64_C(4085777936),	// VQSHLsuv8i8
 1763|  29.4k|    UINT64_C(4060087376),	// VQSHLsv16i8
 1764|  29.4k|    UINT64_C(4063233040),	// VQSHLsv1i64
 1765|  29.4k|    UINT64_C(4062184464),	// VQSHLsv2i32
 1766|  29.4k|    UINT64_C(4063233104),	// VQSHLsv2i64
 1767|  29.4k|    UINT64_C(4061135888),	// VQSHLsv4i16
 1768|  29.4k|    UINT64_C(4062184528),	// VQSHLsv4i32
 1769|  29.4k|    UINT64_C(4061135952),	// VQSHLsv8i16
 1770|  29.4k|    UINT64_C(4060087312),	// VQSHLsv8i8
 1771|  29.4k|    UINT64_C(4085778256),	// VQSHLuiv16i8
 1772|  29.4k|    UINT64_C(4085254032),	// VQSHLuiv1i64
 1773|  29.4k|    UINT64_C(4087351056),	// VQSHLuiv2i32
 1774|  29.4k|    UINT64_C(4085254096),	// VQSHLuiv2i64
 1775|  29.4k|    UINT64_C(4086302480),	// VQSHLuiv4i16
 1776|  29.4k|    UINT64_C(4087351120),	// VQSHLuiv4i32
 1777|  29.4k|    UINT64_C(4086302544),	// VQSHLuiv8i16
 1778|  29.4k|    UINT64_C(4085778192),	// VQSHLuiv8i8
 1779|  29.4k|    UINT64_C(4076864592),	// VQSHLuv16i8
 1780|  29.4k|    UINT64_C(4080010256),	// VQSHLuv1i64
 1781|  29.4k|    UINT64_C(4078961680),	// VQSHLuv2i32
 1782|  29.4k|    UINT64_C(4080010320),	// VQSHLuv2i64
 1783|  29.4k|    UINT64_C(4077913104),	// VQSHLuv4i16
 1784|  29.4k|    UINT64_C(4078961744),	// VQSHLuv4i32
 1785|  29.4k|    UINT64_C(4077913168),	// VQSHLuv8i16
 1786|  29.4k|    UINT64_C(4076864528),	// VQSHLuv8i8
 1787|  29.4k|    UINT64_C(4070574352),	// VQSHRNsv2i32
 1788|  29.4k|    UINT64_C(4069525776),	// VQSHRNsv4i16
 1789|  29.4k|    UINT64_C(4069001488),	// VQSHRNsv8i8
 1790|  29.4k|    UINT64_C(4087351568),	// VQSHRNuv2i32
 1791|  29.4k|    UINT64_C(4086302992),	// VQSHRNuv4i16
 1792|  29.4k|    UINT64_C(4085778704),	// VQSHRNuv8i8
 1793|  29.4k|    UINT64_C(4087351312),	// VQSHRUNv2i32
 1794|  29.4k|    UINT64_C(4086302736),	// VQSHRUNv4i16
 1795|  29.4k|    UINT64_C(4085778448),	// VQSHRUNv8i8
 1796|  29.4k|    UINT64_C(4060086864),	// VQSUBsv16i8
 1797|  29.4k|    UINT64_C(4063232528),	// VQSUBsv1i64
 1798|  29.4k|    UINT64_C(4062183952),	// VQSUBsv2i32
 1799|  29.4k|    UINT64_C(4063232592),	// VQSUBsv2i64
 1800|  29.4k|    UINT64_C(4061135376),	// VQSUBsv4i16
 1801|  29.4k|    UINT64_C(4062184016),	// VQSUBsv4i32
 1802|  29.4k|    UINT64_C(4061135440),	// VQSUBsv8i16
 1803|  29.4k|    UINT64_C(4060086800),	// VQSUBsv8i8
 1804|  29.4k|    UINT64_C(4076864080),	// VQSUBuv16i8
 1805|  29.4k|    UINT64_C(4080009744),	// VQSUBuv1i64
 1806|  29.4k|    UINT64_C(4078961168),	// VQSUBuv2i32
 1807|  29.4k|    UINT64_C(4080009808),	// VQSUBuv2i64
 1808|  29.4k|    UINT64_C(4077912592),	// VQSUBuv4i16
 1809|  29.4k|    UINT64_C(4078961232),	// VQSUBuv4i32
 1810|  29.4k|    UINT64_C(4077912656),	// VQSUBuv8i16
 1811|  29.4k|    UINT64_C(4076864016),	// VQSUBuv8i8
 1812|  29.4k|    UINT64_C(4087350272),	// VRADDHNv2i32
 1813|  29.4k|    UINT64_C(4086301696),	// VRADDHNv4i16
 1814|  29.4k|    UINT64_C(4085253120),	// VRADDHNv8i8
 1815|  29.4k|    UINT64_C(4089119744),	// VRECPEd
 1816|  29.4k|    UINT64_C(4089120000),	// VRECPEfd
 1817|  29.4k|    UINT64_C(4089120064),	// VRECPEfq
 1818|  29.4k|    UINT64_C(4088857856),	// VRECPEhd
 1819|  29.4k|    UINT64_C(4088857920),	// VRECPEhq
 1820|  29.4k|    UINT64_C(4089119808),	// VRECPEq
 1821|  29.4k|    UINT64_C(4060090128),	// VRECPSfd
 1822|  29.4k|    UINT64_C(4060090192),	// VRECPSfq
 1823|  29.4k|    UINT64_C(4061138704),	// VRECPShd
 1824|  29.4k|    UINT64_C(4061138768),	// VRECPShq
 1825|  29.4k|    UINT64_C(4088398080),	// VREV16d8
 1826|  29.4k|    UINT64_C(4088398144),	// VREV16q8
 1827|  29.4k|    UINT64_C(4088660096),	// VREV32d16
 1828|  29.4k|    UINT64_C(4088397952),	// VREV32d8
 1829|  29.4k|    UINT64_C(4088660160),	// VREV32q16
 1830|  29.4k|    UINT64_C(4088398016),	// VREV32q8
 1831|  29.4k|    UINT64_C(4088659968),	// VREV64d16
 1832|  29.4k|    UINT64_C(4088922112),	// VREV64d32
 1833|  29.4k|    UINT64_C(4088397824),	// VREV64d8
 1834|  29.4k|    UINT64_C(4088660032),	// VREV64q16
 1835|  29.4k|    UINT64_C(4088922176),	// VREV64q32
 1836|  29.4k|    UINT64_C(4088397888),	// VREV64q8
 1837|  29.4k|    UINT64_C(4060086592),	// VRHADDsv16i8
 1838|  29.4k|    UINT64_C(4062183680),	// VRHADDsv2i32
 1839|  29.4k|    UINT64_C(4061135104),	// VRHADDsv4i16
 1840|  29.4k|    UINT64_C(4062183744),	// VRHADDsv4i32
 1841|  29.4k|    UINT64_C(4061135168),	// VRHADDsv8i16
 1842|  29.4k|    UINT64_C(4060086528),	// VRHADDsv8i8
 1843|  29.4k|    UINT64_C(4076863808),	// VRHADDuv16i8
 1844|  29.4k|    UINT64_C(4078960896),	// VRHADDuv2i32
 1845|  29.4k|    UINT64_C(4077912320),	// VRHADDuv4i16
 1846|  29.4k|    UINT64_C(4078960960),	// VRHADDuv4i32
 1847|  29.4k|    UINT64_C(4077912384),	// VRHADDuv8i16
 1848|  29.4k|    UINT64_C(4076863744),	// VRHADDuv8i8
 1849|  29.4k|    UINT64_C(4273474368),	// VRINTAD
 1850|  29.4k|    UINT64_C(4273473856),	// VRINTAH
 1851|  29.4k|    UINT64_C(4089054464),	// VRINTANDf
 1852|  29.4k|    UINT64_C(4088792320),	// VRINTANDh
 1853|  29.4k|    UINT64_C(4089054528),	// VRINTANQf
 1854|  29.4k|    UINT64_C(4088792384),	// VRINTANQh
 1855|  29.4k|    UINT64_C(4273474112),	// VRINTAS
 1856|  29.4k|    UINT64_C(4273670976),	// VRINTMD
 1857|  29.4k|    UINT64_C(4273670464),	// VRINTMH
 1858|  29.4k|    UINT64_C(4089054848),	// VRINTMNDf
 1859|  29.4k|    UINT64_C(4088792704),	// VRINTMNDh
 1860|  29.4k|    UINT64_C(4089054912),	// VRINTMNQf
 1861|  29.4k|    UINT64_C(4088792768),	// VRINTMNQh
 1862|  29.4k|    UINT64_C(4273670720),	// VRINTMS
 1863|  29.4k|    UINT64_C(4273539904),	// VRINTND
 1864|  29.4k|    UINT64_C(4273539392),	// VRINTNH
 1865|  29.4k|    UINT64_C(4089054208),	// VRINTNNDf
 1866|  29.4k|    UINT64_C(4088792064),	// VRINTNNDh
 1867|  29.4k|    UINT64_C(4089054272),	// VRINTNNQf
 1868|  29.4k|    UINT64_C(4088792128),	// VRINTNNQh
 1869|  29.4k|    UINT64_C(4273539648),	// VRINTNS
 1870|  29.4k|    UINT64_C(4273605440),	// VRINTPD
 1871|  29.4k|    UINT64_C(4273604928),	// VRINTPH
 1872|  29.4k|    UINT64_C(4089055104),	// VRINTPNDf
 1873|  29.4k|    UINT64_C(4088792960),	// VRINTPNDh
 1874|  29.4k|    UINT64_C(4089055168),	// VRINTPNQf
 1875|  29.4k|    UINT64_C(4088793024),	// VRINTPNQh
 1876|  29.4k|    UINT64_C(4273605184),	// VRINTPS
 1877|  29.4k|    UINT64_C(246811456),	// VRINTRD
 1878|  29.4k|    UINT64_C(246810944),	// VRINTRH
 1879|  29.4k|    UINT64_C(246811200),	// VRINTRS
 1880|  29.4k|    UINT64_C(246876992),	// VRINTXD
 1881|  29.4k|    UINT64_C(246876480),	// VRINTXH
 1882|  29.4k|    UINT64_C(4089054336),	// VRINTXNDf
 1883|  29.4k|    UINT64_C(4088792192),	// VRINTXNDh
 1884|  29.4k|    UINT64_C(4089054400),	// VRINTXNQf
 1885|  29.4k|    UINT64_C(4088792256),	// VRINTXNQh
 1886|  29.4k|    UINT64_C(246876736),	// VRINTXS
 1887|  29.4k|    UINT64_C(246811584),	// VRINTZD
 1888|  29.4k|    UINT64_C(246811072),	// VRINTZH
 1889|  29.4k|    UINT64_C(4089054592),	// VRINTZNDf
 1890|  29.4k|    UINT64_C(4088792448),	// VRINTZNDh
 1891|  29.4k|    UINT64_C(4089054656),	// VRINTZNQf
 1892|  29.4k|    UINT64_C(4088792512),	// VRINTZNQh
 1893|  29.4k|    UINT64_C(246811328),	// VRINTZS
 1894|  29.4k|    UINT64_C(4060087616),	// VRSHLsv16i8
 1895|  29.4k|    UINT64_C(4063233280),	// VRSHLsv1i64
 1896|  29.4k|    UINT64_C(4062184704),	// VRSHLsv2i32
 1897|  29.4k|    UINT64_C(4063233344),	// VRSHLsv2i64
 1898|  29.4k|    UINT64_C(4061136128),	// VRSHLsv4i16
 1899|  29.4k|    UINT64_C(4062184768),	// VRSHLsv4i32
 1900|  29.4k|    UINT64_C(4061136192),	// VRSHLsv8i16
 1901|  29.4k|    UINT64_C(4060087552),	// VRSHLsv8i8
 1902|  29.4k|    UINT64_C(4076864832),	// VRSHLuv16i8
 1903|  29.4k|    UINT64_C(4080010496),	// VRSHLuv1i64
 1904|  29.4k|    UINT64_C(4078961920),	// VRSHLuv2i32
 1905|  29.4k|    UINT64_C(4080010560),	// VRSHLuv2i64
 1906|  29.4k|    UINT64_C(4077913344),	// VRSHLuv4i16
 1907|  29.4k|    UINT64_C(4078961984),	// VRSHLuv4i32
 1908|  29.4k|    UINT64_C(4077913408),	// VRSHLuv8i16
 1909|  29.4k|    UINT64_C(4076864768),	// VRSHLuv8i8
 1910|  29.4k|    UINT64_C(4070574160),	// VRSHRNv2i32
 1911|  29.4k|    UINT64_C(4069525584),	// VRSHRNv4i16
 1912|  29.4k|    UINT64_C(4069001296),	// VRSHRNv8i8
 1913|  29.4k|    UINT64_C(4068999760),	// VRSHRsv16i8
 1914|  29.4k|    UINT64_C(4068475536),	// VRSHRsv1i64
 1915|  29.4k|    UINT64_C(4070572560),	// VRSHRsv2i32
 1916|  29.4k|    UINT64_C(4068475600),	// VRSHRsv2i64
 1917|  29.4k|    UINT64_C(4069523984),	// VRSHRsv4i16
 1918|  29.4k|    UINT64_C(4070572624),	// VRSHRsv4i32
 1919|  29.4k|    UINT64_C(4069524048),	// VRSHRsv8i16
 1920|  29.4k|    UINT64_C(4068999696),	// VRSHRsv8i8
 1921|  29.4k|    UINT64_C(4085776976),	// VRSHRuv16i8
 1922|  29.4k|    UINT64_C(4085252752),	// VRSHRuv1i64
 1923|  29.4k|    UINT64_C(4087349776),	// VRSHRuv2i32
 1924|  29.4k|    UINT64_C(4085252816),	// VRSHRuv2i64
 1925|  29.4k|    UINT64_C(4086301200),	// VRSHRuv4i16
 1926|  29.4k|    UINT64_C(4087349840),	// VRSHRuv4i32
 1927|  29.4k|    UINT64_C(4086301264),	// VRSHRuv8i16
 1928|  29.4k|    UINT64_C(4085776912),	// VRSHRuv8i8
 1929|  29.4k|    UINT64_C(4089119872),	// VRSQRTEd
 1930|  29.4k|    UINT64_C(4089120128),	// VRSQRTEfd
 1931|  29.4k|    UINT64_C(4089120192),	// VRSQRTEfq
 1932|  29.4k|    UINT64_C(4088857984),	// VRSQRTEhd
 1933|  29.4k|    UINT64_C(4088858048),	// VRSQRTEhq
 1934|  29.4k|    UINT64_C(4089119936),	// VRSQRTEq
 1935|  29.4k|    UINT64_C(4062187280),	// VRSQRTSfd
 1936|  29.4k|    UINT64_C(4062187344),	// VRSQRTSfq
 1937|  29.4k|    UINT64_C(4063235856),	// VRSQRTShd
 1938|  29.4k|    UINT64_C(4063235920),	// VRSQRTShq
 1939|  29.4k|    UINT64_C(4069000016),	// VRSRAsv16i8
 1940|  29.4k|    UINT64_C(4068475792),	// VRSRAsv1i64
 1941|  29.4k|    UINT64_C(4070572816),	// VRSRAsv2i32
 1942|  29.4k|    UINT64_C(4068475856),	// VRSRAsv2i64
 1943|  29.4k|    UINT64_C(4069524240),	// VRSRAsv4i16
 1944|  29.4k|    UINT64_C(4070572880),	// VRSRAsv4i32
 1945|  29.4k|    UINT64_C(4069524304),	// VRSRAsv8i16
 1946|  29.4k|    UINT64_C(4068999952),	// VRSRAsv8i8
 1947|  29.4k|    UINT64_C(4085777232),	// VRSRAuv16i8
 1948|  29.4k|    UINT64_C(4085253008),	// VRSRAuv1i64
 1949|  29.4k|    UINT64_C(4087350032),	// VRSRAuv2i32
 1950|  29.4k|    UINT64_C(4085253072),	// VRSRAuv2i64
 1951|  29.4k|    UINT64_C(4086301456),	// VRSRAuv4i16
 1952|  29.4k|    UINT64_C(4087350096),	// VRSRAuv4i32
 1953|  29.4k|    UINT64_C(4086301520),	// VRSRAuv8i16
 1954|  29.4k|    UINT64_C(4085777168),	// VRSRAuv8i8
 1955|  29.4k|    UINT64_C(4087350784),	// VRSUBHNv2i32
 1956|  29.4k|    UINT64_C(4086302208),	// VRSUBHNv4i16
 1957|  29.4k|    UINT64_C(4085253632),	// VRSUBHNv8i8
 1958|  29.4k|    UINT64_C(4261415680),	// VSELEQD
 1959|  29.4k|    UINT64_C(4261415168),	// VSELEQH
 1960|  29.4k|    UINT64_C(4261415424),	// VSELEQS
 1961|  29.4k|    UINT64_C(4263512832),	// VSELGED
 1962|  29.4k|    UINT64_C(4263512320),	// VSELGEH
 1963|  29.4k|    UINT64_C(4263512576),	// VSELGES
 1964|  29.4k|    UINT64_C(4264561408),	// VSELGTD
 1965|  29.4k|    UINT64_C(4264560896),	// VSELGTH
 1966|  29.4k|    UINT64_C(4264561152),	// VSELGTS
 1967|  29.4k|    UINT64_C(4262464256),	// VSELVSD
 1968|  29.4k|    UINT64_C(4262463744),	// VSELVSH
 1969|  29.4k|    UINT64_C(4262464000),	// VSELVSS
 1970|  29.4k|    UINT64_C(234883888),	// VSETLNi16
 1971|  29.4k|    UINT64_C(234883856),	// VSETLNi32
 1972|  29.4k|    UINT64_C(239078160),	// VSETLNi8
 1973|  29.4k|    UINT64_C(4088791808),	// VSHLLi16
 1974|  29.4k|    UINT64_C(4089053952),	// VSHLLi32
 1975|  29.4k|    UINT64_C(4088529664),	// VSHLLi8
 1976|  29.4k|    UINT64_C(4070574608),	// VSHLLsv2i64
 1977|  29.4k|    UINT64_C(4069526032),	// VSHLLsv4i32
 1978|  29.4k|    UINT64_C(4069001744),	// VSHLLsv8i16
 1979|  29.4k|    UINT64_C(4087351824),	// VSHLLuv2i64
 1980|  29.4k|    UINT64_C(4086303248),	// VSHLLuv4i32
 1981|  29.4k|    UINT64_C(4085778960),	// VSHLLuv8i16
 1982|  29.4k|    UINT64_C(4069000528),	// VSHLiv16i8
 1983|  29.4k|    UINT64_C(4068476304),	// VSHLiv1i64
 1984|  29.4k|    UINT64_C(4070573328),	// VSHLiv2i32
 1985|  29.4k|    UINT64_C(4068476368),	// VSHLiv2i64
 1986|  29.4k|    UINT64_C(4069524752),	// VSHLiv4i16
 1987|  29.4k|    UINT64_C(4070573392),	// VSHLiv4i32
 1988|  29.4k|    UINT64_C(4069524816),	// VSHLiv8i16
 1989|  29.4k|    UINT64_C(4069000464),	// VSHLiv8i8
 1990|  29.4k|    UINT64_C(4060087360),	// VSHLsv16i8
 1991|  29.4k|    UINT64_C(4063233024),	// VSHLsv1i64
 1992|  29.4k|    UINT64_C(4062184448),	// VSHLsv2i32
 1993|  29.4k|    UINT64_C(4063233088),	// VSHLsv2i64
 1994|  29.4k|    UINT64_C(4061135872),	// VSHLsv4i16
 1995|  29.4k|    UINT64_C(4062184512),	// VSHLsv4i32
 1996|  29.4k|    UINT64_C(4061135936),	// VSHLsv8i16
 1997|  29.4k|    UINT64_C(4060087296),	// VSHLsv8i8
 1998|  29.4k|    UINT64_C(4076864576),	// VSHLuv16i8
 1999|  29.4k|    UINT64_C(4080010240),	// VSHLuv1i64
 2000|  29.4k|    UINT64_C(4078961664),	// VSHLuv2i32
 2001|  29.4k|    UINT64_C(4080010304),	// VSHLuv2i64
 2002|  29.4k|    UINT64_C(4077913088),	// VSHLuv4i16
 2003|  29.4k|    UINT64_C(4078961728),	// VSHLuv4i32
 2004|  29.4k|    UINT64_C(4077913152),	// VSHLuv8i16
 2005|  29.4k|    UINT64_C(4076864512),	// VSHLuv8i8
 2006|  29.4k|    UINT64_C(4070574096),	// VSHRNv2i32
 2007|  29.4k|    UINT64_C(4069525520),	// VSHRNv4i16
 2008|  29.4k|    UINT64_C(4069001232),	// VSHRNv8i8
 2009|  29.4k|    UINT64_C(4068999248),	// VSHRsv16i8
 2010|  29.4k|    UINT64_C(4068475024),	// VSHRsv1i64
 2011|  29.4k|    UINT64_C(4070572048),	// VSHRsv2i32
 2012|  29.4k|    UINT64_C(4068475088),	// VSHRsv2i64
 2013|  29.4k|    UINT64_C(4069523472),	// VSHRsv4i16
 2014|  29.4k|    UINT64_C(4070572112),	// VSHRsv4i32
 2015|  29.4k|    UINT64_C(4069523536),	// VSHRsv8i16
 2016|  29.4k|    UINT64_C(4068999184),	// VSHRsv8i8
 2017|  29.4k|    UINT64_C(4085776464),	// VSHRuv16i8
 2018|  29.4k|    UINT64_C(4085252240),	// VSHRuv1i64
 2019|  29.4k|    UINT64_C(4087349264),	// VSHRuv2i32
 2020|  29.4k|    UINT64_C(4085252304),	// VSHRuv2i64
 2021|  29.4k|    UINT64_C(4086300688),	// VSHRuv4i16
 2022|  29.4k|    UINT64_C(4087349328),	// VSHRuv4i32
 2023|  29.4k|    UINT64_C(4086300752),	// VSHRuv8i16
 2024|  29.4k|    UINT64_C(4085776400),	// VSHRuv8i8
 2025|  29.4k|    UINT64_C(247073600),	// VSHTOD
 2026|  29.4k|    UINT64_C(247073088),	// VSHTOH
 2027|  29.4k|    UINT64_C(247073344),	// VSHTOS
 2028|  29.4k|    UINT64_C(246942656),	// VSITOD
 2029|  29.4k|    UINT64_C(246942144),	// VSITOH
 2030|  29.4k|    UINT64_C(246942400),	// VSITOS
 2031|  29.4k|    UINT64_C(4085777744),	// VSLIv16i8
 2032|  29.4k|    UINT64_C(4085253520),	// VSLIv1i64
 2033|  29.4k|    UINT64_C(4087350544),	// VSLIv2i32
 2034|  29.4k|    UINT64_C(4085253584),	// VSLIv2i64
 2035|  29.4k|    UINT64_C(4086301968),	// VSLIv4i16
 2036|  29.4k|    UINT64_C(4087350608),	// VSLIv4i32
 2037|  29.4k|    UINT64_C(4086302032),	// VSLIv8i16
 2038|  29.4k|    UINT64_C(4085777680),	// VSLIv8i8
 2039|  29.4k|    UINT64_C(247073728),	// VSLTOD
 2040|  29.4k|    UINT64_C(247073216),	// VSLTOH
 2041|  29.4k|    UINT64_C(247073472),	// VSLTOS
 2042|  29.4k|    UINT64_C(246483904),	// VSQRTD
 2043|  29.4k|    UINT64_C(246483392),	// VSQRTH
 2044|  29.4k|    UINT64_C(246483648),	// VSQRTS
 2045|  29.4k|    UINT64_C(4068999504),	// VSRAsv16i8
 2046|  29.4k|    UINT64_C(4068475280),	// VSRAsv1i64
 2047|  29.4k|    UINT64_C(4070572304),	// VSRAsv2i32
 2048|  29.4k|    UINT64_C(4068475344),	// VSRAsv2i64
 2049|  29.4k|    UINT64_C(4069523728),	// VSRAsv4i16
 2050|  29.4k|    UINT64_C(4070572368),	// VSRAsv4i32
 2051|  29.4k|    UINT64_C(4069523792),	// VSRAsv8i16
 2052|  29.4k|    UINT64_C(4068999440),	// VSRAsv8i8
 2053|  29.4k|    UINT64_C(4085776720),	// VSRAuv16i8
 2054|  29.4k|    UINT64_C(4085252496),	// VSRAuv1i64
 2055|  29.4k|    UINT64_C(4087349520),	// VSRAuv2i32
 2056|  29.4k|    UINT64_C(4085252560),	// VSRAuv2i64
 2057|  29.4k|    UINT64_C(4086300944),	// VSRAuv4i16
 2058|  29.4k|    UINT64_C(4087349584),	// VSRAuv4i32
 2059|  29.4k|    UINT64_C(4086301008),	// VSRAuv8i16
 2060|  29.4k|    UINT64_C(4085776656),	// VSRAuv8i8
 2061|  29.4k|    UINT64_C(4085777488),	// VSRIv16i8
 2062|  29.4k|    UINT64_C(4085253264),	// VSRIv1i64
 2063|  29.4k|    UINT64_C(4087350288),	// VSRIv2i32
 2064|  29.4k|    UINT64_C(4085253328),	// VSRIv2i64
 2065|  29.4k|    UINT64_C(4086301712),	// VSRIv4i16
 2066|  29.4k|    UINT64_C(4087350352),	// VSRIv4i32
 2067|  29.4k|    UINT64_C(4086301776),	// VSRIv8i16
 2068|  29.4k|    UINT64_C(4085777424),	// VSRIv8i8
 2069|  29.4k|    UINT64_C(4102030351),	// VST1LNd16
 2070|  29.4k|    UINT64_C(4102030336),	// VST1LNd16_UPD
 2071|  29.4k|    UINT64_C(4102031375),	// VST1LNd32
 2072|  29.4k|    UINT64_C(4102031360),	// VST1LNd32_UPD
 2073|  29.4k|    UINT64_C(4102029327),	// VST1LNd8
 2074|  29.4k|    UINT64_C(4102029312),	// VST1LNd8_UPD
 2075|  29.4k|    UINT64_C(0),
 2076|  29.4k|    UINT64_C(0),
 2077|  29.4k|    UINT64_C(0),
 2078|  29.4k|    UINT64_C(0),
 2079|  29.4k|    UINT64_C(0),
 2080|  29.4k|    UINT64_C(0),
 2081|  29.4k|    UINT64_C(0),
 2082|  29.4k|    UINT64_C(0),
 2083|  29.4k|    UINT64_C(0),
 2084|  29.4k|    UINT64_C(0),	// VST1LNq16Pseudo
 2085|  29.4k|    UINT64_C(0),	// VST1LNq16Pseudo_UPD
 2086|  29.4k|    UINT64_C(0),	// VST1LNq32Pseudo
 2087|  29.4k|    UINT64_C(0),	// VST1LNq32Pseudo_UPD
 2088|  29.4k|    UINT64_C(0),	// VST1LNq8Pseudo
 2089|  29.4k|    UINT64_C(0),	// VST1LNq8Pseudo_UPD
 2090|  29.4k|    UINT64_C(4093642575),	// VST1d16
 2091|  29.4k|    UINT64_C(4093641295),	// VST1d16Q
 2092|  29.4k|    UINT64_C(4093641293),	// VST1d16Qwb_fixed
 2093|  29.4k|    UINT64_C(4093641280),	// VST1d16Qwb_register
 2094|  29.4k|    UINT64_C(4093642319),	// VST1d16T
 2095|  29.4k|    UINT64_C(4093642317),	// VST1d16Twb_fixed
 2096|  29.4k|    UINT64_C(4093642304),	// VST1d16Twb_register
 2097|  29.4k|    UINT64_C(4093642573),	// VST1d16wb_fixed
 2098|  29.4k|    UINT64_C(4093642560),	// VST1d16wb_register
 2099|  29.4k|    UINT64_C(4093642639),	// VST1d32
 2100|  29.4k|    UINT64_C(4093641359),	// VST1d32Q
 2101|  29.4k|    UINT64_C(4093641357),	// VST1d32Qwb_fixed
 2102|  29.4k|    UINT64_C(4093641344),	// VST1d32Qwb_register
 2103|  29.4k|    UINT64_C(4093642383),	// VST1d32T
 2104|  29.4k|    UINT64_C(4093642381),	// VST1d32Twb_fixed
 2105|  29.4k|    UINT64_C(4093642368),	// VST1d32Twb_register
 2106|  29.4k|    UINT64_C(4093642637),	// VST1d32wb_fixed
 2107|  29.4k|    UINT64_C(4093642624),	// VST1d32wb_register
 2108|  29.4k|    UINT64_C(4093642703),	// VST1d64
 2109|  29.4k|    UINT64_C(4093641423),	// VST1d64Q
 2110|  29.4k|    UINT64_C(0),	// VST1d64QPseudo
 2111|  29.4k|    UINT64_C(0),	// VST1d64QPseudoWB_fixed
 2112|  29.4k|    UINT64_C(0),	// VST1d64QPseudoWB_register
 2113|  29.4k|    UINT64_C(4093641421),	// VST1d64Qwb_fixed
 2114|  29.4k|    UINT64_C(4093641408),	// VST1d64Qwb_register
 2115|  29.4k|    UINT64_C(4093642447),	// VST1d64T
 2116|  29.4k|    UINT64_C(0),	// VST1d64TPseudo
 2117|  29.4k|    UINT64_C(0),	// VST1d64TPseudoWB_fixed
 2118|  29.4k|    UINT64_C(0),	// VST1d64TPseudoWB_register
 2119|  29.4k|    UINT64_C(4093642445),	// VST1d64Twb_fixed
 2120|  29.4k|    UINT64_C(4093642432),	// VST1d64Twb_register
 2121|  29.4k|    UINT64_C(4093642701),	// VST1d64wb_fixed
 2122|  29.4k|    UINT64_C(4093642688),	// VST1d64wb_register
 2123|  29.4k|    UINT64_C(4093642511),	// VST1d8
 2124|  29.4k|    UINT64_C(4093641231),	// VST1d8Q
 2125|  29.4k|    UINT64_C(4093641229),	// VST1d8Qwb_fixed
 2126|  29.4k|    UINT64_C(4093641216),	// VST1d8Qwb_register
 2127|  29.4k|    UINT64_C(4093642255),	// VST1d8T
 2128|  29.4k|    UINT64_C(4093642253),	// VST1d8Twb_fixed
 2129|  29.4k|    UINT64_C(4093642240),	// VST1d8Twb_register
 2130|  29.4k|    UINT64_C(4093642509),	// VST1d8wb_fixed
 2131|  29.4k|    UINT64_C(4093642496),	// VST1d8wb_register
 2132|  29.4k|    UINT64_C(4093643343),	// VST1q16
 2133|  29.4k|    UINT64_C(4093643341),	// VST1q16wb_fixed
 2134|  29.4k|    UINT64_C(4093643328),	// VST1q16wb_register
 2135|  29.4k|    UINT64_C(4093643407),	// VST1q32
 2136|  29.4k|    UINT64_C(4093643405),	// VST1q32wb_fixed
 2137|  29.4k|    UINT64_C(4093643392),	// VST1q32wb_register
 2138|  29.4k|    UINT64_C(4093643471),	// VST1q64
 2139|  29.4k|    UINT64_C(4093643469),	// VST1q64wb_fixed
 2140|  29.4k|    UINT64_C(4093643456),	// VST1q64wb_register
 2141|  29.4k|    UINT64_C(4093643279),	// VST1q8
 2142|  29.4k|    UINT64_C(4093643277),	// VST1q8wb_fixed
 2143|  29.4k|    UINT64_C(4093643264),	// VST1q8wb_register
 2144|  29.4k|    UINT64_C(4102030607),	// VST2LNd16
 2145|  29.4k|    UINT64_C(0),	// VST2LNd16Pseudo
 2146|  29.4k|    UINT64_C(0),	// VST2LNd16Pseudo_UPD
 2147|  29.4k|    UINT64_C(4102030592),	// VST2LNd16_UPD
 2148|  29.4k|    UINT64_C(4102031631),	// VST2LNd32
 2149|  29.4k|    UINT64_C(0),	// VST2LNd32Pseudo
 2150|  29.4k|    UINT64_C(0),	// VST2LNd32Pseudo_UPD
 2151|  29.4k|    UINT64_C(4102031616),	// VST2LNd32_UPD
 2152|  29.4k|    UINT64_C(4102029583),	// VST2LNd8
 2153|  29.4k|    UINT64_C(0),	// VST2LNd8Pseudo
 2154|  29.4k|    UINT64_C(0),	// VST2LNd8Pseudo_UPD
 2155|  29.4k|    UINT64_C(4102029568),	// VST2LNd8_UPD
 2156|  29.4k|    UINT64_C(0),
 2157|  29.4k|    UINT64_C(0),
 2158|  29.4k|    UINT64_C(0),
 2159|  29.4k|    UINT64_C(0),
 2160|  29.4k|    UINT64_C(0),
 2161|  29.4k|    UINT64_C(0),
 2162|  29.4k|    UINT64_C(0),
 2163|  29.4k|    UINT64_C(0),
 2164|  29.4k|    UINT64_C(0),
 2165|  29.4k|    UINT64_C(4102030639),	// VST2LNq16
 2166|  29.4k|    UINT64_C(0),	// VST2LNq16Pseudo
 2167|  29.4k|    UINT64_C(0),	// VST2LNq16Pseudo_UPD
 2168|  29.4k|    UINT64_C(4102030624),	// VST2LNq16_UPD
 2169|  29.4k|    UINT64_C(4102031695),	// VST2LNq32
 2170|  29.4k|    UINT64_C(0),	// VST2LNq32Pseudo
 2171|  29.4k|    UINT64_C(0),	// VST2LNq32Pseudo_UPD
 2172|  29.4k|    UINT64_C(4102031680),	// VST2LNq32_UPD
 2173|  29.4k|    UINT64_C(0),
 2174|  29.4k|    UINT64_C(0),
 2175|  29.4k|    UINT64_C(0),
 2176|  29.4k|    UINT64_C(0),
 2177|  29.4k|    UINT64_C(0),
 2178|  29.4k|    UINT64_C(0),
 2179|  29.4k|    UINT64_C(4093643087),	// VST2b16
 2180|  29.4k|    UINT64_C(4093643085),	// VST2b16wb_fixed
 2181|  29.4k|    UINT64_C(4093643072),	// VST2b16wb_register
 2182|  29.4k|    UINT64_C(4093643151),	// VST2b32
 2183|  29.4k|    UINT64_C(4093643149),	// VST2b32wb_fixed
 2184|  29.4k|    UINT64_C(4093643136),	// VST2b32wb_register
 2185|  29.4k|    UINT64_C(4093643023),	// VST2b8
 2186|  29.4k|    UINT64_C(4093643021),	// VST2b8wb_fixed
 2187|  29.4k|    UINT64_C(4093643008),	// VST2b8wb_register
 2188|  29.4k|    UINT64_C(4093642831),	// VST2d16
 2189|  29.4k|    UINT64_C(4093642829),	// VST2d16wb_fixed
 2190|  29.4k|    UINT64_C(4093642816),	// VST2d16wb_register
 2191|  29.4k|    UINT64_C(4093642895),	// VST2d32
 2192|  29.4k|    UINT64_C(4093642893),	// VST2d32wb_fixed
 2193|  29.4k|    UINT64_C(4093642880),	// VST2d32wb_register
 2194|  29.4k|    UINT64_C(4093642767),	// VST2d8
 2195|  29.4k|    UINT64_C(4093642765),	// VST2d8wb_fixed
 2196|  29.4k|    UINT64_C(4093642752),	// VST2d8wb_register
 2197|  29.4k|    UINT64_C(4093641551),	// VST2q16
 2198|  29.4k|    UINT64_C(0),	// VST2q16Pseudo
 2199|  29.4k|    UINT64_C(0),	// VST2q16PseudoWB_fixed
 2200|  29.4k|    UINT64_C(0),	// VST2q16PseudoWB_register
 2201|  29.4k|    UINT64_C(4093641549),	// VST2q16wb_fixed
 2202|  29.4k|    UINT64_C(4093641536),	// VST2q16wb_register
 2203|  29.4k|    UINT64_C(4093641615),	// VST2q32
 2204|  29.4k|    UINT64_C(0),	// VST2q32Pseudo
 2205|  29.4k|    UINT64_C(0),	// VST2q32PseudoWB_fixed
 2206|  29.4k|    UINT64_C(0),	// VST2q32PseudoWB_register
 2207|  29.4k|    UINT64_C(4093641613),	// VST2q32wb_fixed
 2208|  29.4k|    UINT64_C(4093641600),	// VST2q32wb_register
 2209|  29.4k|    UINT64_C(4093641487),	// VST2q8
 2210|  29.4k|    UINT64_C(0),	// VST2q8Pseudo
 2211|  29.4k|    UINT64_C(0),	// VST2q8PseudoWB_fixed
 2212|  29.4k|    UINT64_C(0),	// VST2q8PseudoWB_register
 2213|  29.4k|    UINT64_C(4093641485),	// VST2q8wb_fixed
 2214|  29.4k|    UINT64_C(4093641472),	// VST2q8wb_register
 2215|  29.4k|    UINT64_C(4102030863),	// VST3LNd16
 2216|  29.4k|    UINT64_C(0),	// VST3LNd16Pseudo
 2217|  29.4k|    UINT64_C(0),	// VST3LNd16Pseudo_UPD
 2218|  29.4k|    UINT64_C(4102030848),	// VST3LNd16_UPD
 2219|  29.4k|    UINT64_C(4102031887),	// VST3LNd32
 2220|  29.4k|    UINT64_C(0),	// VST3LNd32Pseudo
 2221|  29.4k|    UINT64_C(0),	// VST3LNd32Pseudo_UPD
 2222|  29.4k|    UINT64_C(4102031872),	// VST3LNd32_UPD
 2223|  29.4k|    UINT64_C(4102029839),	// VST3LNd8
 2224|  29.4k|    UINT64_C(0),	// VST3LNd8Pseudo
 2225|  29.4k|    UINT64_C(0),	// VST3LNd8Pseudo_UPD
 2226|  29.4k|    UINT64_C(4102029824),	// VST3LNd8_UPD
 2227|  29.4k|    UINT64_C(0),
 2228|  29.4k|    UINT64_C(0),
 2229|  29.4k|    UINT64_C(0),
 2230|  29.4k|    UINT64_C(0),
 2231|  29.4k|    UINT64_C(0),
 2232|  29.4k|    UINT64_C(0),
 2233|  29.4k|    UINT64_C(0),
 2234|  29.4k|    UINT64_C(0),
 2235|  29.4k|    UINT64_C(0),
 2236|  29.4k|    UINT64_C(4102030895),	// VST3LNq16
 2237|  29.4k|    UINT64_C(0),	// VST3LNq16Pseudo
 2238|  29.4k|    UINT64_C(0),	// VST3LNq16Pseudo_UPD
 2239|  29.4k|    UINT64_C(4102030880),	// VST3LNq16_UPD
 2240|  29.4k|    UINT64_C(4102031951),	// VST3LNq32
 2241|  29.4k|    UINT64_C(0),	// VST3LNq32Pseudo
 2242|  29.4k|    UINT64_C(0),	// VST3LNq32Pseudo_UPD
 2243|  29.4k|    UINT64_C(4102031936),	// VST3LNq32_UPD
 2244|  29.4k|    UINT64_C(0),
 2245|  29.4k|    UINT64_C(0),
 2246|  29.4k|    UINT64_C(0),
 2247|  29.4k|    UINT64_C(0),
 2248|  29.4k|    UINT64_C(0),
 2249|  29.4k|    UINT64_C(0),
 2250|  29.4k|    UINT64_C(4093641807),	// VST3d16
 2251|  29.4k|    UINT64_C(0),	// VST3d16Pseudo
 2252|  29.4k|    UINT64_C(0),	// VST3d16Pseudo_UPD
 2253|  29.4k|    UINT64_C(4093641792),	// VST3d16_UPD
 2254|  29.4k|    UINT64_C(4093641871),	// VST3d32
 2255|  29.4k|    UINT64_C(0),	// VST3d32Pseudo
 2256|  29.4k|    UINT64_C(0),	// VST3d32Pseudo_UPD
 2257|  29.4k|    UINT64_C(4093641856),	// VST3d32_UPD
 2258|  29.4k|    UINT64_C(4093641743),	// VST3d8
 2259|  29.4k|    UINT64_C(0),	// VST3d8Pseudo
 2260|  29.4k|    UINT64_C(0),	// VST3d8Pseudo_UPD
 2261|  29.4k|    UINT64_C(4093641728),	// VST3d8_UPD
 2262|  29.4k|    UINT64_C(0),
 2263|  29.4k|    UINT64_C(0),
 2264|  29.4k|    UINT64_C(0),
 2265|  29.4k|    UINT64_C(0),
 2266|  29.4k|    UINT64_C(0),
 2267|  29.4k|    UINT64_C(0),
 2268|  29.4k|    UINT64_C(0),
 2269|  29.4k|    UINT64_C(0),
 2270|  29.4k|    UINT64_C(0),
 2271|  29.4k|    UINT64_C(4093642063),	// VST3q16
 2272|  29.4k|    UINT64_C(0),	// VST3q16Pseudo_UPD
 2273|  29.4k|    UINT64_C(4093642048),	// VST3q16_UPD
 2274|  29.4k|    UINT64_C(0),	// VST3q16oddPseudo
 2275|  29.4k|    UINT64_C(0),	// VST3q16oddPseudo_UPD
 2276|  29.4k|    UINT64_C(4093642127),	// VST3q32
 2277|  29.4k|    UINT64_C(0),	// VST3q32Pseudo_UPD
 2278|  29.4k|    UINT64_C(4093642112),	// VST3q32_UPD
 2279|  29.4k|    UINT64_C(0),	// VST3q32oddPseudo
 2280|  29.4k|    UINT64_C(0),	// VST3q32oddPseudo_UPD
 2281|  29.4k|    UINT64_C(4093641999),	// VST3q8
 2282|  29.4k|    UINT64_C(0),	// VST3q8Pseudo_UPD
 2283|  29.4k|    UINT64_C(4093641984),	// VST3q8_UPD
 2284|  29.4k|    UINT64_C(0),	// VST3q8oddPseudo
 2285|  29.4k|    UINT64_C(0),	// VST3q8oddPseudo_UPD
 2286|  29.4k|    UINT64_C(0),
 2287|  29.4k|    UINT64_C(0),
 2288|  29.4k|    UINT64_C(0),
 2289|  29.4k|    UINT64_C(0),
 2290|  29.4k|    UINT64_C(0),
 2291|  29.4k|    UINT64_C(0),
 2292|  29.4k|    UINT64_C(0),
 2293|  29.4k|    UINT64_C(0),
 2294|  29.4k|    UINT64_C(0),
 2295|  29.4k|    UINT64_C(4102031119),	// VST4LNd16
 2296|  29.4k|    UINT64_C(0),	// VST4LNd16Pseudo
 2297|  29.4k|    UINT64_C(0),	// VST4LNd16Pseudo_UPD
 2298|  29.4k|    UINT64_C(4102031104),	// VST4LNd16_UPD
 2299|  29.4k|    UINT64_C(4102032143),	// VST4LNd32
 2300|  29.4k|    UINT64_C(0),	// VST4LNd32Pseudo
 2301|  29.4k|    UINT64_C(0),	// VST4LNd32Pseudo_UPD
 2302|  29.4k|    UINT64_C(4102032128),	// VST4LNd32_UPD
 2303|  29.4k|    UINT64_C(4102030095),	// VST4LNd8
 2304|  29.4k|    UINT64_C(0),	// VST4LNd8Pseudo
 2305|  29.4k|    UINT64_C(0),	// VST4LNd8Pseudo_UPD
 2306|  29.4k|    UINT64_C(4102030080),	// VST4LNd8_UPD
 2307|  29.4k|    UINT64_C(0),
 2308|  29.4k|    UINT64_C(0),
 2309|  29.4k|    UINT64_C(0),
 2310|  29.4k|    UINT64_C(0),
 2311|  29.4k|    UINT64_C(0),
 2312|  29.4k|    UINT64_C(0),
 2313|  29.4k|    UINT64_C(0),
 2314|  29.4k|    UINT64_C(0),
 2315|  29.4k|    UINT64_C(0),
 2316|  29.4k|    UINT64_C(4102031151),	// VST4LNq16
 2317|  29.4k|    UINT64_C(0),	// VST4LNq16Pseudo
 2318|  29.4k|    UINT64_C(0),	// VST4LNq16Pseudo_UPD
 2319|  29.4k|    UINT64_C(4102031136),	// VST4LNq16_UPD
 2320|  29.4k|    UINT64_C(4102032207),	// VST4LNq32
 2321|  29.4k|    UINT64_C(0),	// VST4LNq32Pseudo
 2322|  29.4k|    UINT64_C(0),	// VST4LNq32Pseudo_UPD
 2323|  29.4k|    UINT64_C(4102032192),	// VST4LNq32_UPD
 2324|  29.4k|    UINT64_C(0),
 2325|  29.4k|    UINT64_C(0),
 2326|  29.4k|    UINT64_C(0),
 2327|  29.4k|    UINT64_C(0),
 2328|  29.4k|    UINT64_C(0),
 2329|  29.4k|    UINT64_C(0),
 2330|  29.4k|    UINT64_C(4093640783),	// VST4d16
 2331|  29.4k|    UINT64_C(0),	// VST4d16Pseudo
 2332|  29.4k|    UINT64_C(0),	// VST4d16Pseudo_UPD
 2333|  29.4k|    UINT64_C(4093640768),	// VST4d16_UPD
 2334|  29.4k|    UINT64_C(4093640847),	// VST4d32
 2335|  29.4k|    UINT64_C(0),	// VST4d32Pseudo
 2336|  29.4k|    UINT64_C(0),	// VST4d32Pseudo_UPD
 2337|  29.4k|    UINT64_C(4093640832),	// VST4d32_UPD
 2338|  29.4k|    UINT64_C(4093640719),	// VST4d8
 2339|  29.4k|    UINT64_C(0),	// VST4d8Pseudo
 2340|  29.4k|    UINT64_C(0),	// VST4d8Pseudo_UPD
 2341|  29.4k|    UINT64_C(4093640704),	// VST4d8_UPD
 2342|  29.4k|    UINT64_C(0),
 2343|  29.4k|    UINT64_C(0),
 2344|  29.4k|    UINT64_C(0),
 2345|  29.4k|    UINT64_C(0),
 2346|  29.4k|    UINT64_C(0),
 2347|  29.4k|    UINT64_C(0),
 2348|  29.4k|    UINT64_C(0),
 2349|  29.4k|    UINT64_C(0),
 2350|  29.4k|    UINT64_C(0),
 2351|  29.4k|    UINT64_C(4093641039),	// VST4q16
 2352|  29.4k|    UINT64_C(0),	// VST4q16Pseudo_UPD
 2353|  29.4k|    UINT64_C(4093641024),	// VST4q16_UPD
 2354|  29.4k|    UINT64_C(0),	// VST4q16oddPseudo
 2355|  29.4k|    UINT64_C(0),	// VST4q16oddPseudo_UPD
 2356|  29.4k|    UINT64_C(4093641103),	// VST4q32
 2357|  29.4k|    UINT64_C(0),	// VST4q32Pseudo_UPD
 2358|  29.4k|    UINT64_C(4093641088),	// VST4q32_UPD
 2359|  29.4k|    UINT64_C(0),	// VST4q32oddPseudo
 2360|  29.4k|    UINT64_C(0),	// VST4q32oddPseudo_UPD
 2361|  29.4k|    UINT64_C(4093640975),	// VST4q8
 2362|  29.4k|    UINT64_C(0),	// VST4q8Pseudo_UPD
 2363|  29.4k|    UINT64_C(4093640960),	// VST4q8_UPD
 2364|  29.4k|    UINT64_C(0),	// VST4q8oddPseudo
 2365|  29.4k|    UINT64_C(0),	// VST4q8oddPseudo_UPD
 2366|  29.4k|    UINT64_C(0),
 2367|  29.4k|    UINT64_C(0),
 2368|  29.4k|    UINT64_C(0),
 2369|  29.4k|    UINT64_C(0),
 2370|  29.4k|    UINT64_C(0),
 2371|  29.4k|    UINT64_C(0),
 2372|  29.4k|    UINT64_C(0),
 2373|  29.4k|    UINT64_C(0),
 2374|  29.4k|    UINT64_C(0),
 2375|  29.4k|    UINT64_C(220203776),	// VSTMDDB_UPD
 2376|  29.4k|    UINT64_C(209718016),	// VSTMDIA
 2377|  29.4k|    UINT64_C(211815168),	// VSTMDIA_UPD
 2378|  29.4k|    UINT64_C(0),	// VSTMQIA
 2379|  29.4k|    UINT64_C(220203520),	// VSTMSDB_UPD
 2380|  29.4k|    UINT64_C(209717760),	// VSTMSIA
 2381|  29.4k|    UINT64_C(211814912),	// VSTMSIA_UPD
 2382|  29.4k|    UINT64_C(218106624),	// VSTRD
 2383|  29.4k|    UINT64_C(218106112),	// VSTRH
 2384|  29.4k|    UINT64_C(218106368),	// VSTRS
 2385|  29.4k|    UINT64_C(238029632),	// VSUBD
 2386|  29.4k|    UINT64_C(238029120),	// VSUBH
 2387|  29.4k|    UINT64_C(4070573568),	// VSUBHNv2i32
 2388|  29.4k|    UINT64_C(4069524992),	// VSUBHNv4i16
 2389|  29.4k|    UINT64_C(4068476416),	// VSUBHNv8i8
 2390|  29.4k|    UINT64_C(4070572544),	// VSUBLsv2i64
 2391|  29.4k|    UINT64_C(4069523968),	// VSUBLsv4i32
 2392|  29.4k|    UINT64_C(4068475392),	// VSUBLsv8i16
 2393|  29.4k|    UINT64_C(4087349760),	// VSUBLuv2i64
 2394|  29.4k|    UINT64_C(4086301184),	// VSUBLuv4i32
 2395|  29.4k|    UINT64_C(4085252608),	// VSUBLuv8i16
 2396|  29.4k|    UINT64_C(238029376),	// VSUBS
 2397|  29.4k|    UINT64_C(4070572800),	// VSUBWsv2i64
 2398|  29.4k|    UINT64_C(4069524224),	// VSUBWsv4i32
 2399|  29.4k|    UINT64_C(4068475648),	// VSUBWsv8i16
 2400|  29.4k|    UINT64_C(4087350016),	// VSUBWuv2i64
 2401|  29.4k|    UINT64_C(4086301440),	// VSUBWuv4i32
 2402|  29.4k|    UINT64_C(4085252864),	// VSUBWuv8i16
 2403|  29.4k|    UINT64_C(4062186752),	// VSUBfd
 2404|  29.4k|    UINT64_C(4062186816),	// VSUBfq
 2405|  29.4k|    UINT64_C(4063235328),	// VSUBhd
 2406|  29.4k|    UINT64_C(4063235392),	// VSUBhq
 2407|  29.4k|    UINT64_C(4076865600),	// VSUBv16i8
 2408|  29.4k|    UINT64_C(4080011264),	// VSUBv1i64
 2409|  29.4k|    UINT64_C(4078962688),	// VSUBv2i32
 2410|  29.4k|    UINT64_C(4080011328),	// VSUBv2i64
 2411|  29.4k|    UINT64_C(4077914112),	// VSUBv4i16
 2412|  29.4k|    UINT64_C(4078962752),	// VSUBv4i32
 2413|  29.4k|    UINT64_C(4077914176),	// VSUBv8i16
 2414|  29.4k|    UINT64_C(4076865536),	// VSUBv8i8
 2415|  29.4k|    UINT64_C(4088528896),	// VSWPd
 2416|  29.4k|    UINT64_C(4088528960),	// VSWPq
 2417|  29.4k|    UINT64_C(4088399872),	// VTBL1
 2418|  29.4k|    UINT64_C(4088400128),	// VTBL2
 2419|  29.4k|    UINT64_C(4088400384),	// VTBL3
 2420|  29.4k|    UINT64_C(0),	// VTBL3Pseudo
 2421|  29.4k|    UINT64_C(4088400640),	// VTBL4
 2422|  29.4k|    UINT64_C(0),	// VTBL4Pseudo
 2423|  29.4k|    UINT64_C(4088399936),	// VTBX1
 2424|  29.4k|    UINT64_C(4088400192),	// VTBX2
 2425|  29.4k|    UINT64_C(4088400448),	// VTBX3
 2426|  29.4k|    UINT64_C(0),	// VTBX3Pseudo
 2427|  29.4k|    UINT64_C(4088400704),	// VTBX4
 2428|  29.4k|    UINT64_C(0),	// VTBX4Pseudo
 2429|  29.4k|    UINT64_C(247335744),	// VTOSHD
 2430|  29.4k|    UINT64_C(247335232),	// VTOSHH
 2431|  29.4k|    UINT64_C(247335488),	// VTOSHS
 2432|  29.4k|    UINT64_C(247270208),	// VTOSIRD
 2433|  29.4k|    UINT64_C(247269696),	// VTOSIRH
 2434|  29.4k|    UINT64_C(247269952),	// VTOSIRS
 2435|  29.4k|    UINT64_C(247270336),	// VTOSIZD
 2436|  29.4k|    UINT64_C(247269824),	// VTOSIZH
 2437|  29.4k|    UINT64_C(247270080),	// VTOSIZS
 2438|  29.4k|    UINT64_C(247335872),	// VTOSLD
 2439|  29.4k|    UINT64_C(247335360),	// VTOSLH
 2440|  29.4k|    UINT64_C(247335616),	// VTOSLS
 2441|  29.4k|    UINT64_C(247401280),	// VTOUHD
 2442|  29.4k|    UINT64_C(247400768),	// VTOUHH
 2443|  29.4k|    UINT64_C(247401024),	// VTOUHS
 2444|  29.4k|    UINT64_C(247204672),	// VTOUIRD
 2445|  29.4k|    UINT64_C(247204160),	// VTOUIRH
 2446|  29.4k|    UINT64_C(247204416),	// VTOUIRS
 2447|  29.4k|    UINT64_C(247204800),	// VTOUIZD
 2448|  29.4k|    UINT64_C(247204288),	// VTOUIZH
 2449|  29.4k|    UINT64_C(247204544),	// VTOUIZS
 2450|  29.4k|    UINT64_C(247401408),	// VTOULD
 2451|  29.4k|    UINT64_C(247400896),	// VTOULH
 2452|  29.4k|    UINT64_C(247401152),	// VTOULS
 2453|  29.4k|    UINT64_C(4088791168),	// VTRNd16
 2454|  29.4k|    UINT64_C(4089053312),	// VTRNd32
 2455|  29.4k|    UINT64_C(4088529024),	// VTRNd8
 2456|  29.4k|    UINT64_C(4088791232),	// VTRNq16
 2457|  29.4k|    UINT64_C(4089053376),	// VTRNq32
 2458|  29.4k|    UINT64_C(4088529088),	// VTRNq8
 2459|  29.4k|    UINT64_C(4060088400),	// VTSTv16i8
 2460|  29.4k|    UINT64_C(4062185488),	// VTSTv2i32
 2461|  29.4k|    UINT64_C(4061136912),	// VTSTv4i16
 2462|  29.4k|    UINT64_C(4062185552),	// VTSTv4i32
 2463|  29.4k|    UINT64_C(4061136976),	// VTSTv8i16
 2464|  29.4k|    UINT64_C(4060088336),	// VTSTv8i8
 2465|  29.4k|    UINT64_C(247139136),	// VUHTOD
 2466|  29.4k|    UINT64_C(247138624),	// VUHTOH
 2467|  29.4k|    UINT64_C(247138880),	// VUHTOS
 2468|  29.4k|    UINT64_C(246942528),	// VUITOD
 2469|  29.4k|    UINT64_C(246942016),	// VUITOH
 2470|  29.4k|    UINT64_C(246942272),	// VUITOS
 2471|  29.4k|    UINT64_C(247139264),	// VULTOD
 2472|  29.4k|    UINT64_C(247138752),	// VULTOH
 2473|  29.4k|    UINT64_C(247139008),	// VULTOS
 2474|  29.4k|    UINT64_C(4088791296),	// VUZPd16
 2475|  29.4k|    UINT64_C(4088529152),	// VUZPd8
 2476|  29.4k|    UINT64_C(4088791360),	// VUZPq16
 2477|  29.4k|    UINT64_C(4089053504),	// VUZPq32
 2478|  29.4k|    UINT64_C(4088529216),	// VUZPq8
 2479|  29.4k|    UINT64_C(4088791424),	// VZIPd16
 2480|  29.4k|    UINT64_C(4088529280),	// VZIPd8
 2481|  29.4k|    UINT64_C(4088791488),	// VZIPq16
 2482|  29.4k|    UINT64_C(4089053632),	// VZIPq32
 2483|  29.4k|    UINT64_C(4088529344),	// VZIPq8
 2484|  29.4k|    UINT64_C(0),
 2485|  29.4k|    UINT64_C(0),
 2486|  29.4k|    UINT64_C(139460608),	// sysLDMDA
 2487|  29.4k|    UINT64_C(141557760),	// sysLDMDA_UPD
 2488|  29.4k|    UINT64_C(156237824),	// sysLDMDB
 2489|  29.4k|    UINT64_C(158334976),	// sysLDMDB_UPD
 2490|  29.4k|    UINT64_C(147849216),	// sysLDMIA
 2491|  29.4k|    UINT64_C(149946368),	// sysLDMIA_UPD
 2492|  29.4k|    UINT64_C(164626432),	// sysLDMIB
 2493|  29.4k|    UINT64_C(166723584),	// sysLDMIB_UPD
 2494|  29.4k|    UINT64_C(138412032),	// sysSTMDA
 2495|  29.4k|    UINT64_C(140509184),	// sysSTMDA_UPD
 2496|  29.4k|    UINT64_C(155189248),	// sysSTMDB
 2497|  29.4k|    UINT64_C(157286400),	// sysSTMDB_UPD
 2498|  29.4k|    UINT64_C(146800640),	// sysSTMIA
 2499|  29.4k|    UINT64_C(148897792),	// sysSTMIA_UPD
 2500|  29.4k|    UINT64_C(163577856),	// sysSTMIB
 2501|  29.4k|    UINT64_C(165675008),	// sysSTMIB_UPD
 2502|  29.4k|    UINT64_C(0),
 2503|  29.4k|    UINT64_C(4047503360),	// t2ADCri
 2504|  29.4k|    UINT64_C(3946840064),	// t2ADCrr
 2505|  29.4k|    UINT64_C(3946840064),	// t2ADCrs
 2506|  29.4k|    UINT64_C(0),
 2507|  29.4k|    UINT64_C(0),
 2508|  29.4k|    UINT64_C(0),
 2509|  29.4k|    UINT64_C(4043309056),	// t2ADDri
 2510|  29.4k|    UINT64_C(4060086272),	// t2ADDri12
 2511|  29.4k|    UINT64_C(3942645760),	// t2ADDrr
 2512|  29.4k|    UINT64_C(3942645760),	// t2ADDrs
 2513|  29.4k|    UINT64_C(4061069312),	// t2ADR
 2514|  29.4k|    UINT64_C(4026531840),	// t2ANDri
 2515|  29.4k|    UINT64_C(3925868544),	// t2ANDrr
 2516|  29.4k|    UINT64_C(3925868544),	// t2ANDrs
 2517|  29.4k|    UINT64_C(3931045920),	// t2ASRri
 2518|  29.4k|    UINT64_C(4198559744),	// t2ASRrr
 2519|  29.4k|    UINT64_C(4026568704),	// t2B
 2520|  29.4k|    UINT64_C(4084137984),	// t2BFC
 2521|  29.4k|    UINT64_C(4083154944),	// t2BFI
 2522|  29.4k|    UINT64_C(4028628992),	// t2BICri
 2523|  29.4k|    UINT64_C(3927965696),	// t2BICrr
 2524|  29.4k|    UINT64_C(3927965696),	// t2BICrs
 2525|  29.4k|    UINT64_C(0),
 2526|  29.4k|    UINT64_C(4089483008),	// t2BXJ
 2527|  29.4k|    UINT64_C(4026564608),	// t2Bcc
 2528|  29.4k|    UINT64_C(3992977408),	// t2CDP
 2529|  29.4k|    UINT64_C(4261412864),	// t2CDP2
 2530|  29.4k|    UINT64_C(4089417519),	// t2CLREX
 2531|  29.4k|    UINT64_C(4205899904),	// t2CLZ
 2532|  29.4k|    UINT64_C(4044361472),	// t2CMNri
 2533|  29.4k|    UINT64_C(3943698176),	// t2CMNzrr
 2534|  29.4k|    UINT64_C(3943698176),	// t2CMNzrs
 2535|  29.4k|    UINT64_C(4054847232),	// t2CMPri
 2536|  29.4k|    UINT64_C(3954183936),	// t2CMPrr
 2537|  29.4k|    UINT64_C(3954183936),	// t2CMPrs
 2538|  29.4k|    UINT64_C(4088365312),	// t2CPS1p
 2539|  29.4k|    UINT64_C(4088365056),	// t2CPS2p
 2540|  29.4k|    UINT64_C(4088365312),	// t2CPS3p
 2541|  29.4k|    UINT64_C(4206948480),	// t2CRC32B
 2542|  29.4k|    UINT64_C(4207997056),	// t2CRC32CB
 2543|  29.4k|    UINT64_C(4207997072),	// t2CRC32CH
 2544|  29.4k|    UINT64_C(4207997088),	// t2CRC32CW
 2545|  29.4k|    UINT64_C(4206948496),	// t2CRC32H
 2546|  29.4k|    UINT64_C(4206948512),	// t2CRC32W
 2547|  29.4k|    UINT64_C(4088365296),	// t2DBG
 2548|  29.4k|    UINT64_C(4153376769),	// t2DCPS1
 2549|  29.4k|    UINT64_C(4153376770),	// t2DCPS2
 2550|  29.4k|    UINT64_C(4153376771),	// t2DCPS3
 2551|  29.4k|    UINT64_C(4089417552),	// t2DMB
 2552|  29.4k|    UINT64_C(4089417536),	// t2DSB
 2553|  29.4k|    UINT64_C(4034920448),	// t2EORri
 2554|  29.4k|    UINT64_C(3934257152),	// t2EORrr
 2555|  29.4k|    UINT64_C(3934257152),	// t2EORrs
 2556|  29.4k|    UINT64_C(4088365056),	// t2HINT
 2557|  29.4k|    UINT64_C(4158685184),	// t2HVC
 2558|  29.4k|    UINT64_C(4089417568),	// t2ISB
 2559|  29.4k|    UINT64_C(48896),	// t2IT
 2560|  29.4k|    UINT64_C(0),	// t2Int_eh_sjlj_setjmp
 2561|  29.4k|    UINT64_C(0),	// t2Int_eh_sjlj_setjmp_nofp
 2562|  29.4k|    UINT64_C(3905949615),	// t2LDA
 2563|  29.4k|    UINT64_C(3905949583),	// t2LDAB
 2564|  29.4k|    UINT64_C(3905949679),	// t2LDAEX
 2565|  29.4k|    UINT64_C(3905949647),	// t2LDAEXB
 2566|  29.4k|    UINT64_C(3905945855),	// t2LDAEXD
 2567|  29.4k|    UINT64_C(3905949663),	// t2LDAEXH
 2568|  29.4k|    UINT64_C(3905949599),	// t2LDAH
 2569|  29.4k|    UINT64_C(4249878528),	// t2LDC2L_OFFSET
 2570|  29.4k|    UINT64_C(4241489920),	// t2LDC2L_OPTION
 2571|  29.4k|    UINT64_C(4235198464),	// t2LDC2L_POST
 2572|  29.4k|    UINT64_C(4251975680),	// t2LDC2L_PRE
 2573|  29.4k|    UINT64_C(4245684224),	// t2LDC2_OFFSET
 2574|  29.4k|    UINT64_C(4237295616),	// t2LDC2_OPTION
 2575|  29.4k|    UINT64_C(4231004160),	// t2LDC2_POST
 2576|  29.4k|    UINT64_C(4247781376),	// t2LDC2_PRE
 2577|  29.4k|    UINT64_C(3981443072),	// t2LDCL_OFFSET
 2578|  29.4k|    UINT64_C(3973054464),	// t2LDCL_OPTION
 2579|  29.4k|    UINT64_C(3966763008),	// t2LDCL_POST
 2580|  29.4k|    UINT64_C(3983540224),	// t2LDCL_PRE
 2581|  29.4k|    UINT64_C(3977248768),	// t2LDC_OFFSET
 2582|  29.4k|    UINT64_C(3968860160),	// t2LDC_OPTION
 2583|  29.4k|    UINT64_C(3962568704),	// t2LDC_POST
 2584|  29.4k|    UINT64_C(3979345920),	// t2LDC_PRE
 2585|  29.4k|    UINT64_C(3910139904),	// t2LDMDB
 2586|  29.4k|    UINT64_C(3912237056),	// t2LDMDB_UPD
 2587|  29.4k|    UINT64_C(3901751296),	// t2LDMIA
 2588|  29.4k|    UINT64_C(0),
 2589|  29.4k|    UINT64_C(3903848448),	// t2LDMIA_UPD
 2590|  29.4k|    UINT64_C(4161801728),	// t2LDRBT
 2591|  29.4k|    UINT64_C(4161800448),	// t2LDRB_POST
 2592|  29.4k|    UINT64_C(4161801472),	// t2LDRB_PRE
 2593|  29.4k|    UINT64_C(4170186752),	// t2LDRBi12
 2594|  29.4k|    UINT64_C(4161801216),	// t2LDRBi8
 2595|  29.4k|    UINT64_C(4162781184),	// t2LDRBpci
 2596|  29.4k|    UINT64_C(0),
 2597|  29.4k|    UINT64_C(4161798144),	// t2LDRBs
 2598|  29.4k|    UINT64_C(3899654144),	// t2LDRD_POST
 2599|  29.4k|    UINT64_C(3916431360),	// t2LDRD_PRE
 2600|  29.4k|    UINT64_C(3914334208),	// t2LDRDi8
 2601|  29.4k|    UINT64_C(3897560832),	// t2LDREX
 2602|  29.4k|    UINT64_C(3905949519),	// t2LDREXB
 2603|  29.4k|    UINT64_C(3905945727),	// t2LDREXD
 2604|  29.4k|    UINT64_C(3905949535),	// t2LDREXH
 2605|  29.4k|    UINT64_C(4163898880),	// t2LDRHT
 2606|  29.4k|    UINT64_C(4163897600),	// t2LDRH_POST
 2607|  29.4k|    UINT64_C(4163898624),	// t2LDRH_PRE
 2608|  29.4k|    UINT64_C(4172283904),	// t2LDRHi12
 2609|  29.4k|    UINT64_C(4163898368),	// t2LDRHi8
 2610|  29.4k|    UINT64_C(4164878336),	// t2LDRHpci
 2611|  29.4k|    UINT64_C(0),
 2612|  29.4k|    UINT64_C(4163895296),	// t2LDRHs
 2613|  29.4k|    UINT64_C(4178578944),	// t2LDRSBT
 2614|  29.4k|    UINT64_C(4178577664),	// t2LDRSB_POST
 2615|  29.4k|    UINT64_C(4178578688),	// t2LDRSB_PRE
 2616|  29.4k|    UINT64_C(4186963968),	// t2LDRSBi12
 2617|  29.4k|    UINT64_C(4178578432),	// t2LDRSBi8
 2618|  29.4k|    UINT64_C(4179558400),	// t2LDRSBpci
 2619|  29.4k|    UINT64_C(0),
 2620|  29.4k|    UINT64_C(4178575360),	// t2LDRSBs
 2621|  29.4k|    UINT64_C(4180676096),	// t2LDRSHT
 2622|  29.4k|    UINT64_C(4180674816),	// t2LDRSH_POST
 2623|  29.4k|    UINT64_C(4180675840),	// t2LDRSH_PRE
 2624|  29.4k|    UINT64_C(4189061120),	// t2LDRSHi12
 2625|  29.4k|    UINT64_C(4180675584),	// t2LDRSHi8
 2626|  29.4k|    UINT64_C(4181655552),	// t2LDRSHpci
 2627|  29.4k|    UINT64_C(0),
 2628|  29.4k|    UINT64_C(4180672512),	// t2LDRSHs
 2629|  29.4k|    UINT64_C(4165996032),	// t2LDRT
 2630|  29.4k|    UINT64_C(4165994752),	// t2LDR_POST
 2631|  29.4k|    UINT64_C(4165995776),	// t2LDR_PRE
 2632|  29.4k|    UINT64_C(4174381056),	// t2LDRi12
 2633|  29.4k|    UINT64_C(4165995520),	// t2LDRi8
 2634|  29.4k|    UINT64_C(4166975488),	// t2LDRpci
 2635|  29.4k|    UINT64_C(0),
 2636|  29.4k|    UINT64_C(0),
 2637|  29.4k|    UINT64_C(4165992448),	// t2LDRs
 2638|  29.4k|    UINT64_C(0),
 2639|  29.4k|    UINT64_C(0),
 2640|  29.4k|    UINT64_C(3931045888),	// t2LSLri
 2641|  29.4k|    UINT64_C(4194365440),	// t2LSLrr
 2642|  29.4k|    UINT64_C(3931045904),	// t2LSRri
 2643|  29.4k|    UINT64_C(4196462592),	// t2LSRrr
 2644|  29.4k|    UINT64_C(3992977424),	// t2MCR
 2645|  29.4k|    UINT64_C(4261412880),	// t2MCR2
 2646|  29.4k|    UINT64_C(3963617280),	// t2MCRR
 2647|  29.4k|    UINT64_C(4232052736),	// t2MCRR2
 2648|  29.4k|    UINT64_C(4211081216),	// t2MLA
 2649|  29.4k|    UINT64_C(4211081232),	// t2MLS
 2650|  29.4k|    UINT64_C(0),
 2651|  29.4k|    UINT64_C(0),
 2652|  29.4k|    UINT64_C(0),
 2653|  29.4k|    UINT64_C(0),
 2654|  29.4k|    UINT64_C(0),
 2655|  29.4k|    UINT64_C(0),
 2656|  29.4k|    UINT64_C(0),
 2657|  29.4k|    UINT64_C(0),
 2658|  29.4k|    UINT64_C(0),
 2659|  29.4k|    UINT64_C(0),
 2660|  29.4k|    UINT64_C(4072669184),	// t2MOVTi16
 2661|  29.4k|    UINT64_C(0),
 2662|  29.4k|    UINT64_C(0),
 2663|  29.4k|    UINT64_C(4031709184),	// t2MOVi
 2664|  29.4k|    UINT64_C(4064280576),	// t2MOVi16
 2665|  29.4k|    UINT64_C(0),
 2666|  29.4k|    UINT64_C(0),
 2667|  29.4k|    UINT64_C(3931045888),	// t2MOVr
 2668|  29.4k|    UINT64_C(0),
 2669|  29.4k|    UINT64_C(0),
 2670|  29.4k|    UINT64_C(3932094560),	// t2MOVsra_flag
 2671|  29.4k|    UINT64_C(3932094544),	// t2MOVsrl_flag
 2672|  29.4k|    UINT64_C(3994026000),	// t2MRC
 2673|  29.4k|    UINT64_C(4262461456),	// t2MRC2
 2674|  29.4k|    UINT64_C(3964665856),	// t2MRRC
 2675|  29.4k|    UINT64_C(4233101312),	// t2MRRC2
 2676|  29.4k|    UINT64_C(4092559360),	// t2MRS_AR
 2677|  29.4k|    UINT64_C(4092559360),	// t2MRS_M
 2678|  29.4k|    UINT64_C(4091576352),	// t2MRSbanked
 2679|  29.4k|    UINT64_C(4093607936),	// t2MRSsys_AR
 2680|  29.4k|    UINT64_C(4085284864),	// t2MSR_AR
 2681|  29.4k|    UINT64_C(4085284864),	// t2MSR_M
 2682|  29.4k|    UINT64_C(4085284896),	// t2MSRbanked
 2683|  29.4k|    UINT64_C(4211142656),	// t2MUL
 2684|  29.4k|    UINT64_C(0),
 2685|  29.4k|    UINT64_C(4033806336),	// t2MVNi
 2686|  29.4k|    UINT64_C(3933143040),	// t2MVNr
 2687|  29.4k|    UINT64_C(3933143040),	// t2MVNs
 2688|  29.4k|    UINT64_C(4032823296),	// t2ORNri
 2689|  29.4k|    UINT64_C(3932160000),	// t2ORNrr
 2690|  29.4k|    UINT64_C(3932160000),	// t2ORNrs
 2691|  29.4k|    UINT64_C(4030726144),	// t2ORRri
 2692|  29.4k|    UINT64_C(3930062848),	// t2ORRrr
 2693|  29.4k|    UINT64_C(3930062848),	// t2ORRrs
 2694|  29.4k|    UINT64_C(3938451456),	// t2PKHBT
 2695|  29.4k|    UINT64_C(3938451488),	// t2PKHTB
 2696|  29.4k|    UINT64_C(4172345344),	// t2PLDWi12
 2697|  29.4k|    UINT64_C(4163959808),	// t2PLDWi8
 2698|  29.4k|    UINT64_C(4163956736),	// t2PLDWs
 2699|  29.4k|    UINT64_C(4170248192),	// t2PLDi12
 2700|  29.4k|    UINT64_C(4161862656),	// t2PLDi8
 2701|  29.4k|    UINT64_C(4162842624),	// t2PLDpci
 2702|  29.4k|    UINT64_C(4161859584),	// t2PLDs
 2703|  29.4k|    UINT64_C(4187025408),	// t2PLIi12
 2704|  29.4k|    UINT64_C(4178639872),	// t2PLIi8
 2705|  29.4k|    UINT64_C(4179619840),	// t2PLIpci
 2706|  29.4k|    UINT64_C(4178636800),	// t2PLIs
 2707|  29.4k|    UINT64_C(4202754176),	// t2QADD
 2708|  29.4k|    UINT64_C(4203802640),	// t2QADD16
 2709|  29.4k|    UINT64_C(4202754064),	// t2QADD8
 2710|  29.4k|    UINT64_C(4204851216),	// t2QASX
 2711|  29.4k|    UINT64_C(4202754192),	// t2QDADD
 2712|  29.4k|    UINT64_C(4202754224),	// t2QDSUB
 2713|  29.4k|    UINT64_C(4209045520),	// t2QSAX
 2714|  29.4k|    UINT64_C(4202754208),	// t2QSUB
 2715|  29.4k|    UINT64_C(4207996944),	// t2QSUB16
 2716|  29.4k|    UINT64_C(4206948368),	// t2QSUB8
 2717|  29.4k|    UINT64_C(4203802784),	// t2RBIT
 2718|  29.4k|    UINT64_C(4203802752),	// t2REV
 2719|  29.4k|    UINT64_C(4203802768),	// t2REV16
 2720|  29.4k|    UINT64_C(4203802800),	// t2REVSH
 2721|  29.4k|    UINT64_C(3893411840),	// t2RFEDB
 2722|  29.4k|    UINT64_C(3895508992),	// t2RFEDBW
 2723|  29.4k|    UINT64_C(3918577664),	// t2RFEIA
 2724|  29.4k|    UINT64_C(3920674816),	// t2RFEIAW
 2725|  29.4k|    UINT64_C(3931045936),	// t2RORri
 2726|  29.4k|    UINT64_C(4200656896),	// t2RORrr
 2727|  29.4k|    UINT64_C(3931045936),	// t2RRX
 2728|  29.4k|    UINT64_C(0),
 2729|  29.4k|    UINT64_C(0),
 2730|  29.4k|    UINT64_C(4055891968),	// t2RSBri
 2731|  29.4k|    UINT64_C(3955228672),	// t2RSBrr
 2732|  29.4k|    UINT64_C(3955228672),	// t2RSBrs
 2733|  29.4k|    UINT64_C(4203802624),	// t2SADD16
 2734|  29.4k|    UINT64_C(4202754048),	// t2SADD8
 2735|  29.4k|    UINT64_C(4204851200),	// t2SASX
 2736|  29.4k|    UINT64_C(4049600512),	// t2SBCri
 2737|  29.4k|    UINT64_C(3948937216),	// t2SBCrr
 2738|  29.4k|    UINT64_C(3948937216),	// t2SBCrs
 2739|  29.4k|    UINT64_C(4081057792),	// t2SBFX
 2740|  29.4k|    UINT64_C(4220580080),	// t2SDIV
 2741|  29.4k|    UINT64_C(4204851328),	// t2SEL
 2742|  29.4k|    UINT64_C(46608),	// t2SETPAN
 2743|  29.4k|    UINT64_C(3917474175),	// t2SG
 2744|  29.4k|    UINT64_C(4203802656),	// t2SHADD16
 2745|  29.4k|    UINT64_C(4202754080),	// t2SHADD8
 2746|  29.4k|    UINT64_C(4204851232),	// t2SHASX
 2747|  29.4k|    UINT64_C(4209045536),	// t2SHSAX
 2748|  29.4k|    UINT64_C(4207996960),	// t2SHSUB16
 2749|  29.4k|    UINT64_C(4206948384),	// t2SHSUB8
 2750|  29.4k|    UINT64_C(4159733760),	// t2SMC
 2751|  29.4k|    UINT64_C(4212129792),	// t2SMLABB
 2752|  29.4k|    UINT64_C(4212129808),	// t2SMLABT
 2753|  29.4k|    UINT64_C(4213178368),	// t2SMLAD
 2754|  29.4k|    UINT64_C(4213178384),	// t2SMLADX
 2755|  29.4k|    UINT64_C(4223664128),	// t2SMLAL
 2756|  29.4k|    UINT64_C(4223664256),	// t2SMLALBB
 2757|  29.4k|    UINT64_C(4223664272),	// t2SMLALBT
 2758|  29.4k|    UINT64_C(4223664320),	// t2SMLALD
 2759|  29.4k|    UINT64_C(4223664336),	// t2SMLALDX
 2760|  29.4k|    UINT64_C(4223664288),	// t2SMLALTB
 2761|  29.4k|    UINT64_C(4223664304),	// t2SMLALTT
 2762|  29.4k|    UINT64_C(4212129824),	// t2SMLATB
 2763|  29.4k|    UINT64_C(4212129840),	// t2SMLATT
 2764|  29.4k|    UINT64_C(4214226944),	// t2SMLAWB
 2765|  29.4k|    UINT64_C(4214226960),	// t2SMLAWT
 2766|  29.4k|    UINT64_C(4215275520),	// t2SMLSD
 2767|  29.4k|    UINT64_C(4215275536),	// t2SMLSDX
 2768|  29.4k|    UINT64_C(4224712896),	// t2SMLSLD
 2769|  29.4k|    UINT64_C(4224712912),	// t2SMLSLDX
 2770|  29.4k|    UINT64_C(4216324096),	// t2SMMLA
 2771|  29.4k|    UINT64_C(4216324112),	// t2SMMLAR
 2772|  29.4k|    UINT64_C(4217372672),	// t2SMMLS
 2773|  29.4k|    UINT64_C(4217372688),	// t2SMMLSR
 2774|  29.4k|    UINT64_C(4216385536),	// t2SMMUL
 2775|  29.4k|    UINT64_C(4216385552),	// t2SMMULR
 2776|  29.4k|    UINT64_C(4213239808),	// t2SMUAD
 2777|  29.4k|    UINT64_C(4213239824),	// t2SMUADX
 2778|  29.4k|    UINT64_C(4212191232),	// t2SMULBB
 2779|  29.4k|    UINT64_C(4212191248),	// t2SMULBT
 2780|  29.4k|    UINT64_C(4219469824),	// t2SMULL
 2781|  29.4k|    UINT64_C(4212191264),	// t2SMULTB
 2782|  29.4k|    UINT64_C(4212191280),	// t2SMULTT
 2783|  29.4k|    UINT64_C(4214288384),	// t2SMULWB
 2784|  29.4k|    UINT64_C(4214288400),	// t2SMULWT
 2785|  29.4k|    UINT64_C(4215336960),	// t2SMUSD
 2786|  29.4k|    UINT64_C(4215336976),	// t2SMUSDX
 2787|  29.4k|    UINT64_C(3893215232),	// t2SRSDB
 2788|  29.4k|    UINT64_C(3895312384),	// t2SRSDB_UPD
 2789|  29.4k|    UINT64_C(3918381056),	// t2SRSIA
 2790|  29.4k|    UINT64_C(3920478208),	// t2SRSIA_UPD
 2791|  29.4k|    UINT64_C(4076863488),	// t2SSAT
 2792|  29.4k|    UINT64_C(4078960640),	// t2SSAT16
 2793|  29.4k|    UINT64_C(4209045504),	// t2SSAX
 2794|  29.4k|    UINT64_C(4207996928),	// t2SSUB16
 2795|  29.4k|    UINT64_C(4206948352),	// t2SSUB8
 2796|  29.4k|    UINT64_C(4248829952),	// t2STC2L_OFFSET
 2797|  29.4k|    UINT64_C(4240441344),	// t2STC2L_OPTION
 2798|  29.4k|    UINT64_C(4234149888),	// t2STC2L_POST
 2799|  29.4k|    UINT64_C(4250927104),	// t2STC2L_PRE
 2800|  29.4k|    UINT64_C(4244635648),	// t2STC2_OFFSET
 2801|  29.4k|    UINT64_C(4236247040),	// t2STC2_OPTION
 2802|  29.4k|    UINT64_C(4229955584),	// t2STC2_POST
 2803|  29.4k|    UINT64_C(4246732800),	// t2STC2_PRE
 2804|  29.4k|    UINT64_C(3980394496),	// t2STCL_OFFSET
 2805|  29.4k|    UINT64_C(3972005888),	// t2STCL_OPTION
 2806|  29.4k|    UINT64_C(3965714432),	// t2STCL_POST
 2807|  29.4k|    UINT64_C(3982491648),	// t2STCL_PRE
 2808|  29.4k|    UINT64_C(3976200192),	// t2STC_OFFSET
 2809|  29.4k|    UINT64_C(3967811584),	// t2STC_OPTION
 2810|  29.4k|    UINT64_C(3961520128),	// t2STC_POST
 2811|  29.4k|    UINT64_C(3978297344),	// t2STC_PRE
 2812|  29.4k|    UINT64_C(3904901039),	// t2STL
 2813|  29.4k|    UINT64_C(3904901007),	// t2STLB
 2814|  29.4k|    UINT64_C(3904901088),	// t2STLEX
 2815|  29.4k|    UINT64_C(3904901056),	// t2STLEXB
 2816|  29.4k|    UINT64_C(3904897264),	// t2STLEXD
 2817|  29.4k|    UINT64_C(3904901072),	// t2STLEXH
 2818|  29.4k|    UINT64_C(3904901023),	// t2STLH
 2819|  29.4k|    UINT64_C(3909091328),	// t2STMDB
 2820|  29.4k|    UINT64_C(3911188480),	// t2STMDB_UPD
 2821|  29.4k|    UINT64_C(3900702720),	// t2STMIA
 2822|  29.4k|    UINT64_C(3902799872),	// t2STMIA_UPD
 2823|  29.4k|    UINT64_C(4160753152),	// t2STRBT
 2824|  29.4k|    UINT64_C(4160751872),	// t2STRB_POST
 2825|  29.4k|    UINT64_C(4160752896),	// t2STRB_PRE
 2826|  29.4k|    UINT64_C(0),
 2827|  29.4k|    UINT64_C(4169138176),	// t2STRBi12
 2828|  29.4k|    UINT64_C(4160752640),	// t2STRBi8
 2829|  29.4k|    UINT64_C(4160749568),	// t2STRBs
 2830|  29.4k|    UINT64_C(3898605568),	// t2STRD_POST
 2831|  29.4k|    UINT64_C(3915382784),	// t2STRD_PRE
 2832|  29.4k|    UINT64_C(3913285632),	// t2STRDi8
 2833|  29.4k|    UINT64_C(3896508416),	// t2STREX
 2834|  29.4k|    UINT64_C(3904900928),	// t2STREXB
 2835|  29.4k|    UINT64_C(3904897136),	// t2STREXD
 2836|  29.4k|    UINT64_C(3904900944),	// t2STREXH
 2837|  29.4k|    UINT64_C(4162850304),	// t2STRHT
 2838|  29.4k|    UINT64_C(4162849024),	// t2STRH_POST
 2839|  29.4k|    UINT64_C(4162850048),	// t2STRH_PRE
 2840|  29.4k|    UINT64_C(0),
 2841|  29.4k|    UINT64_C(4171235328),	// t2STRHi12
 2842|  29.4k|    UINT64_C(4162849792),	// t2STRHi8
 2843|  29.4k|    UINT64_C(4162846720),	// t2STRHs
 2844|  29.4k|    UINT64_C(4164947456),	// t2STRT
 2845|  29.4k|    UINT64_C(4164946176),	// t2STR_POST
 2846|  29.4k|    UINT64_C(4164947200),	// t2STR_PRE
 2847|  29.4k|    UINT64_C(0),
 2848|  29.4k|    UINT64_C(4173332480),	// t2STRi12
 2849|  29.4k|    UINT64_C(4164946944),	// t2STRi8
 2850|  29.4k|    UINT64_C(4164943872),	// t2STRs
 2851|  29.4k|    UINT64_C(4091449088),	// t2SUBS_PC_LR
 2852|  29.4k|    UINT64_C(0),
 2853|  29.4k|    UINT64_C(0),
 2854|  29.4k|    UINT64_C(0),
 2855|  29.4k|    UINT64_C(4053794816),	// t2SUBri
 2856|  29.4k|    UINT64_C(4070572032),	// t2SUBri12
 2857|  29.4k|    UINT64_C(3953131520),	// t2SUBrr
 2858|  29.4k|    UINT64_C(3953131520),	// t2SUBrs
 2859|  29.4k|    UINT64_C(4198559872),	// t2SXTAB
 2860|  29.4k|    UINT64_C(4196462720),	// t2SXTAB16
 2861|  29.4k|    UINT64_C(4194365568),	// t2SXTAH
 2862|  29.4k|    UINT64_C(4199542912),	// t2SXTB
 2863|  29.4k|    UINT64_C(4197445760),	// t2SXTB16
 2864|  29.4k|    UINT64_C(4195348608),	// t2SXTH
 2865|  29.4k|    UINT64_C(3906007040),	// t2TBB
 2866|  29.4k|    UINT64_C(0),
 2867|  29.4k|    UINT64_C(3906007056),	// t2TBH
 2868|  29.4k|    UINT64_C(0),
 2869|  29.4k|    UINT64_C(4035972864),	// t2TEQri
 2870|  29.4k|    UINT64_C(3935309568),	// t2TEQrr
 2871|  29.4k|    UINT64_C(3935309568),	// t2TEQrs
 2872|  29.4k|    UINT64_C(4027584256),	// t2TSTri
 2873|  29.4k|    UINT64_C(3926920960),	// t2TSTrr
 2874|  29.4k|    UINT64_C(3926920960),	// t2TSTrs
 2875|  29.4k|    UINT64_C(3896569856),	// t2TT
 2876|  29.4k|    UINT64_C(3896569984),	// t2TTA
 2877|  29.4k|    UINT64_C(3896570048),	// t2TTAT
 2878|  29.4k|    UINT64_C(3896569920),	// t2TTT
 2879|  29.4k|    UINT64_C(4203802688),	// t2UADD16
 2880|  29.4k|    UINT64_C(4202754112),	// t2UADD8
 2881|  29.4k|    UINT64_C(4204851264),	// t2UASX
 2882|  29.4k|    UINT64_C(4089446400),	// t2UBFX
 2883|  29.4k|    UINT64_C(4159741952),	// t2UDF
 2884|  29.4k|    UINT64_C(4222677232),	// t2UDIV
 2885|  29.4k|    UINT64_C(4203802720),	// t2UHADD16
 2886|  29.4k|    UINT64_C(4202754144),	// t2UHADD8
 2887|  29.4k|    UINT64_C(4204851296),	// t2UHASX
 2888|  29.4k|    UINT64_C(4209045600),	// t2UHSAX
 2889|  29.4k|    UINT64_C(4207997024),	// t2UHSUB16
 2890|  29.4k|    UINT64_C(4206948448),	// t2UHSUB8
 2891|  29.4k|    UINT64_C(4225761376),	// t2UMAAL
 2892|  29.4k|    UINT64_C(4225761280),	// t2UMLAL
 2893|  29.4k|    UINT64_C(4221566976),	// t2UMULL
 2894|  29.4k|    UINT64_C(4203802704),	// t2UQADD16
 2895|  29.4k|    UINT64_C(4202754128),	// t2UQADD8
 2896|  29.4k|    UINT64_C(4204851280),	// t2UQASX
 2897|  29.4k|    UINT64_C(4209045584),	// t2UQSAX
 2898|  29.4k|    UINT64_C(4207997008),	// t2UQSUB16
 2899|  29.4k|    UINT64_C(4206948432),	// t2UQSUB8
 2900|  29.4k|    UINT64_C(4218482688),	// t2USAD8
 2901|  29.4k|    UINT64_C(4218421248),	// t2USADA8
 2902|  29.4k|    UINT64_C(4085252096),	// t2USAT
 2903|  29.4k|    UINT64_C(4087349248),	// t2USAT16
 2904|  29.4k|    UINT64_C(4209045568),	// t2USAX
 2905|  29.4k|    UINT64_C(4207996992),	// t2USUB16
 2906|  29.4k|    UINT64_C(4206948416),	// t2USUB8
 2907|  29.4k|    UINT64_C(4199608448),	// t2UXTAB
 2908|  29.4k|    UINT64_C(4197511296),	// t2UXTAB16
 2909|  29.4k|    UINT64_C(4195414144),	// t2UXTAH
 2910|  29.4k|    UINT64_C(4200591488),	// t2UXTB
 2911|  29.4k|    UINT64_C(4198494336),	// t2UXTB16
 2912|  29.4k|    UINT64_C(4196397184),	// t2UXTH
 2913|  29.4k|    UINT64_C(16704),	// tADC
 2914|  29.4k|    UINT64_C(0),
 2915|  29.4k|    UINT64_C(17408),	// tADDhirr
 2916|  29.4k|    UINT64_C(7168),	// tADDi3
 2917|  29.4k|    UINT64_C(12288),	// tADDi8
 2918|  29.4k|    UINT64_C(17512),	// tADDrSP
 2919|  29.4k|    UINT64_C(43008),	// tADDrSPi
 2920|  29.4k|    UINT64_C(6144),	// tADDrr
 2921|  29.4k|    UINT64_C(45056),	// tADDspi
 2922|  29.4k|    UINT64_C(17541),	// tADDspr
 2923|  29.4k|    UINT64_C(0),
 2924|  29.4k|    UINT64_C(0),
 2925|  29.4k|    UINT64_C(40960),	// tADR
 2926|  29.4k|    UINT64_C(16384),	// tAND
 2927|  29.4k|    UINT64_C(4096),	// tASRri
 2928|  29.4k|    UINT64_C(16640),	// tASRrr
 2929|  29.4k|    UINT64_C(57344),	// tB
 2930|  29.4k|    UINT64_C(17280),	// tBIC
 2931|  29.4k|    UINT64_C(48640),	// tBKPT
 2932|  29.4k|    UINT64_C(4026585088),	// tBL
 2933|  29.4k|    UINT64_C(18308),	// tBLXNSr
 2934|  29.4k|    UINT64_C(4026580992),	// tBLXi
 2935|  29.4k|    UINT64_C(18304),	// tBLXr
 2936|  29.4k|    UINT64_C(0),
 2937|  29.4k|    UINT64_C(0),
 2938|  29.4k|    UINT64_C(18176),	// tBX
 2939|  29.4k|    UINT64_C(18180),	// tBXNS
 2940|  29.4k|    UINT64_C(0),
 2941|  29.4k|    UINT64_C(0),
 2942|  29.4k|    UINT64_C(0),
 2943|  29.4k|    UINT64_C(53248),	// tBcc
 2944|  29.4k|    UINT64_C(0),
 2945|  29.4k|    UINT64_C(47360),	// tCBNZ
 2946|  29.4k|    UINT64_C(45312),	// tCBZ
 2947|  29.4k|    UINT64_C(17088),	// tCMNz
 2948|  29.4k|    UINT64_C(17664),	// tCMPhir
 2949|  29.4k|    UINT64_C(10240),	// tCMPi8
 2950|  29.4k|    UINT64_C(17024),	// tCMPr
 2951|  29.4k|    UINT64_C(46688),	// tCPS
 2952|  29.4k|    UINT64_C(16448),	// tEOR
 2953|  29.4k|    UINT64_C(48896),	// tHINT
 2954|  29.4k|    UINT64_C(47744),	// tHLT
 2955|  29.4k|    UINT64_C(0),	// tInt_eh_sjlj_longjmp
 2956|  29.4k|    UINT64_C(0),	// tInt_eh_sjlj_setjmp
 2957|  29.4k|    UINT64_C(51200),	// tLDMIA
 2958|  29.4k|    UINT64_C(0),
 2959|  29.4k|    UINT64_C(30720),	// tLDRBi
 2960|  29.4k|    UINT64_C(23552),	// tLDRBr
 2961|  29.4k|    UINT64_C(34816),	// tLDRHi
 2962|  29.4k|    UINT64_C(23040),	// tLDRHr
 2963|  29.4k|    UINT64_C(0),
 2964|  29.4k|    UINT64_C(0),
 2965|  29.4k|    UINT64_C(22016),	// tLDRSB
 2966|  29.4k|    UINT64_C(24064),	// tLDRSH
 2967|  29.4k|    UINT64_C(26624),	// tLDRi
 2968|  29.4k|    UINT64_C(18432),	// tLDRpci
 2969|  29.4k|    UINT64_C(0),
 2970|  29.4k|    UINT64_C(22528),	// tLDRr
 2971|  29.4k|    UINT64_C(38912),	// tLDRspi
 2972|  29.4k|    UINT64_C(0),
 2973|  29.4k|    UINT64_C(0),
 2974|  29.4k|    UINT64_C(0),	// tLSLri
 2975|  29.4k|    UINT64_C(16512),	// tLSLrr
 2976|  29.4k|    UINT64_C(2048),	// tLSRri
 2977|  29.4k|    UINT64_C(16576),	// tLSRrr
 2978|  29.4k|    UINT64_C(0),
 2979|  29.4k|    UINT64_C(0),	// tMOVSr
 2980|  29.4k|    UINT64_C(8192),	// tMOVi8
 2981|  29.4k|    UINT64_C(17920),	// tMOVr
 2982|  29.4k|    UINT64_C(17216),	// tMUL
 2983|  29.4k|    UINT64_C(17344),	// tMVN
 2984|  29.4k|    UINT64_C(17152),	// tORR
 2985|  29.4k|    UINT64_C(17528),	// tPICADD
 2986|  29.4k|    UINT64_C(48128),	// tPOP
 2987|  29.4k|    UINT64_C(0),
 2988|  29.4k|    UINT64_C(46080),	// tPUSH
 2989|  29.4k|    UINT64_C(47616),	// tREV
 2990|  29.4k|    UINT64_C(47680),	// tREV16
 2991|  29.4k|    UINT64_C(47808),	// tREVSH
 2992|  29.4k|    UINT64_C(16832),	// tROR
 2993|  29.4k|    UINT64_C(16960),	// tRSB
 2994|  29.4k|    UINT64_C(16768),	// tSBC
 2995|  29.4k|    UINT64_C(46672),	// tSETEND
 2996|  29.4k|    UINT64_C(49152),	// tSTMIA_UPD
 2997|  29.4k|    UINT64_C(28672),	// tSTRBi
 2998|  29.4k|    UINT64_C(21504),	// tSTRBr
 2999|  29.4k|    UINT64_C(32768),	// tSTRHi
 3000|  29.4k|    UINT64_C(20992),	// tSTRHr
 3001|  29.4k|    UINT64_C(24576),	// tSTRi
 3002|  29.4k|    UINT64_C(20480),	// tSTRr
 3003|  29.4k|    UINT64_C(36864),	// tSTRspi
 3004|  29.4k|    UINT64_C(7680),	// tSUBi3
 3005|  29.4k|    UINT64_C(14336),	// tSUBi8
 3006|  29.4k|    UINT64_C(6656),	// tSUBrr
 3007|  29.4k|    UINT64_C(45184),	// tSUBspi
 3008|  29.4k|    UINT64_C(57088),	// tSVC
 3009|  29.4k|    UINT64_C(45632),	// tSXTB
 3010|  29.4k|    UINT64_C(45568),	// tSXTH
 3011|  29.4k|    UINT64_C(0),
 3012|  29.4k|    UINT64_C(0),
 3013|  29.4k|    UINT64_C(0),
 3014|  29.4k|    UINT64_C(0),
 3015|  29.4k|    UINT64_C(57086),	// tTRAP
 3016|  29.4k|    UINT64_C(16896),	// tTST
 3017|  29.4k|    UINT64_C(56832),	// tUDF
 3018|  29.4k|    UINT64_C(45760),	// tUXTB
 3019|  29.4k|    UINT64_C(45696),	// tUXTH
 3020|  29.4k|    UINT64_C(0)
 3021|  29.4k|  };
 3022|  29.4k|  const unsigned opcode = MI.getOpcode();
 3023|  29.4k|  uint64_t Value = InstBits[opcode];
 3024|  29.4k|  uint64_t op = 0;
 3025|  29.4k|  (void)op;  // suppress warning
 3026|  29.4k|  switch (opcode) {
 3027|     55|    case ARM::CLREX:
  ------------------
  |  Branch (3027:5): [True: 55, False: 29.4k]
  ------------------
 3028|    179|    case ARM::TRAP:
  ------------------
  |  Branch (3028:5): [True: 124, False: 29.3k]
  ------------------
 3029|    179|    case ARM::TRAPNaCl:
  ------------------
  |  Branch (3029:5): [True: 0, False: 29.4k]
  ------------------
 3030|    179|    case ARM::VLD1LNq16Pseudo:
  ------------------
  |  Branch (3030:5): [True: 0, False: 29.4k]
  ------------------
 3031|    179|    case ARM::VLD1LNq16Pseudo_UPD:
  ------------------
  |  Branch (3031:5): [True: 0, False: 29.4k]
  ------------------
 3032|    179|    case ARM::VLD1LNq32Pseudo:
  ------------------
  |  Branch (3032:5): [True: 0, False: 29.4k]
  ------------------
 3033|    179|    case ARM::VLD1LNq32Pseudo_UPD:
  ------------------
  |  Branch (3033:5): [True: 0, False: 29.4k]
  ------------------
 3034|    179|    case ARM::VLD1LNq8Pseudo:
  ------------------
  |  Branch (3034:5): [True: 0, False: 29.4k]
  ------------------
 3035|    179|    case ARM::VLD1LNq8Pseudo_UPD:
  ------------------
  |  Branch (3035:5): [True: 0, False: 29.4k]
  ------------------
 3036|    179|    case ARM::VLD1d64QPseudo:
  ------------------
  |  Branch (3036:5): [True: 0, False: 29.4k]
  ------------------
 3037|    179|    case ARM::VLD1d64QPseudoWB_fixed:
  ------------------
  |  Branch (3037:5): [True: 0, False: 29.4k]
  ------------------
 3038|    179|    case ARM::VLD1d64QPseudoWB_register:
  ------------------
  |  Branch (3038:5): [True: 0, False: 29.4k]
  ------------------
 3039|    179|    case ARM::VLD1d64TPseudo:
  ------------------
  |  Branch (3039:5): [True: 0, False: 29.4k]
  ------------------
 3040|    179|    case ARM::VLD1d64TPseudoWB_fixed:
  ------------------
  |  Branch (3040:5): [True: 0, False: 29.4k]
  ------------------
 3041|    179|    case ARM::VLD1d64TPseudoWB_register:
  ------------------
  |  Branch (3041:5): [True: 0, False: 29.4k]
  ------------------
 3042|    179|    case ARM::VLD2LNd16Pseudo:
  ------------------
  |  Branch (3042:5): [True: 0, False: 29.4k]
  ------------------
 3043|    179|    case ARM::VLD2LNd16Pseudo_UPD:
  ------------------
  |  Branch (3043:5): [True: 0, False: 29.4k]
  ------------------
 3044|    179|    case ARM::VLD2LNd32Pseudo:
  ------------------
  |  Branch (3044:5): [True: 0, False: 29.4k]
  ------------------
 3045|    179|    case ARM::VLD2LNd32Pseudo_UPD:
  ------------------
  |  Branch (3045:5): [True: 0, False: 29.4k]
  ------------------
 3046|    179|    case ARM::VLD2LNd8Pseudo:
  ------------------
  |  Branch (3046:5): [True: 0, False: 29.4k]
  ------------------
 3047|    179|    case ARM::VLD2LNd8Pseudo_UPD:
  ------------------
  |  Branch (3047:5): [True: 0, False: 29.4k]
  ------------------
 3048|    179|    case ARM::VLD2LNq16Pseudo:
  ------------------
  |  Branch (3048:5): [True: 0, False: 29.4k]
  ------------------
 3049|    179|    case ARM::VLD2LNq16Pseudo_UPD:
  ------------------
  |  Branch (3049:5): [True: 0, False: 29.4k]
  ------------------
 3050|    179|    case ARM::VLD2LNq32Pseudo:
  ------------------
  |  Branch (3050:5): [True: 0, False: 29.4k]
  ------------------
 3051|    179|    case ARM::VLD2LNq32Pseudo_UPD:
  ------------------
  |  Branch (3051:5): [True: 0, False: 29.4k]
  ------------------
 3052|    179|    case ARM::VLD2q16Pseudo:
  ------------------
  |  Branch (3052:5): [True: 0, False: 29.4k]
  ------------------
 3053|    179|    case ARM::VLD2q16PseudoWB_fixed:
  ------------------
  |  Branch (3053:5): [True: 0, False: 29.4k]
  ------------------
 3054|    179|    case ARM::VLD2q16PseudoWB_register:
  ------------------
  |  Branch (3054:5): [True: 0, False: 29.4k]
  ------------------
 3055|    179|    case ARM::VLD2q32Pseudo:
  ------------------
  |  Branch (3055:5): [True: 0, False: 29.4k]
  ------------------
 3056|    179|    case ARM::VLD2q32PseudoWB_fixed:
  ------------------
  |  Branch (3056:5): [True: 0, False: 29.4k]
  ------------------
 3057|    179|    case ARM::VLD2q32PseudoWB_register:
  ------------------
  |  Branch (3057:5): [True: 0, False: 29.4k]
  ------------------
 3058|    179|    case ARM::VLD2q8Pseudo:
  ------------------
  |  Branch (3058:5): [True: 0, False: 29.4k]
  ------------------
 3059|    179|    case ARM::VLD2q8PseudoWB_fixed:
  ------------------
  |  Branch (3059:5): [True: 0, False: 29.4k]
  ------------------
 3060|    179|    case ARM::VLD2q8PseudoWB_register:
  ------------------
  |  Branch (3060:5): [True: 0, False: 29.4k]
  ------------------
 3061|    179|    case ARM::VLD3DUPd16Pseudo:
  ------------------
  |  Branch (3061:5): [True: 0, False: 29.4k]
  ------------------
 3062|    179|    case ARM::VLD3DUPd16Pseudo_UPD:
  ------------------
  |  Branch (3062:5): [True: 0, False: 29.4k]
  ------------------
 3063|    179|    case ARM::VLD3DUPd32Pseudo:
  ------------------
  |  Branch (3063:5): [True: 0, False: 29.4k]
  ------------------
 3064|    179|    case ARM::VLD3DUPd32Pseudo_UPD:
  ------------------
  |  Branch (3064:5): [True: 0, False: 29.4k]
  ------------------
 3065|    179|    case ARM::VLD3DUPd8Pseudo:
  ------------------
  |  Branch (3065:5): [True: 0, False: 29.4k]
  ------------------
 3066|    179|    case ARM::VLD3DUPd8Pseudo_UPD:
  ------------------
  |  Branch (3066:5): [True: 0, False: 29.4k]
  ------------------
 3067|    179|    case ARM::VLD3LNd16Pseudo:
  ------------------
  |  Branch (3067:5): [True: 0, False: 29.4k]
  ------------------
 3068|    179|    case ARM::VLD3LNd16Pseudo_UPD:
  ------------------
  |  Branch (3068:5): [True: 0, False: 29.4k]
  ------------------
 3069|    179|    case ARM::VLD3LNd32Pseudo:
  ------------------
  |  Branch (3069:5): [True: 0, False: 29.4k]
  ------------------
 3070|    179|    case ARM::VLD3LNd32Pseudo_UPD:
  ------------------
  |  Branch (3070:5): [True: 0, False: 29.4k]
  ------------------
 3071|    179|    case ARM::VLD3LNd8Pseudo:
  ------------------
  |  Branch (3071:5): [True: 0, False: 29.4k]
  ------------------
 3072|    179|    case ARM::VLD3LNd8Pseudo_UPD:
  ------------------
  |  Branch (3072:5): [True: 0, False: 29.4k]
  ------------------
 3073|    179|    case ARM::VLD3LNq16Pseudo:
  ------------------
  |  Branch (3073:5): [True: 0, False: 29.4k]
  ------------------
 3074|    179|    case ARM::VLD3LNq16Pseudo_UPD:
  ------------------
  |  Branch (3074:5): [True: 0, False: 29.4k]
  ------------------
 3075|    179|    case ARM::VLD3LNq32Pseudo:
  ------------------
  |  Branch (3075:5): [True: 0, False: 29.4k]
  ------------------
 3076|    179|    case ARM::VLD3LNq32Pseudo_UPD:
  ------------------
  |  Branch (3076:5): [True: 0, False: 29.4k]
  ------------------
 3077|    179|    case ARM::VLD3d16Pseudo:
  ------------------
  |  Branch (3077:5): [True: 0, False: 29.4k]
  ------------------
 3078|    179|    case ARM::VLD3d16Pseudo_UPD:
  ------------------
  |  Branch (3078:5): [True: 0, False: 29.4k]
  ------------------
 3079|    179|    case ARM::VLD3d32Pseudo:
  ------------------
  |  Branch (3079:5): [True: 0, False: 29.4k]
  ------------------
 3080|    179|    case ARM::VLD3d32Pseudo_UPD:
  ------------------
  |  Branch (3080:5): [True: 0, False: 29.4k]
  ------------------
 3081|    179|    case ARM::VLD3d8Pseudo:
  ------------------
  |  Branch (3081:5): [True: 0, False: 29.4k]
  ------------------
 3082|    179|    case ARM::VLD3d8Pseudo_UPD:
  ------------------
  |  Branch (3082:5): [True: 0, False: 29.4k]
  ------------------
 3083|    179|    case ARM::VLD3q16Pseudo_UPD:
  ------------------
  |  Branch (3083:5): [True: 0, False: 29.4k]
  ------------------
 3084|    179|    case ARM::VLD3q16oddPseudo:
  ------------------
  |  Branch (3084:5): [True: 0, False: 29.4k]
  ------------------
 3085|    179|    case ARM::VLD3q16oddPseudo_UPD:
  ------------------
  |  Branch (3085:5): [True: 0, False: 29.4k]
  ------------------
 3086|    179|    case ARM::VLD3q32Pseudo_UPD:
  ------------------
  |  Branch (3086:5): [True: 0, False: 29.4k]
  ------------------
 3087|    179|    case ARM::VLD3q32oddPseudo:
  ------------------
  |  Branch (3087:5): [True: 0, False: 29.4k]
  ------------------
 3088|    179|    case ARM::VLD3q32oddPseudo_UPD:
  ------------------
  |  Branch (3088:5): [True: 0, False: 29.4k]
  ------------------
 3089|    179|    case ARM::VLD3q8Pseudo_UPD:
  ------------------
  |  Branch (3089:5): [True: 0, False: 29.4k]
  ------------------
 3090|    179|    case ARM::VLD3q8oddPseudo:
  ------------------
  |  Branch (3090:5): [True: 0, False: 29.4k]
  ------------------
 3091|    179|    case ARM::VLD3q8oddPseudo_UPD:
  ------------------
  |  Branch (3091:5): [True: 0, False: 29.4k]
  ------------------
 3092|    179|    case ARM::VLD4DUPd16Pseudo:
  ------------------
  |  Branch (3092:5): [True: 0, False: 29.4k]
  ------------------
 3093|    179|    case ARM::VLD4DUPd16Pseudo_UPD:
  ------------------
  |  Branch (3093:5): [True: 0, False: 29.4k]
  ------------------
 3094|    179|    case ARM::VLD4DUPd32Pseudo:
  ------------------
  |  Branch (3094:5): [True: 0, False: 29.4k]
  ------------------
 3095|    179|    case ARM::VLD4DUPd32Pseudo_UPD:
  ------------------
  |  Branch (3095:5): [True: 0, False: 29.4k]
  ------------------
 3096|    179|    case ARM::VLD4DUPd8Pseudo:
  ------------------
  |  Branch (3096:5): [True: 0, False: 29.4k]
  ------------------
 3097|    179|    case ARM::VLD4DUPd8Pseudo_UPD:
  ------------------
  |  Branch (3097:5): [True: 0, False: 29.4k]
  ------------------
 3098|    179|    case ARM::VLD4LNd16Pseudo:
  ------------------
  |  Branch (3098:5): [True: 0, False: 29.4k]
  ------------------
 3099|    179|    case ARM::VLD4LNd16Pseudo_UPD:
  ------------------
  |  Branch (3099:5): [True: 0, False: 29.4k]
  ------------------
 3100|    179|    case ARM::VLD4LNd32Pseudo:
  ------------------
  |  Branch (3100:5): [True: 0, False: 29.4k]
  ------------------
 3101|    179|    case ARM::VLD4LNd32Pseudo_UPD:
  ------------------
  |  Branch (3101:5): [True: 0, False: 29.4k]
  ------------------
 3102|    179|    case ARM::VLD4LNd8Pseudo:
  ------------------
  |  Branch (3102:5): [True: 0, False: 29.4k]
  ------------------
 3103|    179|    case ARM::VLD4LNd8Pseudo_UPD:
  ------------------
  |  Branch (3103:5): [True: 0, False: 29.4k]
  ------------------
 3104|    179|    case ARM::VLD4LNq16Pseudo:
  ------------------
  |  Branch (3104:5): [True: 0, False: 29.4k]
  ------------------
 3105|    179|    case ARM::VLD4LNq16Pseudo_UPD:
  ------------------
  |  Branch (3105:5): [True: 0, False: 29.4k]
  ------------------
 3106|    179|    case ARM::VLD4LNq32Pseudo:
  ------------------
  |  Branch (3106:5): [True: 0, False: 29.4k]
  ------------------
 3107|    179|    case ARM::VLD4LNq32Pseudo_UPD:
  ------------------
  |  Branch (3107:5): [True: 0, False: 29.4k]
  ------------------
 3108|    179|    case ARM::VLD4d16Pseudo:
  ------------------
  |  Branch (3108:5): [True: 0, False: 29.4k]
  ------------------
 3109|    179|    case ARM::VLD4d16Pseudo_UPD:
  ------------------
  |  Branch (3109:5): [True: 0, False: 29.4k]
  ------------------
 3110|    179|    case ARM::VLD4d32Pseudo:
  ------------------
  |  Branch (3110:5): [True: 0, False: 29.4k]
  ------------------
 3111|    179|    case ARM::VLD4d32Pseudo_UPD:
  ------------------
  |  Branch (3111:5): [True: 0, False: 29.4k]
  ------------------
 3112|    179|    case ARM::VLD4d8Pseudo:
  ------------------
  |  Branch (3112:5): [True: 0, False: 29.4k]
  ------------------
 3113|    179|    case ARM::VLD4d8Pseudo_UPD:
  ------------------
  |  Branch (3113:5): [True: 0, False: 29.4k]
  ------------------
 3114|    179|    case ARM::VLD4q16Pseudo_UPD:
  ------------------
  |  Branch (3114:5): [True: 0, False: 29.4k]
  ------------------
 3115|    179|    case ARM::VLD4q16oddPseudo:
  ------------------
  |  Branch (3115:5): [True: 0, False: 29.4k]
  ------------------
 3116|    179|    case ARM::VLD4q16oddPseudo_UPD:
  ------------------
  |  Branch (3116:5): [True: 0, False: 29.4k]
  ------------------
 3117|    179|    case ARM::VLD4q32Pseudo_UPD:
  ------------------
  |  Branch (3117:5): [True: 0, False: 29.4k]
  ------------------
 3118|    179|    case ARM::VLD4q32oddPseudo:
  ------------------
  |  Branch (3118:5): [True: 0, False: 29.4k]
  ------------------
 3119|    179|    case ARM::VLD4q32oddPseudo_UPD:
  ------------------
  |  Branch (3119:5): [True: 0, False: 29.4k]
  ------------------
 3120|    179|    case ARM::VLD4q8Pseudo_UPD:
  ------------------
  |  Branch (3120:5): [True: 0, False: 29.4k]
  ------------------
 3121|    179|    case ARM::VLD4q8oddPseudo:
  ------------------
  |  Branch (3121:5): [True: 0, False: 29.4k]
  ------------------
 3122|    179|    case ARM::VLD4q8oddPseudo_UPD:
  ------------------
  |  Branch (3122:5): [True: 0, False: 29.4k]
  ------------------
 3123|    179|    case ARM::VLDMQIA:
  ------------------
  |  Branch (3123:5): [True: 0, False: 29.4k]
  ------------------
 3124|    179|    case ARM::VST1LNq16Pseudo:
  ------------------
  |  Branch (3124:5): [True: 0, False: 29.4k]
  ------------------
 3125|    179|    case ARM::VST1LNq16Pseudo_UPD:
  ------------------
  |  Branch (3125:5): [True: 0, False: 29.4k]
  ------------------
 3126|    179|    case ARM::VST1LNq32Pseudo:
  ------------------
  |  Branch (3126:5): [True: 0, False: 29.4k]
  ------------------
 3127|    179|    case ARM::VST1LNq32Pseudo_UPD:
  ------------------
  |  Branch (3127:5): [True: 0, False: 29.4k]
  ------------------
 3128|    179|    case ARM::VST1LNq8Pseudo:
  ------------------
  |  Branch (3128:5): [True: 0, False: 29.4k]
  ------------------
 3129|    179|    case ARM::VST1LNq8Pseudo_UPD:
  ------------------
  |  Branch (3129:5): [True: 0, False: 29.4k]
  ------------------
 3130|    179|    case ARM::VST1d64QPseudo:
  ------------------
  |  Branch (3130:5): [True: 0, False: 29.4k]
  ------------------
 3131|    179|    case ARM::VST1d64QPseudoWB_fixed:
  ------------------
  |  Branch (3131:5): [True: 0, False: 29.4k]
  ------------------
 3132|    179|    case ARM::VST1d64QPseudoWB_register:
  ------------------
  |  Branch (3132:5): [True: 0, False: 29.4k]
  ------------------
 3133|    179|    case ARM::VST1d64TPseudo:
  ------------------
  |  Branch (3133:5): [True: 0, False: 29.4k]
  ------------------
 3134|    179|    case ARM::VST1d64TPseudoWB_fixed:
  ------------------
  |  Branch (3134:5): [True: 0, False: 29.4k]
  ------------------
 3135|    179|    case ARM::VST1d64TPseudoWB_register:
  ------------------
  |  Branch (3135:5): [True: 0, False: 29.4k]
  ------------------
 3136|    179|    case ARM::VST2LNd16Pseudo:
  ------------------
  |  Branch (3136:5): [True: 0, False: 29.4k]
  ------------------
 3137|    179|    case ARM::VST2LNd16Pseudo_UPD:
  ------------------
  |  Branch (3137:5): [True: 0, False: 29.4k]
  ------------------
 3138|    179|    case ARM::VST2LNd32Pseudo:
  ------------------
  |  Branch (3138:5): [True: 0, False: 29.4k]
  ------------------
 3139|    179|    case ARM::VST2LNd32Pseudo_UPD:
  ------------------
  |  Branch (3139:5): [True: 0, False: 29.4k]
  ------------------
 3140|    179|    case ARM::VST2LNd8Pseudo:
  ------------------
  |  Branch (3140:5): [True: 0, False: 29.4k]
  ------------------
 3141|    179|    case ARM::VST2LNd8Pseudo_UPD:
  ------------------
  |  Branch (3141:5): [True: 0, False: 29.4k]
  ------------------
 3142|    179|    case ARM::VST2LNq16Pseudo:
  ------------------
  |  Branch (3142:5): [True: 0, False: 29.4k]
  ------------------
 3143|    179|    case ARM::VST2LNq16Pseudo_UPD:
  ------------------
  |  Branch (3143:5): [True: 0, False: 29.4k]
  ------------------
 3144|    179|    case ARM::VST2LNq32Pseudo:
  ------------------
  |  Branch (3144:5): [True: 0, False: 29.4k]
  ------------------
 3145|    179|    case ARM::VST2LNq32Pseudo_UPD:
  ------------------
  |  Branch (3145:5): [True: 0, False: 29.4k]
  ------------------
 3146|    179|    case ARM::VST2q16Pseudo:
  ------------------
  |  Branch (3146:5): [True: 0, False: 29.4k]
  ------------------
 3147|    179|    case ARM::VST2q16PseudoWB_fixed:
  ------------------
  |  Branch (3147:5): [True: 0, False: 29.4k]
  ------------------
 3148|    179|    case ARM::VST2q16PseudoWB_register:
  ------------------
  |  Branch (3148:5): [True: 0, False: 29.4k]
  ------------------
 3149|    179|    case ARM::VST2q32Pseudo:
  ------------------
  |  Branch (3149:5): [True: 0, False: 29.4k]
  ------------------
 3150|    179|    case ARM::VST2q32PseudoWB_fixed:
  ------------------
  |  Branch (3150:5): [True: 0, False: 29.4k]
  ------------------
 3151|    179|    case ARM::VST2q32PseudoWB_register:
  ------------------
  |  Branch (3151:5): [True: 0, False: 29.4k]
  ------------------
 3152|    179|    case ARM::VST2q8Pseudo:
  ------------------
  |  Branch (3152:5): [True: 0, False: 29.4k]
  ------------------
 3153|    179|    case ARM::VST2q8PseudoWB_fixed:
  ------------------
  |  Branch (3153:5): [True: 0, False: 29.4k]
  ------------------
 3154|    179|    case ARM::VST2q8PseudoWB_register:
  ------------------
  |  Branch (3154:5): [True: 0, False: 29.4k]
  ------------------
 3155|    179|    case ARM::VST3LNd16Pseudo:
  ------------------
  |  Branch (3155:5): [True: 0, False: 29.4k]
  ------------------
 3156|    179|    case ARM::VST3LNd16Pseudo_UPD:
  ------------------
  |  Branch (3156:5): [True: 0, False: 29.4k]
  ------------------
 3157|    179|    case ARM::VST3LNd32Pseudo:
  ------------------
  |  Branch (3157:5): [True: 0, False: 29.4k]
  ------------------
 3158|    179|    case ARM::VST3LNd32Pseudo_UPD:
  ------------------
  |  Branch (3158:5): [True: 0, False: 29.4k]
  ------------------
 3159|    179|    case ARM::VST3LNd8Pseudo:
  ------------------
  |  Branch (3159:5): [True: 0, False: 29.4k]
  ------------------
 3160|    179|    case ARM::VST3LNd8Pseudo_UPD:
  ------------------
  |  Branch (3160:5): [True: 0, False: 29.4k]
  ------------------
 3161|    179|    case ARM::VST3LNq16Pseudo:
  ------------------
  |  Branch (3161:5): [True: 0, False: 29.4k]
  ------------------
 3162|    179|    case ARM::VST3LNq16Pseudo_UPD:
  ------------------
  |  Branch (3162:5): [True: 0, False: 29.4k]
  ------------------
 3163|    179|    case ARM::VST3LNq32Pseudo:
  ------------------
  |  Branch (3163:5): [True: 0, False: 29.4k]
  ------------------
 3164|    179|    case ARM::VST3LNq32Pseudo_UPD:
  ------------------
  |  Branch (3164:5): [True: 0, False: 29.4k]
  ------------------
 3165|    179|    case ARM::VST3d16Pseudo:
  ------------------
  |  Branch (3165:5): [True: 0, False: 29.4k]
  ------------------
 3166|    179|    case ARM::VST3d16Pseudo_UPD:
  ------------------
  |  Branch (3166:5): [True: 0, False: 29.4k]
  ------------------
 3167|    179|    case ARM::VST3d32Pseudo:
  ------------------
  |  Branch (3167:5): [True: 0, False: 29.4k]
  ------------------
 3168|    179|    case ARM::VST3d32Pseudo_UPD:
  ------------------
  |  Branch (3168:5): [True: 0, False: 29.4k]
  ------------------
 3169|    179|    case ARM::VST3d8Pseudo:
  ------------------
  |  Branch (3169:5): [True: 0, False: 29.4k]
  ------------------
 3170|    179|    case ARM::VST3d8Pseudo_UPD:
  ------------------
  |  Branch (3170:5): [True: 0, False: 29.4k]
  ------------------
 3171|    179|    case ARM::VST3q16Pseudo_UPD:
  ------------------
  |  Branch (3171:5): [True: 0, False: 29.4k]
  ------------------
 3172|    179|    case ARM::VST3q16oddPseudo:
  ------------------
  |  Branch (3172:5): [True: 0, False: 29.4k]
  ------------------
 3173|    179|    case ARM::VST3q16oddPseudo_UPD:
  ------------------
  |  Branch (3173:5): [True: 0, False: 29.4k]
  ------------------
 3174|    179|    case ARM::VST3q32Pseudo_UPD:
  ------------------
  |  Branch (3174:5): [True: 0, False: 29.4k]
  ------------------
 3175|    179|    case ARM::VST3q32oddPseudo:
  ------------------
  |  Branch (3175:5): [True: 0, False: 29.4k]
  ------------------
 3176|    179|    case ARM::VST3q32oddPseudo_UPD:
  ------------------
  |  Branch (3176:5): [True: 0, False: 29.4k]
  ------------------
 3177|    179|    case ARM::VST3q8Pseudo_UPD:
  ------------------
  |  Branch (3177:5): [True: 0, False: 29.4k]
  ------------------
 3178|    179|    case ARM::VST3q8oddPseudo:
  ------------------
  |  Branch (3178:5): [True: 0, False: 29.4k]
  ------------------
 3179|    179|    case ARM::VST3q8oddPseudo_UPD:
  ------------------
  |  Branch (3179:5): [True: 0, False: 29.4k]
  ------------------
 3180|    179|    case ARM::VST4LNd16Pseudo:
  ------------------
  |  Branch (3180:5): [True: 0, False: 29.4k]
  ------------------
 3181|    179|    case ARM::VST4LNd16Pseudo_UPD:
  ------------------
  |  Branch (3181:5): [True: 0, False: 29.4k]
  ------------------
 3182|    179|    case ARM::VST4LNd32Pseudo:
  ------------------
  |  Branch (3182:5): [True: 0, False: 29.4k]
  ------------------
 3183|    179|    case ARM::VST4LNd32Pseudo_UPD:
  ------------------
  |  Branch (3183:5): [True: 0, False: 29.4k]
  ------------------
 3184|    179|    case ARM::VST4LNd8Pseudo:
  ------------------
  |  Branch (3184:5): [True: 0, False: 29.4k]
  ------------------
 3185|    179|    case ARM::VST4LNd8Pseudo_UPD:
  ------------------
  |  Branch (3185:5): [True: 0, False: 29.4k]
  ------------------
 3186|    179|    case ARM::VST4LNq16Pseudo:
  ------------------
  |  Branch (3186:5): [True: 0, False: 29.4k]
  ------------------
 3187|    179|    case ARM::VST4LNq16Pseudo_UPD:
  ------------------
  |  Branch (3187:5): [True: 0, False: 29.4k]
  ------------------
 3188|    179|    case ARM::VST4LNq32Pseudo:
  ------------------
  |  Branch (3188:5): [True: 0, False: 29.4k]
  ------------------
 3189|    179|    case ARM::VST4LNq32Pseudo_UPD:
  ------------------
  |  Branch (3189:5): [True: 0, False: 29.4k]
  ------------------
 3190|    179|    case ARM::VST4d16Pseudo:
  ------------------
  |  Branch (3190:5): [True: 0, False: 29.4k]
  ------------------
 3191|    179|    case ARM::VST4d16Pseudo_UPD:
  ------------------
  |  Branch (3191:5): [True: 0, False: 29.4k]
  ------------------
 3192|    179|    case ARM::VST4d32Pseudo:
  ------------------
  |  Branch (3192:5): [True: 0, False: 29.4k]
  ------------------
 3193|    179|    case ARM::VST4d32Pseudo_UPD:
  ------------------
  |  Branch (3193:5): [True: 0, False: 29.4k]
  ------------------
 3194|    179|    case ARM::VST4d8Pseudo:
  ------------------
  |  Branch (3194:5): [True: 0, False: 29.4k]
  ------------------
 3195|    179|    case ARM::VST4d8Pseudo_UPD:
  ------------------
  |  Branch (3195:5): [True: 0, False: 29.4k]
  ------------------
 3196|    179|    case ARM::VST4q16Pseudo_UPD:
  ------------------
  |  Branch (3196:5): [True: 0, False: 29.4k]
  ------------------
 3197|    179|    case ARM::VST4q16oddPseudo:
  ------------------
  |  Branch (3197:5): [True: 0, False: 29.4k]
  ------------------
 3198|    179|    case ARM::VST4q16oddPseudo_UPD:
  ------------------
  |  Branch (3198:5): [True: 0, False: 29.4k]
  ------------------
 3199|    179|    case ARM::VST4q32Pseudo_UPD:
  ------------------
  |  Branch (3199:5): [True: 0, False: 29.4k]
  ------------------
 3200|    179|    case ARM::VST4q32oddPseudo:
  ------------------
  |  Branch (3200:5): [True: 0, False: 29.4k]
  ------------------
 3201|    179|    case ARM::VST4q32oddPseudo_UPD:
  ------------------
  |  Branch (3201:5): [True: 0, False: 29.4k]
  ------------------
 3202|    179|    case ARM::VST4q8Pseudo_UPD:
  ------------------
  |  Branch (3202:5): [True: 0, False: 29.4k]
  ------------------
 3203|    179|    case ARM::VST4q8oddPseudo:
  ------------------
  |  Branch (3203:5): [True: 0, False: 29.4k]
  ------------------
 3204|    179|    case ARM::VST4q8oddPseudo_UPD:
  ------------------
  |  Branch (3204:5): [True: 0, False: 29.4k]
  ------------------
 3205|    179|    case ARM::VSTMQIA:
  ------------------
  |  Branch (3205:5): [True: 0, False: 29.4k]
  ------------------
 3206|    179|    case ARM::VTBL3Pseudo:
  ------------------
  |  Branch (3206:5): [True: 0, False: 29.4k]
  ------------------
 3207|    179|    case ARM::VTBL4Pseudo:
  ------------------
  |  Branch (3207:5): [True: 0, False: 29.4k]
  ------------------
 3208|    179|    case ARM::VTBX3Pseudo:
  ------------------
  |  Branch (3208:5): [True: 0, False: 29.4k]
  ------------------
 3209|    179|    case ARM::VTBX4Pseudo:
  ------------------
  |  Branch (3209:5): [True: 0, False: 29.4k]
  ------------------
 3210|    189|    case ARM::t2CLREX:
  ------------------
  |  Branch (3210:5): [True: 10, False: 29.4k]
  ------------------
 3211|    189|    case ARM::t2DCPS1:
  ------------------
  |  Branch (3211:5): [True: 0, False: 29.4k]
  ------------------
 3212|    189|    case ARM::t2DCPS2:
  ------------------
  |  Branch (3212:5): [True: 0, False: 29.4k]
  ------------------
 3213|    189|    case ARM::t2DCPS3:
  ------------------
  |  Branch (3213:5): [True: 0, False: 29.4k]
  ------------------
 3214|    189|    case ARM::t2Int_eh_sjlj_setjmp:
  ------------------
  |  Branch (3214:5): [True: 0, False: 29.4k]
  ------------------
 3215|    189|    case ARM::t2Int_eh_sjlj_setjmp_nofp:
  ------------------
  |  Branch (3215:5): [True: 0, False: 29.4k]
  ------------------
 3216|    190|    case ARM::t2SG:
  ------------------
  |  Branch (3216:5): [True: 1, False: 29.4k]
  ------------------
 3217|    190|    case ARM::tInt_eh_sjlj_longjmp:
  ------------------
  |  Branch (3217:5): [True: 0, False: 29.4k]
  ------------------
 3218|    190|    case ARM::tInt_eh_sjlj_setjmp:
  ------------------
  |  Branch (3218:5): [True: 0, False: 29.4k]
  ------------------
 3219|    254|    case ARM::tTRAP: {
  ------------------
  |  Branch (3219:5): [True: 64, False: 29.4k]
  ------------------
 3220|    254|      break;
 3221|    190|    }
 3222|      0|    case ARM::VRINTAD:
  ------------------
  |  Branch (3222:5): [True: 0, False: 29.4k]
  ------------------
 3223|      0|    case ARM::VRINTMD:
  ------------------
  |  Branch (3223:5): [True: 0, False: 29.4k]
  ------------------
 3224|      0|    case ARM::VRINTND:
  ------------------
  |  Branch (3224:5): [True: 0, False: 29.4k]
  ------------------
 3225|      0|    case ARM::VRINTPD: {
  ------------------
  |  Branch (3225:5): [True: 0, False: 29.4k]
  ------------------
 3226|       |      // op: Dd
 3227|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3228|      0|      Value |= (op & UINT64_C(16)) << 18;
 3229|      0|      Value |= (op & UINT64_C(15)) << 12;
 3230|       |      // op: Dm
 3231|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3232|      0|      Value |= (op & UINT64_C(16)) << 1;
 3233|      0|      Value |= op & UINT64_C(15);
 3234|      0|      break;
 3235|      0|    }
 3236|      0|    case ARM::VMAXNMD:
  ------------------
  |  Branch (3236:5): [True: 0, False: 29.4k]
  ------------------
 3237|      0|    case ARM::VMINNMD:
  ------------------
  |  Branch (3237:5): [True: 0, False: 29.4k]
  ------------------
 3238|      0|    case ARM::VSELEQD:
  ------------------
  |  Branch (3238:5): [True: 0, False: 29.4k]
  ------------------
 3239|      0|    case ARM::VSELGED:
  ------------------
  |  Branch (3239:5): [True: 0, False: 29.4k]
  ------------------
 3240|      0|    case ARM::VSELGTD:
  ------------------
  |  Branch (3240:5): [True: 0, False: 29.4k]
  ------------------
 3241|      0|    case ARM::VSELVSD: {
  ------------------
  |  Branch (3241:5): [True: 0, False: 29.4k]
  ------------------
 3242|       |      // op: Dd
 3243|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3244|      0|      Value |= (op & UINT64_C(16)) << 18;
 3245|      0|      Value |= (op & UINT64_C(15)) << 12;
 3246|       |      // op: Dn
 3247|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3248|      0|      Value |= (op & UINT64_C(15)) << 16;
 3249|      0|      Value |= (op & UINT64_C(16)) << 3;
 3250|       |      // op: Dm
 3251|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3252|      0|      Value |= (op & UINT64_C(16)) << 1;
 3253|      0|      Value |= op & UINT64_C(15);
 3254|      0|      break;
 3255|      0|    }
 3256|      0|    case ARM::CRC32B:
  ------------------
  |  Branch (3256:5): [True: 0, False: 29.4k]
  ------------------
 3257|      0|    case ARM::CRC32CB:
  ------------------
  |  Branch (3257:5): [True: 0, False: 29.4k]
  ------------------
 3258|      0|    case ARM::CRC32CH:
  ------------------
  |  Branch (3258:5): [True: 0, False: 29.4k]
  ------------------
 3259|      0|    case ARM::CRC32CW:
  ------------------
  |  Branch (3259:5): [True: 0, False: 29.4k]
  ------------------
 3260|      0|    case ARM::CRC32H:
  ------------------
  |  Branch (3260:5): [True: 0, False: 29.4k]
  ------------------
 3261|      0|    case ARM::CRC32W: {
  ------------------
  |  Branch (3261:5): [True: 0, False: 29.4k]
  ------------------
 3262|       |      // op: Rd
 3263|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3264|      0|      Value |= (op & UINT64_C(15)) << 12;
 3265|       |      // op: Rn
 3266|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3267|      0|      Value |= (op & UINT64_C(15)) << 16;
 3268|       |      // op: Rm
 3269|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3270|      0|      Value |= op & UINT64_C(15);
 3271|      0|      break;
 3272|      0|    }
 3273|      0|    case ARM::t2MRS_AR:
  ------------------
  |  Branch (3273:5): [True: 0, False: 29.4k]
  ------------------
 3274|      0|    case ARM::t2MRSsys_AR: {
  ------------------
  |  Branch (3274:5): [True: 0, False: 29.4k]
  ------------------
 3275|       |      // op: Rd
 3276|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3277|      0|      Value |= (op & UINT64_C(15)) << 8;
 3278|      0|      break;
 3279|      0|    }
 3280|     10|    case ARM::t2CLZ:
  ------------------
  |  Branch (3280:5): [True: 10, False: 29.4k]
  ------------------
 3281|     10|    case ARM::t2RBIT:
  ------------------
  |  Branch (3281:5): [True: 0, False: 29.4k]
  ------------------
 3282|     20|    case ARM::t2REV:
  ------------------
  |  Branch (3282:5): [True: 10, False: 29.4k]
  ------------------
 3283|     23|    case ARM::t2REV16:
  ------------------
  |  Branch (3283:5): [True: 3, False: 29.4k]
  ------------------
 3284|     29|    case ARM::t2REVSH: {
  ------------------
  |  Branch (3284:5): [True: 6, False: 29.4k]
  ------------------
 3285|       |      // op: Rd
 3286|     29|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3287|     29|      Value |= (op & UINT64_C(15)) << 8;
 3288|       |      // op: Rm
 3289|     29|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3290|     29|      Value |= (op & UINT64_C(15)) << 16;
 3291|     29|      Value |= op & UINT64_C(15);
 3292|     29|      break;
 3293|     23|    }
 3294|      0|    case ARM::t2MOVsra_flag:
  ------------------
  |  Branch (3294:5): [True: 0, False: 29.4k]
  ------------------
 3295|      0|    case ARM::t2MOVsrl_flag: {
  ------------------
  |  Branch (3295:5): [True: 0, False: 29.4k]
  ------------------
 3296|       |      // op: Rd
 3297|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3298|      0|      Value |= (op & UINT64_C(15)) << 8;
 3299|       |      // op: Rm
 3300|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3301|      0|      Value |= op & UINT64_C(15);
 3302|      0|      break;
 3303|      0|    }
 3304|     10|    case ARM::t2SXTB:
  ------------------
  |  Branch (3304:5): [True: 10, False: 29.4k]
  ------------------
 3305|     10|    case ARM::t2SXTB16:
  ------------------
  |  Branch (3305:5): [True: 0, False: 29.4k]
  ------------------
 3306|     21|    case ARM::t2SXTH:
  ------------------
  |  Branch (3306:5): [True: 11, False: 29.4k]
  ------------------
 3307|     27|    case ARM::t2UXTB:
  ------------------
  |  Branch (3307:5): [True: 6, False: 29.4k]
  ------------------
 3308|     27|    case ARM::t2UXTB16:
  ------------------
  |  Branch (3308:5): [True: 0, False: 29.4k]
  ------------------
 3309|     37|    case ARM::t2UXTH: {
  ------------------
  |  Branch (3309:5): [True: 10, False: 29.4k]
  ------------------
 3310|       |      // op: Rd
 3311|     37|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3312|     37|      Value |= (op & UINT64_C(15)) << 8;
 3313|       |      // op: Rm
 3314|     37|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3315|     37|      Value |= op & UINT64_C(15);
 3316|       |      // op: rot
 3317|     37|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3318|     37|      Value |= (op & UINT64_C(3)) << 4;
 3319|     37|      break;
 3320|     27|    }
 3321|      0|    case ARM::t2CRC32B:
  ------------------
  |  Branch (3321:5): [True: 0, False: 29.4k]
  ------------------
 3322|      0|    case ARM::t2CRC32CB:
  ------------------
  |  Branch (3322:5): [True: 0, False: 29.4k]
  ------------------
 3323|      0|    case ARM::t2CRC32CH:
  ------------------
  |  Branch (3323:5): [True: 0, False: 29.4k]
  ------------------
 3324|      0|    case ARM::t2CRC32CW:
  ------------------
  |  Branch (3324:5): [True: 0, False: 29.4k]
  ------------------
 3325|      0|    case ARM::t2CRC32H:
  ------------------
  |  Branch (3325:5): [True: 0, False: 29.4k]
  ------------------
 3326|      0|    case ARM::t2CRC32W:
  ------------------
  |  Branch (3326:5): [True: 0, False: 29.4k]
  ------------------
 3327|    296|    case ARM::t2MUL:
  ------------------
  |  Branch (3327:5): [True: 296, False: 29.1k]
  ------------------
 3328|    296|    case ARM::t2QADD16:
  ------------------
  |  Branch (3328:5): [True: 0, False: 29.4k]
  ------------------
 3329|    296|    case ARM::t2QADD8:
  ------------------
  |  Branch (3329:5): [True: 0, False: 29.4k]
  ------------------
 3330|    306|    case ARM::t2QASX:
  ------------------
  |  Branch (3330:5): [True: 10, False: 29.4k]
  ------------------
 3331|    306|    case ARM::t2QSAX:
  ------------------
  |  Branch (3331:5): [True: 0, False: 29.4k]
  ------------------
 3332|    306|    case ARM::t2QSUB16:
  ------------------
  |  Branch (3332:5): [True: 0, False: 29.4k]
  ------------------
 3333|    306|    case ARM::t2QSUB8:
  ------------------
  |  Branch (3333:5): [True: 0, False: 29.4k]
  ------------------
 3334|    306|    case ARM::t2SADD16:
  ------------------
  |  Branch (3334:5): [True: 0, False: 29.4k]
  ------------------
 3335|    306|    case ARM::t2SADD8:
  ------------------
  |  Branch (3335:5): [True: 0, False: 29.4k]
  ------------------
 3336|    317|    case ARM::t2SASX:
  ------------------
  |  Branch (3336:5): [True: 11, False: 29.4k]
  ------------------
 3337|    317|    case ARM::t2SDIV:
  ------------------
  |  Branch (3337:5): [True: 0, False: 29.4k]
  ------------------
 3338|    327|    case ARM::t2SEL:
  ------------------
  |  Branch (3338:5): [True: 10, False: 29.4k]
  ------------------
 3339|    327|    case ARM::t2SHADD16:
  ------------------
  |  Branch (3339:5): [True: 0, False: 29.4k]
  ------------------
 3340|    327|    case ARM::t2SHADD8:
  ------------------
  |  Branch (3340:5): [True: 0, False: 29.4k]
  ------------------
 3341|    327|    case ARM::t2SHASX:
  ------------------
  |  Branch (3341:5): [True: 0, False: 29.4k]
  ------------------
 3342|    327|    case ARM::t2SHSAX:
  ------------------
  |  Branch (3342:5): [True: 0, False: 29.4k]
  ------------------
 3343|    327|    case ARM::t2SHSUB16:
  ------------------
  |  Branch (3343:5): [True: 0, False: 29.4k]
  ------------------
 3344|    327|    case ARM::t2SHSUB8:
  ------------------
  |  Branch (3344:5): [True: 0, False: 29.4k]
  ------------------
 3345|    327|    case ARM::t2SMMUL:
  ------------------
  |  Branch (3345:5): [True: 0, False: 29.4k]
  ------------------
 3346|    327|    case ARM::t2SMMULR:
  ------------------
  |  Branch (3346:5): [True: 0, False: 29.4k]
  ------------------
 3347|    327|    case ARM::t2SMUAD:
  ------------------
  |  Branch (3347:5): [True: 0, False: 29.4k]
  ------------------
 3348|    327|    case ARM::t2SMUADX:
  ------------------
  |  Branch (3348:5): [True: 0, False: 29.4k]
  ------------------
 3349|    327|    case ARM::t2SMULBB:
  ------------------
  |  Branch (3349:5): [True: 0, False: 29.4k]
  ------------------
 3350|    327|    case ARM::t2SMULBT:
  ------------------
  |  Branch (3350:5): [True: 0, False: 29.4k]
  ------------------
 3351|    327|    case ARM::t2SMULTB:
  ------------------
  |  Branch (3351:5): [True: 0, False: 29.4k]
  ------------------
 3352|    327|    case ARM::t2SMULTT:
  ------------------
  |  Branch (3352:5): [True: 0, False: 29.4k]
  ------------------
 3353|    327|    case ARM::t2SMULWB:
  ------------------
  |  Branch (3353:5): [True: 0, False: 29.4k]
  ------------------
 3354|    327|    case ARM::t2SMULWT:
  ------------------
  |  Branch (3354:5): [True: 0, False: 29.4k]
  ------------------
 3355|    327|    case ARM::t2SMUSD:
  ------------------
  |  Branch (3355:5): [True: 0, False: 29.4k]
  ------------------
 3356|    327|    case ARM::t2SMUSDX:
  ------------------
  |  Branch (3356:5): [True: 0, False: 29.4k]
  ------------------
 3357|    327|    case ARM::t2SSAX:
  ------------------
  |  Branch (3357:5): [True: 0, False: 29.4k]
  ------------------
 3358|    327|    case ARM::t2SSUB16:
  ------------------
  |  Branch (3358:5): [True: 0, False: 29.4k]
  ------------------
 3359|    327|    case ARM::t2SSUB8:
  ------------------
  |  Branch (3359:5): [True: 0, False: 29.4k]
  ------------------
 3360|    327|    case ARM::t2UADD16:
  ------------------
  |  Branch (3360:5): [True: 0, False: 29.4k]
  ------------------
 3361|    327|    case ARM::t2UADD8:
  ------------------
  |  Branch (3361:5): [True: 0, False: 29.4k]
  ------------------
 3362|    346|    case ARM::t2UASX:
  ------------------
  |  Branch (3362:5): [True: 19, False: 29.4k]
  ------------------
 3363|    346|    case ARM::t2UDIV:
  ------------------
  |  Branch (3363:5): [True: 0, False: 29.4k]
  ------------------
 3364|    346|    case ARM::t2UHADD16:
  ------------------
  |  Branch (3364:5): [True: 0, False: 29.4k]
  ------------------
 3365|    346|    case ARM::t2UHADD8:
  ------------------
  |  Branch (3365:5): [True: 0, False: 29.4k]
  ------------------
 3366|    346|    case ARM::t2UHASX:
  ------------------
  |  Branch (3366:5): [True: 0, False: 29.4k]
  ------------------
 3367|    346|    case ARM::t2UHSAX:
  ------------------
  |  Branch (3367:5): [True: 0, False: 29.4k]
  ------------------
 3368|    346|    case ARM::t2UHSUB16:
  ------------------
  |  Branch (3368:5): [True: 0, False: 29.4k]
  ------------------
 3369|    346|    case ARM::t2UHSUB8:
  ------------------
  |  Branch (3369:5): [True: 0, False: 29.4k]
  ------------------
 3370|    346|    case ARM::t2UQADD16:
  ------------------
  |  Branch (3370:5): [True: 0, False: 29.4k]
  ------------------
 3371|    346|    case ARM::t2UQADD8:
  ------------------
  |  Branch (3371:5): [True: 0, False: 29.4k]
  ------------------
 3372|    346|    case ARM::t2UQASX:
  ------------------
  |  Branch (3372:5): [True: 0, False: 29.4k]
  ------------------
 3373|    346|    case ARM::t2UQSAX:
  ------------------
  |  Branch (3373:5): [True: 0, False: 29.4k]
  ------------------
 3374|    346|    case ARM::t2UQSUB16:
  ------------------
  |  Branch (3374:5): [True: 0, False: 29.4k]
  ------------------
 3375|    346|    case ARM::t2UQSUB8:
  ------------------
  |  Branch (3375:5): [True: 0, False: 29.4k]
  ------------------
 3376|    346|    case ARM::t2USAD8:
  ------------------
  |  Branch (3376:5): [True: 0, False: 29.4k]
  ------------------
 3377|    346|    case ARM::t2USAX:
  ------------------
  |  Branch (3377:5): [True: 0, False: 29.4k]
  ------------------
 3378|    346|    case ARM::t2USUB16:
  ------------------
  |  Branch (3378:5): [True: 0, False: 29.4k]
  ------------------
 3379|    346|    case ARM::t2USUB8: {
  ------------------
  |  Branch (3379:5): [True: 0, False: 29.4k]
  ------------------
 3380|       |      // op: Rd
 3381|    346|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3382|    346|      Value |= (op & UINT64_C(15)) << 8;
 3383|       |      // op: Rn
 3384|    346|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3385|    346|      Value |= (op & UINT64_C(15)) << 16;
 3386|       |      // op: Rm
 3387|    346|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3388|    346|      Value |= op & UINT64_C(15);
 3389|    346|      break;
 3390|    346|    }
 3391|      0|    case ARM::t2MLA:
  ------------------
  |  Branch (3391:5): [True: 0, False: 29.4k]
  ------------------
 3392|      0|    case ARM::t2MLS:
  ------------------
  |  Branch (3392:5): [True: 0, False: 29.4k]
  ------------------
 3393|      0|    case ARM::t2SMLABB:
  ------------------
  |  Branch (3393:5): [True: 0, False: 29.4k]
  ------------------
 3394|      0|    case ARM::t2SMLABT:
  ------------------
  |  Branch (3394:5): [True: 0, False: 29.4k]
  ------------------
 3395|      0|    case ARM::t2SMLAD:
  ------------------
  |  Branch (3395:5): [True: 0, False: 29.4k]
  ------------------
 3396|      0|    case ARM::t2SMLADX:
  ------------------
  |  Branch (3396:5): [True: 0, False: 29.4k]
  ------------------
 3397|      0|    case ARM::t2SMLATB:
  ------------------
  |  Branch (3397:5): [True: 0, False: 29.4k]
  ------------------
 3398|      0|    case ARM::t2SMLATT:
  ------------------
  |  Branch (3398:5): [True: 0, False: 29.4k]
  ------------------
 3399|      0|    case ARM::t2SMLAWB:
  ------------------
  |  Branch (3399:5): [True: 0, False: 29.4k]
  ------------------
 3400|      0|    case ARM::t2SMLAWT:
  ------------------
  |  Branch (3400:5): [True: 0, False: 29.4k]
  ------------------
 3401|      0|    case ARM::t2SMLSD:
  ------------------
  |  Branch (3401:5): [True: 0, False: 29.4k]
  ------------------
 3402|      0|    case ARM::t2SMLSDX:
  ------------------
  |  Branch (3402:5): [True: 0, False: 29.4k]
  ------------------
 3403|      0|    case ARM::t2SMMLA:
  ------------------
  |  Branch (3403:5): [True: 0, False: 29.4k]
  ------------------
 3404|      0|    case ARM::t2SMMLAR:
  ------------------
  |  Branch (3404:5): [True: 0, False: 29.4k]
  ------------------
 3405|      0|    case ARM::t2SMMLS:
  ------------------
  |  Branch (3405:5): [True: 0, False: 29.4k]
  ------------------
 3406|      0|    case ARM::t2SMMLSR:
  ------------------
  |  Branch (3406:5): [True: 0, False: 29.4k]
  ------------------
 3407|      0|    case ARM::t2USADA8: {
  ------------------
  |  Branch (3407:5): [True: 0, False: 29.4k]
  ------------------
 3408|       |      // op: Rd
 3409|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3410|      0|      Value |= (op & UINT64_C(15)) << 8;
 3411|       |      // op: Rn
 3412|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3413|      0|      Value |= (op & UINT64_C(15)) << 16;
 3414|       |      // op: Rm
 3415|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3416|      0|      Value |= op & UINT64_C(15);
 3417|       |      // op: Ra
 3418|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3419|      0|      Value |= (op & UINT64_C(15)) << 12;
 3420|      0|      break;
 3421|      0|    }
 3422|      0|    case ARM::t2SXTAB:
  ------------------
  |  Branch (3422:5): [True: 0, False: 29.4k]
  ------------------
 3423|      0|    case ARM::t2SXTAB16:
  ------------------
  |  Branch (3423:5): [True: 0, False: 29.4k]
  ------------------
 3424|      0|    case ARM::t2SXTAH:
  ------------------
  |  Branch (3424:5): [True: 0, False: 29.4k]
  ------------------
 3425|      0|    case ARM::t2UXTAB:
  ------------------
  |  Branch (3425:5): [True: 0, False: 29.4k]
  ------------------
 3426|      0|    case ARM::t2UXTAB16:
  ------------------
  |  Branch (3426:5): [True: 0, False: 29.4k]
  ------------------
 3427|      0|    case ARM::t2UXTAH: {
  ------------------
  |  Branch (3427:5): [True: 0, False: 29.4k]
  ------------------
 3428|       |      // op: Rd
 3429|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3430|      0|      Value |= (op & UINT64_C(15)) << 8;
 3431|       |      // op: Rn
 3432|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3433|      0|      Value |= (op & UINT64_C(15)) << 16;
 3434|       |      // op: Rm
 3435|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3436|      0|      Value |= op & UINT64_C(15);
 3437|       |      // op: rot
 3438|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3439|      0|      Value |= (op & UINT64_C(3)) << 4;
 3440|      0|      break;
 3441|      0|    }
 3442|      0|    case ARM::t2PKHBT:
  ------------------
  |  Branch (3442:5): [True: 0, False: 29.4k]
  ------------------
 3443|      0|    case ARM::t2PKHTB: {
  ------------------
  |  Branch (3443:5): [True: 0, False: 29.4k]
  ------------------
 3444|       |      // op: Rd
 3445|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3446|      0|      Value |= (op & UINT64_C(15)) << 8;
 3447|       |      // op: Rn
 3448|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3449|      0|      Value |= (op & UINT64_C(15)) << 16;
 3450|       |      // op: Rm
 3451|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3452|      0|      Value |= op & UINT64_C(15);
 3453|       |      // op: sh
 3454|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3455|      0|      Value |= (op & UINT64_C(28)) << 10;
 3456|      0|      Value |= (op & UINT64_C(3)) << 6;
 3457|      0|      break;
 3458|      0|    }
 3459|     69|    case ARM::t2ADDri12:
  ------------------
  |  Branch (3459:5): [True: 69, False: 29.4k]
  ------------------
 3460|    129|    case ARM::t2SUBri12: {
  ------------------
  |  Branch (3460:5): [True: 60, False: 29.4k]
  ------------------
 3461|       |      // op: Rd
 3462|    129|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3463|    129|      Value |= (op & UINT64_C(15)) << 8;
 3464|       |      // op: Rn
 3465|    129|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3466|    129|      Value |= (op & UINT64_C(15)) << 16;
 3467|       |      // op: imm
 3468|    129|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3469|    129|      Value |= (op & UINT64_C(2048)) << 15;
 3470|    129|      Value |= (op & UINT64_C(1792)) << 4;
 3471|    129|      Value |= op & UINT64_C(255);
 3472|    129|      break;
 3473|     69|    }
 3474|     10|    case ARM::t2QADD:
  ------------------
  |  Branch (3474:5): [True: 10, False: 29.4k]
  ------------------
 3475|     10|    case ARM::t2QDADD:
  ------------------
  |  Branch (3475:5): [True: 0, False: 29.4k]
  ------------------
 3476|     10|    case ARM::t2QDSUB:
  ------------------
  |  Branch (3476:5): [True: 0, False: 29.4k]
  ------------------
 3477|     13|    case ARM::t2QSUB: {
  ------------------
  |  Branch (3477:5): [True: 3, False: 29.4k]
  ------------------
 3478|       |      // op: Rd
 3479|     13|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3480|     13|      Value |= (op & UINT64_C(15)) << 8;
 3481|       |      // op: Rn
 3482|     13|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3483|     13|      Value |= (op & UINT64_C(15)) << 16;
 3484|       |      // op: Rm
 3485|     13|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3486|     13|      Value |= op & UINT64_C(15);
 3487|     13|      break;
 3488|     10|    }
 3489|      0|    case ARM::t2BFI: {
  ------------------
  |  Branch (3489:5): [True: 0, False: 29.4k]
  ------------------
 3490|       |      // op: Rd
 3491|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3492|      0|      Value |= (op & UINT64_C(15)) << 8;
 3493|       |      // op: Rn
 3494|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3495|      0|      Value |= (op & UINT64_C(15)) << 16;
 3496|       |      // op: imm
 3497|      0|      op = getBitfieldInvertedMaskOpValue(MI, 3, Fixups, STI);
 3498|      0|      Value |= (op & UINT64_C(28)) << 10;
 3499|      0|      Value |= (op & UINT64_C(3)) << 6;
 3500|      0|      Value |= (op & UINT64_C(992)) >> 5;
 3501|      0|      break;
 3502|     10|    }
 3503|      0|    case ARM::t2SSAT16:
  ------------------
  |  Branch (3503:5): [True: 0, False: 29.4k]
  ------------------
 3504|      0|    case ARM::t2USAT16: {
  ------------------
  |  Branch (3504:5): [True: 0, False: 29.4k]
  ------------------
 3505|       |      // op: Rd
 3506|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3507|      0|      Value |= (op & UINT64_C(15)) << 8;
 3508|       |      // op: Rn
 3509|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3510|      0|      Value |= (op & UINT64_C(15)) << 16;
 3511|       |      // op: sat_imm
 3512|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3513|      0|      Value |= op & UINT64_C(15);
 3514|      0|      break;
 3515|      0|    }
 3516|      0|    case ARM::t2SSAT:
  ------------------
  |  Branch (3516:5): [True: 0, False: 29.4k]
  ------------------
 3517|      0|    case ARM::t2USAT: {
  ------------------
  |  Branch (3517:5): [True: 0, False: 29.4k]
  ------------------
 3518|       |      // op: Rd
 3519|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3520|      0|      Value |= (op & UINT64_C(15)) << 8;
 3521|       |      // op: Rn
 3522|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3523|      0|      Value |= (op & UINT64_C(15)) << 16;
 3524|       |      // op: sat_imm
 3525|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3526|      0|      Value |= op & UINT64_C(31);
 3527|       |      // op: sh
 3528|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3529|      0|      Value |= (op & UINT64_C(32)) << 16;
 3530|      0|      Value |= (op & UINT64_C(28)) << 10;
 3531|      0|      Value |= (op & UINT64_C(3)) << 6;
 3532|      0|      break;
 3533|      0|    }
 3534|      0|    case ARM::t2STREX: {
  ------------------
  |  Branch (3534:5): [True: 0, False: 29.4k]
  ------------------
 3535|       |      // op: Rd
 3536|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3537|      0|      Value |= (op & UINT64_C(15)) << 8;
 3538|       |      // op: Rt
 3539|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3540|      0|      Value |= (op & UINT64_C(15)) << 12;
 3541|       |      // op: addr
 3542|      0|      op = getT2AddrModeImm0_1020s4OpValue(MI, 2, Fixups, STI);
 3543|      0|      Value |= (op & UINT64_C(3840)) << 8;
 3544|      0|      Value |= op & UINT64_C(255);
 3545|      0|      break;
 3546|      0|    }
 3547|      0|    case ARM::t2MRS_M: {
  ------------------
  |  Branch (3547:5): [True: 0, False: 29.4k]
  ------------------
 3548|       |      // op: Rd
 3549|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3550|      0|      Value |= (op & UINT64_C(15)) << 8;
 3551|       |      // op: SYSm
 3552|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3553|      0|      Value |= op & UINT64_C(255);
 3554|      0|      break;
 3555|      0|    }
 3556|     68|    case ARM::t2ADR: {
  ------------------
  |  Branch (3556:5): [True: 68, False: 29.4k]
  ------------------
 3557|       |      // op: Rd
 3558|     68|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3559|     68|      Value |= (op & UINT64_C(15)) << 8;
 3560|       |      // op: addr
 3561|     68|      op = getT2AdrLabelOpValue(MI, 1, Fixups, STI);
 3562|     68|      Value |= (op & UINT64_C(2048)) << 15;
 3563|     68|      Value |= (op & UINT64_C(4096)) << 11;
 3564|     68|      Value |= (op & UINT64_C(4096)) << 9;
 3565|     68|      Value |= (op & UINT64_C(1792)) << 4;
 3566|     68|      Value |= op & UINT64_C(255);
 3567|     68|      break;
 3568|      0|    }
 3569|      0|    case ARM::t2BFC: {
  ------------------
  |  Branch (3569:5): [True: 0, False: 29.4k]
  ------------------
 3570|       |      // op: Rd
 3571|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3572|      0|      Value |= (op & UINT64_C(15)) << 8;
 3573|       |      // op: imm
 3574|      0|      op = getBitfieldInvertedMaskOpValue(MI, 2, Fixups, STI);
 3575|      0|      Value |= (op & UINT64_C(28)) << 10;
 3576|      0|      Value |= (op & UINT64_C(3)) << 6;
 3577|      0|      Value |= (op & UINT64_C(992)) >> 5;
 3578|      0|      break;
 3579|      0|    }
 3580|      6|    case ARM::t2MOVi16: {
  ------------------
  |  Branch (3580:5): [True: 6, False: 29.4k]
  ------------------
 3581|       |      // op: Rd
 3582|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3583|      6|      Value |= (op & UINT64_C(15)) << 8;
 3584|       |      // op: imm
 3585|      6|      op = getHiLo16ImmOpValue(MI, 1, Fixups, STI);
 3586|      6|      Value |= (op & UINT64_C(2048)) << 15;
 3587|      6|      Value |= (op & UINT64_C(61440)) << 4;
 3588|      6|      Value |= (op & UINT64_C(1792)) << 4;
 3589|      6|      Value |= op & UINT64_C(255);
 3590|      6|      break;
 3591|      0|    }
 3592|     13|    case ARM::t2MOVTi16: {
  ------------------
  |  Branch (3592:5): [True: 13, False: 29.4k]
  ------------------
 3593|       |      // op: Rd
 3594|     13|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3595|     13|      Value |= (op & UINT64_C(15)) << 8;
 3596|       |      // op: imm
 3597|     13|      op = getHiLo16ImmOpValue(MI, 2, Fixups, STI);
 3598|     13|      Value |= (op & UINT64_C(2048)) << 15;
 3599|     13|      Value |= (op & UINT64_C(61440)) << 4;
 3600|     13|      Value |= (op & UINT64_C(1792)) << 4;
 3601|     13|      Value |= op & UINT64_C(255);
 3602|     13|      break;
 3603|      0|    }
 3604|      0|    case ARM::t2SBFX:
  ------------------
  |  Branch (3604:5): [True: 0, False: 29.4k]
  ------------------
 3605|      0|    case ARM::t2UBFX: {
  ------------------
  |  Branch (3605:5): [True: 0, False: 29.4k]
  ------------------
 3606|       |      // op: Rd
 3607|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3608|      0|      Value |= (op & UINT64_C(15)) << 8;
 3609|       |      // op: msb
 3610|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3611|      0|      Value |= op & UINT64_C(31);
 3612|       |      // op: lsb
 3613|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3614|      0|      Value |= (op & UINT64_C(28)) << 10;
 3615|      0|      Value |= (op & UINT64_C(3)) << 6;
 3616|       |      // op: Rn
 3617|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3618|      0|      Value |= (op & UINT64_C(15)) << 16;
 3619|      0|      break;
 3620|      0|    }
 3621|     65|    case ARM::tADR: {
  ------------------
  |  Branch (3621:5): [True: 65, False: 29.4k]
  ------------------
 3622|       |      // op: Rd
 3623|     65|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3624|     65|      Value |= (op & UINT64_C(7)) << 8;
 3625|       |      // op: addr
 3626|     65|      op = getThumbAdrLabelOpValue(MI, 1, Fixups, STI);
 3627|     65|      Value |= op & UINT64_C(255);
 3628|     65|      break;
 3629|      0|    }
 3630|     14|    case ARM::tMOVi8: {
  ------------------
  |  Branch (3630:5): [True: 14, False: 29.4k]
  ------------------
 3631|       |      // op: Rd
 3632|     14|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3633|     14|      Value |= (op & UINT64_C(7)) << 8;
 3634|       |      // op: imm8
 3635|     14|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3636|     14|      Value |= op & UINT64_C(255);
 3637|     14|      break;
 3638|      0|    }
 3639|     40|    case ARM::tMOVr: {
  ------------------
  |  Branch (3639:5): [True: 40, False: 29.4k]
  ------------------
 3640|       |      // op: Rd
 3641|     40|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3642|     40|      Value |= (op & UINT64_C(8)) << 4;
 3643|     40|      Value |= op & UINT64_C(7);
 3644|       |      // op: Rm
 3645|     40|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3646|     40|      Value |= (op & UINT64_C(15)) << 3;
 3647|     40|      break;
 3648|      0|    }
 3649|      0|    case ARM::t2STLEX: {
  ------------------
  |  Branch (3649:5): [True: 0, False: 29.4k]
  ------------------
 3650|       |      // op: Rd
 3651|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3652|      0|      Value |= op & UINT64_C(15);
 3653|       |      // op: Rt
 3654|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3655|      0|      Value |= (op & UINT64_C(15)) << 12;
 3656|       |      // op: addr
 3657|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3658|      0|      Value |= (op & UINT64_C(15)) << 16;
 3659|      0|      break;
 3660|      0|    }
 3661|      0|    case ARM::t2STLEXB:
  ------------------
  |  Branch (3661:5): [True: 0, False: 29.4k]
  ------------------
 3662|      0|    case ARM::t2STLEXH:
  ------------------
  |  Branch (3662:5): [True: 0, False: 29.4k]
  ------------------
 3663|      0|    case ARM::t2STREXB:
  ------------------
  |  Branch (3663:5): [True: 0, False: 29.4k]
  ------------------
 3664|      0|    case ARM::t2STREXH: {
  ------------------
  |  Branch (3664:5): [True: 0, False: 29.4k]
  ------------------
 3665|       |      // op: Rd
 3666|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3667|      0|      Value |= op & UINT64_C(15);
 3668|       |      // op: addr
 3669|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3670|      0|      Value |= (op & UINT64_C(15)) << 16;
 3671|       |      // op: Rt
 3672|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3673|      0|      Value |= (op & UINT64_C(15)) << 12;
 3674|      0|      break;
 3675|      0|    }
 3676|      0|    case ARM::t2STLEXD:
  ------------------
  |  Branch (3676:5): [True: 0, False: 29.4k]
  ------------------
 3677|      0|    case ARM::t2STREXD: {
  ------------------
  |  Branch (3677:5): [True: 0, False: 29.4k]
  ------------------
 3678|       |      // op: Rd
 3679|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3680|      0|      Value |= op & UINT64_C(15);
 3681|       |      // op: addr
 3682|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3683|      0|      Value |= (op & UINT64_C(15)) << 16;
 3684|       |      // op: Rt
 3685|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3686|      0|      Value |= (op & UINT64_C(15)) << 12;
 3687|       |      // op: Rt2
 3688|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3689|      0|      Value |= (op & UINT64_C(15)) << 8;
 3690|      0|      break;
 3691|      0|    }
 3692|      4|    case ARM::tMOVSr: {
  ------------------
  |  Branch (3692:5): [True: 4, False: 29.4k]
  ------------------
 3693|       |      // op: Rd
 3694|      4|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3695|      4|      Value |= op & UINT64_C(7);
 3696|       |      // op: Rm
 3697|      4|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3698|      4|      Value |= (op & UINT64_C(7)) << 3;
 3699|      4|      break;
 3700|      0|    }
 3701|      1|    case ARM::tADDi3:
  ------------------
  |  Branch (3701:5): [True: 1, False: 29.4k]
  ------------------
 3702|      9|    case ARM::tSUBi3: {
  ------------------
  |  Branch (3702:5): [True: 8, False: 29.4k]
  ------------------
 3703|       |      // op: Rd
 3704|      9|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3705|      9|      Value |= op & UINT64_C(7);
 3706|       |      // op: Rm
 3707|      9|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3708|      9|      Value |= (op & UINT64_C(7)) << 3;
 3709|       |      // op: imm3
 3710|      9|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3711|      9|      Value |= (op & UINT64_C(7)) << 6;
 3712|      9|      break;
 3713|      1|    }
 3714|     10|    case ARM::tASRri:
  ------------------
  |  Branch (3714:5): [True: 10, False: 29.4k]
  ------------------
 3715|     14|    case ARM::tLSLri:
  ------------------
  |  Branch (3715:5): [True: 4, False: 29.4k]
  ------------------
 3716|     20|    case ARM::tLSRri: {
  ------------------
  |  Branch (3716:5): [True: 6, False: 29.4k]
  ------------------
 3717|       |      // op: Rd
 3718|     20|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3719|     20|      Value |= op & UINT64_C(7);
 3720|       |      // op: Rm
 3721|     20|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3722|     20|      Value |= (op & UINT64_C(7)) << 3;
 3723|       |      // op: imm5
 3724|     20|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3725|     20|      Value |= (op & UINT64_C(31)) << 6;
 3726|     20|      break;
 3727|     14|    }
 3728|     35|    case ARM::tMUL:
  ------------------
  |  Branch (3728:5): [True: 35, False: 29.4k]
  ------------------
 3729|     44|    case ARM::tMVN:
  ------------------
  |  Branch (3729:5): [True: 9, False: 29.4k]
  ------------------
 3730|     44|    case ARM::tRSB: {
  ------------------
  |  Branch (3730:5): [True: 0, False: 29.4k]
  ------------------
 3731|       |      // op: Rd
 3732|     44|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3733|     44|      Value |= op & UINT64_C(7);
 3734|       |      // op: Rn
 3735|     44|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3736|     44|      Value |= (op & UINT64_C(7)) << 3;
 3737|     44|      break;
 3738|     44|    }
 3739|      0|    case ARM::t2SMLALBB:
  ------------------
  |  Branch (3739:5): [True: 0, False: 29.4k]
  ------------------
 3740|      0|    case ARM::t2SMLALBT:
  ------------------
  |  Branch (3740:5): [True: 0, False: 29.4k]
  ------------------
 3741|      0|    case ARM::t2SMLALD:
  ------------------
  |  Branch (3741:5): [True: 0, False: 29.4k]
  ------------------
 3742|      0|    case ARM::t2SMLALDX:
  ------------------
  |  Branch (3742:5): [True: 0, False: 29.4k]
  ------------------
 3743|      0|    case ARM::t2SMLALTB:
  ------------------
  |  Branch (3743:5): [True: 0, False: 29.4k]
  ------------------
 3744|      0|    case ARM::t2SMLALTT:
  ------------------
  |  Branch (3744:5): [True: 0, False: 29.4k]
  ------------------
 3745|      0|    case ARM::t2SMLSLD: {
  ------------------
  |  Branch (3745:5): [True: 0, False: 29.4k]
  ------------------
 3746|       |      // op: Rd
 3747|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3748|      0|      Value |= (op & UINT64_C(15)) << 8;
 3749|       |      // op: Rn
 3750|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3751|      0|      Value |= (op & UINT64_C(15)) << 16;
 3752|       |      // op: Rm
 3753|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3754|      0|      Value |= op & UINT64_C(15);
 3755|       |      // op: Ra
 3756|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3757|      0|      Value |= (op & UINT64_C(15)) << 12;
 3758|      0|      break;
 3759|      0|    }
 3760|      0|    case ARM::t2SMLSLDX: {
  ------------------
  |  Branch (3760:5): [True: 0, False: 29.4k]
  ------------------
 3761|       |      // op: Rd
 3762|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3763|      0|      Value |= (op & UINT64_C(15)) << 8;
 3764|       |      // op: Rn
 3765|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3766|      0|      Value |= (op & UINT64_C(15)) << 16;
 3767|       |      // op: Rm
 3768|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3769|      0|      Value |= op & UINT64_C(15);
 3770|       |      // op: Ra
 3771|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3772|      0|      Value |= (op & UINT64_C(15)) << 12;
 3773|      0|      break;
 3774|      0|    }
 3775|      0|    case ARM::t2SMLAL:
  ------------------
  |  Branch (3775:5): [True: 0, False: 29.4k]
  ------------------
 3776|      0|    case ARM::t2SMULL:
  ------------------
  |  Branch (3776:5): [True: 0, False: 29.4k]
  ------------------
 3777|      0|    case ARM::t2UMAAL:
  ------------------
  |  Branch (3777:5): [True: 0, False: 29.4k]
  ------------------
 3778|      0|    case ARM::t2UMLAL:
  ------------------
  |  Branch (3778:5): [True: 0, False: 29.4k]
  ------------------
 3779|      0|    case ARM::t2UMULL: {
  ------------------
  |  Branch (3779:5): [True: 0, False: 29.4k]
  ------------------
 3780|       |      // op: RdLo
 3781|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3782|      0|      Value |= (op & UINT64_C(15)) << 12;
 3783|       |      // op: RdHi
 3784|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3785|      0|      Value |= (op & UINT64_C(15)) << 8;
 3786|       |      // op: Rn
 3787|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3788|      0|      Value |= (op & UINT64_C(15)) << 16;
 3789|       |      // op: Rm
 3790|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3791|      0|      Value |= op & UINT64_C(15);
 3792|      0|      break;
 3793|      0|    }
 3794|     19|    case ARM::tADDi8:
  ------------------
  |  Branch (3794:5): [True: 19, False: 29.4k]
  ------------------
 3795|     51|    case ARM::tSUBi8: {
  ------------------
  |  Branch (3795:5): [True: 32, False: 29.4k]
  ------------------
 3796|       |      // op: Rdn
 3797|     51|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3798|     51|      Value |= (op & UINT64_C(7)) << 8;
 3799|       |      // op: imm8
 3800|     51|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3801|     51|      Value |= op & UINT64_C(255);
 3802|     51|      break;
 3803|     19|    }
 3804|     58|    case ARM::tADDrSP: {
  ------------------
  |  Branch (3804:5): [True: 58, False: 29.4k]
  ------------------
 3805|       |      // op: Rdn
 3806|     58|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3807|     58|      Value |= (op & UINT64_C(8)) << 4;
 3808|     58|      Value |= op & UINT64_C(7);
 3809|     58|      break;
 3810|     19|    }
 3811|     55|    case ARM::tADDhirr: {
  ------------------
  |  Branch (3811:5): [True: 55, False: 29.4k]
  ------------------
 3812|       |      // op: Rdn
 3813|     55|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3814|     55|      Value |= (op & UINT64_C(8)) << 4;
 3815|     55|      Value |= op & UINT64_C(7);
 3816|       |      // op: Rm
 3817|     55|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3818|     55|      Value |= (op & UINT64_C(15)) << 3;
 3819|     55|      break;
 3820|     19|    }
 3821|     30|    case ARM::tADC:
  ------------------
  |  Branch (3821:5): [True: 30, False: 29.4k]
  ------------------
 3822|     46|    case ARM::tAND:
  ------------------
  |  Branch (3822:5): [True: 16, False: 29.4k]
  ------------------
 3823|     76|    case ARM::tASRrr:
  ------------------
  |  Branch (3823:5): [True: 30, False: 29.4k]
  ------------------
 3824|     92|    case ARM::tBIC:
  ------------------
  |  Branch (3824:5): [True: 16, False: 29.4k]
  ------------------
 3825|     99|    case ARM::tEOR:
  ------------------
  |  Branch (3825:5): [True: 7, False: 29.4k]
  ------------------
 3826|    248|    case ARM::tLSLrr:
  ------------------
  |  Branch (3826:5): [True: 149, False: 29.3k]
  ------------------
 3827|    314|    case ARM::tLSRrr:
  ------------------
  |  Branch (3827:5): [True: 66, False: 29.4k]
  ------------------
 3828|    331|    case ARM::tORR:
  ------------------
  |  Branch (3828:5): [True: 17, False: 29.4k]
  ------------------
 3829|    376|    case ARM::tROR:
  ------------------
  |  Branch (3829:5): [True: 45, False: 29.4k]
  ------------------
 3830|    376|    case ARM::tSBC: {
  ------------------
  |  Branch (3830:5): [True: 0, False: 29.4k]
  ------------------
 3831|       |      // op: Rdn
 3832|    376|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3833|    376|      Value |= op & UINT64_C(7);
 3834|       |      // op: Rm
 3835|    376|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3836|    376|      Value |= (op & UINT64_C(7)) << 3;
 3837|    376|      break;
 3838|    376|    }
 3839|     21|    case ARM::tBX:
  ------------------
  |  Branch (3839:5): [True: 21, False: 29.4k]
  ------------------
 3840|     21|    case ARM::tBXNS: {
  ------------------
  |  Branch (3840:5): [True: 0, False: 29.4k]
  ------------------
 3841|       |      // op: Rm
 3842|     21|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3843|     21|      Value |= (op & UINT64_C(15)) << 3;
 3844|     21|      break;
 3845|     21|    }
 3846|      7|    case ARM::tCMPhir: {
  ------------------
  |  Branch (3846:5): [True: 7, False: 29.4k]
  ------------------
 3847|       |      // op: Rm
 3848|      7|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3849|      7|      Value |= (op & UINT64_C(15)) << 3;
 3850|       |      // op: Rn
 3851|      7|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3852|      7|      Value |= (op & UINT64_C(8)) << 4;
 3853|      7|      Value |= op & UINT64_C(7);
 3854|      7|      break;
 3855|     21|    }
 3856|      6|    case ARM::tREV:
  ------------------
  |  Branch (3856:5): [True: 6, False: 29.4k]
  ------------------
 3857|     16|    case ARM::tREV16:
  ------------------
  |  Branch (3857:5): [True: 10, False: 29.4k]
  ------------------
 3858|     19|    case ARM::tREVSH:
  ------------------
  |  Branch (3858:5): [True: 3, False: 29.4k]
  ------------------
 3859|     25|    case ARM::tSXTB:
  ------------------
  |  Branch (3859:5): [True: 6, False: 29.4k]
  ------------------
 3860|     35|    case ARM::tSXTH:
  ------------------
  |  Branch (3860:5): [True: 10, False: 29.4k]
  ------------------
 3861|     47|    case ARM::tUXTB:
  ------------------
  |  Branch (3861:5): [True: 12, False: 29.4k]
  ------------------
 3862|     57|    case ARM::tUXTH: {
  ------------------
  |  Branch (3862:5): [True: 10, False: 29.4k]
  ------------------
 3863|       |      // op: Rm
 3864|     57|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3865|     57|      Value |= (op & UINT64_C(7)) << 3;
 3866|       |      // op: Rd
 3867|     57|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3868|     57|      Value |= op & UINT64_C(7);
 3869|     57|      break;
 3870|     47|    }
 3871|     10|    case ARM::tCMNz:
  ------------------
  |  Branch (3871:5): [True: 10, False: 29.4k]
  ------------------
 3872|     28|    case ARM::tCMPr:
  ------------------
  |  Branch (3872:5): [True: 18, False: 29.4k]
  ------------------
 3873|     34|    case ARM::tTST: {
  ------------------
  |  Branch (3873:5): [True: 6, False: 29.4k]
  ------------------
 3874|       |      // op: Rm
 3875|     34|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3876|     34|      Value |= (op & UINT64_C(7)) << 3;
 3877|       |      // op: Rn
 3878|     34|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3879|     34|      Value |= op & UINT64_C(7);
 3880|     34|      break;
 3881|     28|    }
 3882|     11|    case ARM::tADDspr: {
  ------------------
  |  Branch (3882:5): [True: 11, False: 29.4k]
  ------------------
 3883|       |      // op: Rm
 3884|     11|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3885|     11|      Value |= (op & UINT64_C(15)) << 3;
 3886|     11|      break;
 3887|     28|    }
 3888|     10|    case ARM::tADDrr:
  ------------------
  |  Branch (3888:5): [True: 10, False: 29.4k]
  ------------------
 3889|     33|    case ARM::tSUBrr: {
  ------------------
  |  Branch (3889:5): [True: 23, False: 29.4k]
  ------------------
 3890|       |      // op: Rm
 3891|     33|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 3892|     33|      Value |= (op & UINT64_C(7)) << 6;
 3893|       |      // op: Rn
 3894|     33|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 3895|     33|      Value |= (op & UINT64_C(7)) << 3;
 3896|       |      // op: Rd
 3897|     33|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3898|     33|      Value |= op & UINT64_C(7);
 3899|     33|      break;
 3900|     10|    }
 3901|     10|    case ARM::RFEDA:
  ------------------
  |  Branch (3901:5): [True: 10, False: 29.4k]
  ------------------
 3902|     13|    case ARM::RFEDA_UPD:
  ------------------
  |  Branch (3902:5): [True: 3, False: 29.4k]
  ------------------
 3903|     29|    case ARM::RFEDB:
  ------------------
  |  Branch (3903:5): [True: 16, False: 29.4k]
  ------------------
 3904|     32|    case ARM::RFEDB_UPD:
  ------------------
  |  Branch (3904:5): [True: 3, False: 29.4k]
  ------------------
 3905|     49|    case ARM::RFEIA:
  ------------------
  |  Branch (3905:5): [True: 17, False: 29.4k]
  ------------------
 3906|     94|    case ARM::RFEIA_UPD:
  ------------------
  |  Branch (3906:5): [True: 45, False: 29.4k]
  ------------------
 3907|    100|    case ARM::RFEIB:
  ------------------
  |  Branch (3907:5): [True: 6, False: 29.4k]
  ------------------
 3908|    100|    case ARM::RFEIB_UPD:
  ------------------
  |  Branch (3908:5): [True: 0, False: 29.4k]
  ------------------
 3909|    103|    case ARM::t2RFEDB:
  ------------------
  |  Branch (3909:5): [True: 3, False: 29.4k]
  ------------------
 3910|    104|    case ARM::t2RFEDBW:
  ------------------
  |  Branch (3910:5): [True: 1, False: 29.4k]
  ------------------
 3911|    113|    case ARM::t2RFEIA:
  ------------------
  |  Branch (3911:5): [True: 9, False: 29.4k]
  ------------------
 3912|    180|    case ARM::t2RFEIAW: {
  ------------------
  |  Branch (3912:5): [True: 67, False: 29.4k]
  ------------------
 3913|       |      // op: Rn
 3914|    180|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3915|    180|      Value |= (op & UINT64_C(15)) << 16;
 3916|    180|      break;
 3917|    113|    }
 3918|      6|    case ARM::t2CMNzrr:
  ------------------
  |  Branch (3918:5): [True: 6, False: 29.4k]
  ------------------
 3919|      6|    case ARM::t2CMPrr:
  ------------------
  |  Branch (3919:5): [True: 0, False: 29.4k]
  ------------------
 3920|      6|    case ARM::t2TBB:
  ------------------
  |  Branch (3920:5): [True: 0, False: 29.4k]
  ------------------
 3921|      6|    case ARM::t2TBH:
  ------------------
  |  Branch (3921:5): [True: 0, False: 29.4k]
  ------------------
 3922|     12|    case ARM::t2TEQrr:
  ------------------
  |  Branch (3922:5): [True: 6, False: 29.4k]
  ------------------
 3923|     19|    case ARM::t2TSTrr: {
  ------------------
  |  Branch (3923:5): [True: 7, False: 29.4k]
  ------------------
 3924|       |      // op: Rn
 3925|     19|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3926|     19|      Value |= (op & UINT64_C(15)) << 16;
 3927|       |      // op: Rm
 3928|     19|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3929|     19|      Value |= op & UINT64_C(15);
 3930|     19|      break;
 3931|     12|    }
 3932|      0|    case ARM::t2CMNzrs:
  ------------------
  |  Branch (3932:5): [True: 0, False: 29.4k]
  ------------------
 3933|      1|    case ARM::t2CMPrs:
  ------------------
  |  Branch (3933:5): [True: 1, False: 29.4k]
  ------------------
 3934|      5|    case ARM::t2TEQrs:
  ------------------
  |  Branch (3934:5): [True: 4, False: 29.4k]
  ------------------
 3935|     11|    case ARM::t2TSTrs: {
  ------------------
  |  Branch (3935:5): [True: 6, False: 29.4k]
  ------------------
 3936|       |      // op: Rn
 3937|     11|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3938|     11|      Value |= (op & UINT64_C(15)) << 16;
 3939|       |      // op: ShiftedRm
 3940|     11|      op = getT2SORegOpValue(MI, 1, Fixups, STI);
 3941|     11|      Value |= (op & UINT64_C(3584)) << 3;
 3942|     11|      Value |= (op & UINT64_C(480)) >> 1;
 3943|     11|      Value |= op & UINT64_C(15);
 3944|     11|      break;
 3945|      5|    }
 3946|     11|    case ARM::t2CMNri:
  ------------------
  |  Branch (3946:5): [True: 11, False: 29.4k]
  ------------------
 3947|     17|    case ARM::t2CMPri:
  ------------------
  |  Branch (3947:5): [True: 6, False: 29.4k]
  ------------------
 3948|     23|    case ARM::t2TEQri:
  ------------------
  |  Branch (3948:5): [True: 6, False: 29.4k]
  ------------------
 3949|     29|    case ARM::t2TSTri: {
  ------------------
  |  Branch (3949:5): [True: 6, False: 29.4k]
  ------------------
 3950|       |      // op: Rn
 3951|     29|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3952|     29|      Value |= (op & UINT64_C(15)) << 16;
 3953|       |      // op: imm
 3954|     29|      op = getT2SOImmOpValue(MI, 1, Fixups, STI);
 3955|     29|      Value |= (op & UINT64_C(2048)) << 15;
 3956|     29|      Value |= (op & UINT64_C(1792)) << 4;
 3957|     29|      Value |= op & UINT64_C(255);
 3958|     29|      break;
 3959|     23|    }
 3960|      0|    case ARM::t2STMDB:
  ------------------
  |  Branch (3960:5): [True: 0, False: 29.4k]
  ------------------
 3961|      0|    case ARM::t2STMIA: {
  ------------------
  |  Branch (3961:5): [True: 0, False: 29.4k]
  ------------------
 3962|       |      // op: Rn
 3963|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3964|      0|      Value |= (op & UINT64_C(15)) << 16;
 3965|       |      // op: regs
 3966|      0|      op = getRegisterListOpValue(MI, 3, Fixups, STI);
 3967|      0|      Value |= op & UINT64_C(16384);
 3968|      0|      Value |= op & UINT64_C(8191);
 3969|      0|      break;
 3970|      0|    }
 3971|      0|    case ARM::t2LDMDB:
  ------------------
  |  Branch (3971:5): [True: 0, False: 29.4k]
  ------------------
 3972|      0|    case ARM::t2LDMIA: {
  ------------------
  |  Branch (3972:5): [True: 0, False: 29.4k]
  ------------------
 3973|       |      // op: Rn
 3974|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3975|      0|      Value |= (op & UINT64_C(15)) << 16;
 3976|       |      // op: regs
 3977|      0|      op = getRegisterListOpValue(MI, 3, Fixups, STI);
 3978|      0|      Value |= op & UINT64_C(65535);
 3979|      0|      break;
 3980|      0|    }
 3981|      3|    case ARM::tCMPi8: {
  ------------------
  |  Branch (3981:5): [True: 3, False: 29.4k]
  ------------------
 3982|       |      // op: Rn
 3983|      3|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3984|      3|      Value |= (op & UINT64_C(7)) << 8;
 3985|       |      // op: imm8
 3986|      3|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 3987|      3|      Value |= op & UINT64_C(255);
 3988|      3|      break;
 3989|      0|    }
 3990|      0|    case ARM::tLDMIA: {
  ------------------
  |  Branch (3990:5): [True: 0, False: 29.4k]
  ------------------
 3991|       |      // op: Rn
 3992|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 3993|      0|      Value |= (op & UINT64_C(7)) << 8;
 3994|       |      // op: regs
 3995|      0|      op = getRegisterListOpValue(MI, 3, Fixups, STI);
 3996|      0|      Value |= op & UINT64_C(255);
 3997|      0|      break;
 3998|      0|    }
 3999|      0|    case ARM::t2TT:
  ------------------
  |  Branch (3999:5): [True: 0, False: 29.4k]
  ------------------
 4000|      0|    case ARM::t2TTA:
  ------------------
  |  Branch (4000:5): [True: 0, False: 29.4k]
  ------------------
 4001|      0|    case ARM::t2TTAT:
  ------------------
  |  Branch (4001:5): [True: 0, False: 29.4k]
  ------------------
 4002|      0|    case ARM::t2TTT: {
  ------------------
  |  Branch (4002:5): [True: 0, False: 29.4k]
  ------------------
 4003|       |      // op: Rn
 4004|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4005|      0|      Value |= (op & UINT64_C(15)) << 16;
 4006|       |      // op: Rt
 4007|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4008|      0|      Value |= (op & UINT64_C(15)) << 8;
 4009|      0|      break;
 4010|      0|    }
 4011|      0|    case ARM::t2STMDB_UPD:
  ------------------
  |  Branch (4011:5): [True: 0, False: 29.4k]
  ------------------
 4012|      0|    case ARM::t2STMIA_UPD: {
  ------------------
  |  Branch (4012:5): [True: 0, False: 29.4k]
  ------------------
 4013|       |      // op: Rn
 4014|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4015|      0|      Value |= (op & UINT64_C(15)) << 16;
 4016|       |      // op: regs
 4017|      0|      op = getRegisterListOpValue(MI, 4, Fixups, STI);
 4018|      0|      Value |= op & UINT64_C(16384);
 4019|      0|      Value |= op & UINT64_C(8191);
 4020|      0|      break;
 4021|      0|    }
 4022|      0|    case ARM::t2LDMDB_UPD:
  ------------------
  |  Branch (4022:5): [True: 0, False: 29.4k]
  ------------------
 4023|      0|    case ARM::t2LDMIA_UPD: {
  ------------------
  |  Branch (4023:5): [True: 0, False: 29.4k]
  ------------------
 4024|       |      // op: Rn
 4025|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4026|      0|      Value |= (op & UINT64_C(15)) << 16;
 4027|       |      // op: regs
 4028|      0|      op = getRegisterListOpValue(MI, 4, Fixups, STI);
 4029|      0|      Value |= op & UINT64_C(65535);
 4030|      0|      break;
 4031|      0|    }
 4032|      0|    case ARM::tSTMIA_UPD: {
  ------------------
  |  Branch (4032:5): [True: 0, False: 29.4k]
  ------------------
 4033|       |      // op: Rn
 4034|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4035|      0|      Value |= (op & UINT64_C(7)) << 8;
 4036|       |      // op: regs
 4037|      0|      op = getRegisterListOpValue(MI, 4, Fixups, STI);
 4038|      0|      Value |= op & UINT64_C(255);
 4039|      0|      break;
 4040|      0|    }
 4041|      7|    case ARM::t2LDRB_POST:
  ------------------
  |  Branch (4041:5): [True: 7, False: 29.4k]
  ------------------
 4042|      8|    case ARM::t2LDRH_POST:
  ------------------
  |  Branch (4042:5): [True: 1, False: 29.4k]
  ------------------
 4043|     25|    case ARM::t2LDRSB_POST:
  ------------------
  |  Branch (4043:5): [True: 17, False: 29.4k]
  ------------------
 4044|     26|    case ARM::t2LDRSH_POST:
  ------------------
  |  Branch (4044:5): [True: 1, False: 29.4k]
  ------------------
 4045|     33|    case ARM::t2LDR_POST: {
  ------------------
  |  Branch (4045:5): [True: 7, False: 29.4k]
  ------------------
 4046|       |      // op: Rt
 4047|     33|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4048|     33|      Value |= (op & UINT64_C(15)) << 12;
 4049|       |      // op: Rn
 4050|     33|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4051|     33|      Value |= (op & UINT64_C(15)) << 16;
 4052|       |      // op: offset
 4053|     33|      op = getT2AddrModeImm8OffsetOpValue(MI, 3, Fixups, STI);
 4054|     33|      Value |= (op & UINT64_C(256)) << 1;
 4055|     33|      Value |= op & UINT64_C(255);
 4056|     33|      break;
 4057|     26|    }
 4058|      0|    case ARM::t2MRRC:
  ------------------
  |  Branch (4058:5): [True: 0, False: 29.4k]
  ------------------
 4059|      0|    case ARM::t2MRRC2: {
  ------------------
  |  Branch (4059:5): [True: 0, False: 29.4k]
  ------------------
 4060|       |      // op: Rt
 4061|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4062|      0|      Value |= (op & UINT64_C(15)) << 12;
 4063|       |      // op: Rt2
 4064|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4065|      0|      Value |= (op & UINT64_C(15)) << 16;
 4066|       |      // op: cop
 4067|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4068|      0|      Value |= (op & UINT64_C(15)) << 8;
 4069|       |      // op: opc1
 4070|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4071|      0|      Value |= (op & UINT64_C(15)) << 4;
 4072|       |      // op: CRm
 4073|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4074|      0|      Value |= op & UINT64_C(15);
 4075|      0|      break;
 4076|      0|    }
 4077|      3|    case ARM::t2LDRD_POST: {
  ------------------
  |  Branch (4077:5): [True: 3, False: 29.4k]
  ------------------
 4078|       |      // op: Rt
 4079|      3|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4080|      3|      Value |= (op & UINT64_C(15)) << 12;
 4081|       |      // op: Rt2
 4082|      3|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4083|      3|      Value |= (op & UINT64_C(15)) << 8;
 4084|       |      // op: addr
 4085|      3|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4086|      3|      Value |= (op & UINT64_C(15)) << 16;
 4087|       |      // op: imm
 4088|      3|      op = getT2Imm8s4OpValue(MI, 4, Fixups, STI);
 4089|      3|      Value |= (op & UINT64_C(256)) << 15;
 4090|      3|      Value |= op & UINT64_C(255);
 4091|      3|      break;
 4092|      0|    }
 4093|      4|    case ARM::t2LDRDi8:
  ------------------
  |  Branch (4093:5): [True: 4, False: 29.4k]
  ------------------
 4094|     14|    case ARM::t2STRDi8: {
  ------------------
  |  Branch (4094:5): [True: 10, False: 29.4k]
  ------------------
 4095|       |      // op: Rt
 4096|     14|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4097|     14|      Value |= (op & UINT64_C(15)) << 12;
 4098|       |      // op: Rt2
 4099|     14|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4100|     14|      Value |= (op & UINT64_C(15)) << 8;
 4101|       |      // op: addr
 4102|     14|      op = getT2AddrModeImm8s4OpValue(MI, 2, Fixups, STI);
 4103|     14|      Value |= (op & UINT64_C(256)) << 15;
 4104|     14|      Value |= (op & UINT64_C(7680)) << 7;
 4105|     14|      Value |= op & UINT64_C(255);
 4106|     14|      break;
 4107|      4|    }
 4108|      0|    case ARM::t2LDRD_PRE: {
  ------------------
  |  Branch (4108:5): [True: 0, False: 29.4k]
  ------------------
 4109|       |      // op: Rt
 4110|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4111|      0|      Value |= (op & UINT64_C(15)) << 12;
 4112|       |      // op: Rt2
 4113|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4114|      0|      Value |= (op & UINT64_C(15)) << 8;
 4115|       |      // op: addr
 4116|      0|      op = getT2AddrModeImm8s4OpValue(MI, 3, Fixups, STI);
 4117|      0|      Value |= (op & UINT64_C(256)) << 15;
 4118|      0|      Value |= (op & UINT64_C(7680)) << 7;
 4119|      0|      Value |= op & UINT64_C(255);
 4120|      0|      break;
 4121|      4|    }
 4122|     21|    case ARM::t2LDRBi12:
  ------------------
  |  Branch (4122:5): [True: 21, False: 29.4k]
  ------------------
 4123|     28|    case ARM::t2LDRHi12:
  ------------------
  |  Branch (4123:5): [True: 7, False: 29.4k]
  ------------------
 4124|     29|    case ARM::t2LDRSBi12:
  ------------------
  |  Branch (4124:5): [True: 1, False: 29.4k]
  ------------------
 4125|     32|    case ARM::t2LDRSHi12:
  ------------------
  |  Branch (4125:5): [True: 3, False: 29.4k]
  ------------------
 4126|     50|    case ARM::t2LDRi12:
  ------------------
  |  Branch (4126:5): [True: 18, False: 29.4k]
  ------------------
 4127|     50|    case ARM::t2STRBi12:
  ------------------
  |  Branch (4127:5): [True: 0, False: 29.4k]
  ------------------
 4128|     50|    case ARM::t2STRHi12:
  ------------------
  |  Branch (4128:5): [True: 0, False: 29.4k]
  ------------------
 4129|     57|    case ARM::t2STRi12: {
  ------------------
  |  Branch (4129:5): [True: 7, False: 29.4k]
  ------------------
 4130|       |      // op: Rt
 4131|     57|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4132|     57|      Value |= (op & UINT64_C(15)) << 12;
 4133|       |      // op: addr
 4134|     57|      op = getAddrModeImm12OpValue(MI, 1, Fixups, STI);
 4135|     57|      Value |= (op & UINT64_C(122880)) << 3;
 4136|     57|      Value |= op & UINT64_C(4095);
 4137|     57|      break;
 4138|     50|    }
 4139|      3|    case ARM::t2LDRBpci:
  ------------------
  |  Branch (4139:5): [True: 3, False: 29.4k]
  ------------------
 4140|     91|    case ARM::t2LDRHpci:
  ------------------
  |  Branch (4140:5): [True: 88, False: 29.3k]
  ------------------
 4141|     96|    case ARM::t2LDRSBpci:
  ------------------
  |  Branch (4141:5): [True: 5, False: 29.4k]
  ------------------
 4142|    102|    case ARM::t2LDRSHpci:
  ------------------
  |  Branch (4142:5): [True: 6, False: 29.4k]
  ------------------
 4143|    152|    case ARM::t2LDRpci: {
  ------------------
  |  Branch (4143:5): [True: 50, False: 29.4k]
  ------------------
 4144|       |      // op: Rt
 4145|    152|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4146|    152|      Value |= (op & UINT64_C(15)) << 12;
 4147|       |      // op: addr
 4148|    152|      op = getAddrModeImm12OpValue(MI, 1, Fixups, STI);
 4149|    152|      Value |= (op & UINT64_C(4096)) << 11;
 4150|    152|      Value |= op & UINT64_C(4095);
 4151|    152|      break;
 4152|    102|    }
 4153|      0|    case ARM::t2LDA:
  ------------------
  |  Branch (4153:5): [True: 0, False: 29.4k]
  ------------------
 4154|      0|    case ARM::t2LDAB:
  ------------------
  |  Branch (4154:5): [True: 0, False: 29.4k]
  ------------------
 4155|      0|    case ARM::t2LDAEX:
  ------------------
  |  Branch (4155:5): [True: 0, False: 29.4k]
  ------------------
 4156|      0|    case ARM::t2LDAH:
  ------------------
  |  Branch (4156:5): [True: 0, False: 29.4k]
  ------------------
 4157|      0|    case ARM::t2STL:
  ------------------
  |  Branch (4157:5): [True: 0, False: 29.4k]
  ------------------
 4158|      0|    case ARM::t2STLB:
  ------------------
  |  Branch (4158:5): [True: 0, False: 29.4k]
  ------------------
 4159|      0|    case ARM::t2STLH: {
  ------------------
  |  Branch (4159:5): [True: 0, False: 29.4k]
  ------------------
 4160|       |      // op: Rt
 4161|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4162|      0|      Value |= (op & UINT64_C(15)) << 12;
 4163|       |      // op: addr
 4164|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4165|      0|      Value |= (op & UINT64_C(15)) << 16;
 4166|      0|      break;
 4167|      0|    }
 4168|      0|    case ARM::t2LDREX: {
  ------------------
  |  Branch (4168:5): [True: 0, False: 29.4k]
  ------------------
 4169|       |      // op: Rt
 4170|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4171|      0|      Value |= (op & UINT64_C(15)) << 12;
 4172|       |      // op: addr
 4173|      0|      op = getT2AddrModeImm0_1020s4OpValue(MI, 1, Fixups, STI);
 4174|      0|      Value |= (op & UINT64_C(3840)) << 8;
 4175|      0|      Value |= op & UINT64_C(255);
 4176|      0|      break;
 4177|      0|    }
 4178|      0|    case ARM::t2LDRBi8:
  ------------------
  |  Branch (4178:5): [True: 0, False: 29.4k]
  ------------------
 4179|      0|    case ARM::t2LDRHi8:
  ------------------
  |  Branch (4179:5): [True: 0, False: 29.4k]
  ------------------
 4180|      0|    case ARM::t2LDRSBi8:
  ------------------
  |  Branch (4180:5): [True: 0, False: 29.4k]
  ------------------
 4181|      0|    case ARM::t2LDRSHi8:
  ------------------
  |  Branch (4181:5): [True: 0, False: 29.4k]
  ------------------
 4182|      0|    case ARM::t2LDRi8:
  ------------------
  |  Branch (4182:5): [True: 0, False: 29.4k]
  ------------------
 4183|      0|    case ARM::t2STRBi8:
  ------------------
  |  Branch (4183:5): [True: 0, False: 29.4k]
  ------------------
 4184|      0|    case ARM::t2STRHi8:
  ------------------
  |  Branch (4184:5): [True: 0, False: 29.4k]
  ------------------
 4185|      0|    case ARM::t2STRi8: {
  ------------------
  |  Branch (4185:5): [True: 0, False: 29.4k]
  ------------------
 4186|       |      // op: Rt
 4187|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4188|      0|      Value |= (op & UINT64_C(15)) << 12;
 4189|       |      // op: addr
 4190|      0|      op = getT2AddrModeImm8OpValue(MI, 1, Fixups, STI);
 4191|      0|      Value |= (op & UINT64_C(7680)) << 7;
 4192|      0|      Value |= (op & UINT64_C(256)) << 1;
 4193|      0|      Value |= op & UINT64_C(255);
 4194|      0|      break;
 4195|      0|    }
 4196|      0|    case ARM::t2LDRBT:
  ------------------
  |  Branch (4196:5): [True: 0, False: 29.4k]
  ------------------
 4197|      0|    case ARM::t2LDRHT:
  ------------------
  |  Branch (4197:5): [True: 0, False: 29.4k]
  ------------------
 4198|      0|    case ARM::t2LDRSBT:
  ------------------
  |  Branch (4198:5): [True: 0, False: 29.4k]
  ------------------
 4199|      0|    case ARM::t2LDRSHT:
  ------------------
  |  Branch (4199:5): [True: 0, False: 29.4k]
  ------------------
 4200|     20|    case ARM::t2LDRT:
  ------------------
  |  Branch (4200:5): [True: 20, False: 29.4k]
  ------------------
 4201|     20|    case ARM::t2STRBT:
  ------------------
  |  Branch (4201:5): [True: 0, False: 29.4k]
  ------------------
 4202|     20|    case ARM::t2STRHT:
  ------------------
  |  Branch (4202:5): [True: 0, False: 29.4k]
  ------------------
 4203|     20|    case ARM::t2STRT: {
  ------------------
  |  Branch (4203:5): [True: 0, False: 29.4k]
  ------------------
 4204|       |      // op: Rt
 4205|     20|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4206|     20|      Value |= (op & UINT64_C(15)) << 12;
 4207|       |      // op: addr
 4208|     20|      op = getT2AddrModeImm8OpValue(MI, 1, Fixups, STI);
 4209|     20|      Value |= (op & UINT64_C(7680)) << 7;
 4210|     20|      Value |= op & UINT64_C(255);
 4211|     20|      break;
 4212|     20|    }
 4213|      0|    case ARM::t2LDRB_PRE:
  ------------------
  |  Branch (4213:5): [True: 0, False: 29.4k]
  ------------------
 4214|      0|    case ARM::t2LDRH_PRE:
  ------------------
  |  Branch (4214:5): [True: 0, False: 29.4k]
  ------------------
 4215|      0|    case ARM::t2LDRSB_PRE:
  ------------------
  |  Branch (4215:5): [True: 0, False: 29.4k]
  ------------------
 4216|      0|    case ARM::t2LDRSH_PRE:
  ------------------
  |  Branch (4216:5): [True: 0, False: 29.4k]
  ------------------
 4217|      1|    case ARM::t2LDR_PRE: {
  ------------------
  |  Branch (4217:5): [True: 1, False: 29.4k]
  ------------------
 4218|       |      // op: Rt
 4219|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4220|      1|      Value |= (op & UINT64_C(15)) << 12;
 4221|       |      // op: addr
 4222|      1|      op = getT2AddrModeImm8OpValue(MI, 2, Fixups, STI);
 4223|      1|      Value |= (op & UINT64_C(7680)) << 7;
 4224|      1|      Value |= (op & UINT64_C(256)) << 1;
 4225|      1|      Value |= op & UINT64_C(255);
 4226|      1|      break;
 4227|      0|    }
 4228|      1|    case ARM::t2LDRBs:
  ------------------
  |  Branch (4228:5): [True: 1, False: 29.4k]
  ------------------
 4229|      4|    case ARM::t2LDRHs:
  ------------------
  |  Branch (4229:5): [True: 3, False: 29.4k]
  ------------------
 4230|      4|    case ARM::t2LDRSBs:
  ------------------
  |  Branch (4230:5): [True: 0, False: 29.4k]
  ------------------
 4231|      4|    case ARM::t2LDRSHs:
  ------------------
  |  Branch (4231:5): [True: 0, False: 29.4k]
  ------------------
 4232|      7|    case ARM::t2LDRs:
  ------------------
  |  Branch (4232:5): [True: 3, False: 29.4k]
  ------------------
 4233|      7|    case ARM::t2STRBs:
  ------------------
  |  Branch (4233:5): [True: 0, False: 29.4k]
  ------------------
 4234|      7|    case ARM::t2STRHs:
  ------------------
  |  Branch (4234:5): [True: 0, False: 29.4k]
  ------------------
 4235|      8|    case ARM::t2STRs: {
  ------------------
  |  Branch (4235:5): [True: 1, False: 29.4k]
  ------------------
 4236|       |      // op: Rt
 4237|      8|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4238|      8|      Value |= (op & UINT64_C(15)) << 12;
 4239|       |      // op: addr
 4240|      8|      op = getT2AddrModeSORegOpValue(MI, 1, Fixups, STI);
 4241|      8|      Value |= (op & UINT64_C(960)) << 10;
 4242|      8|      Value |= (op & UINT64_C(3)) << 4;
 4243|      8|      Value |= (op & UINT64_C(60)) >> 2;
 4244|      8|      break;
 4245|      7|    }
 4246|      0|    case ARM::MRC2:
  ------------------
  |  Branch (4246:5): [True: 0, False: 29.4k]
  ------------------
 4247|      0|    case ARM::t2MRC:
  ------------------
  |  Branch (4247:5): [True: 0, False: 29.4k]
  ------------------
 4248|      0|    case ARM::t2MRC2: {
  ------------------
  |  Branch (4248:5): [True: 0, False: 29.4k]
  ------------------
 4249|       |      // op: Rt
 4250|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4251|      0|      Value |= (op & UINT64_C(15)) << 12;
 4252|       |      // op: cop
 4253|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4254|      0|      Value |= (op & UINT64_C(15)) << 8;
 4255|       |      // op: opc1
 4256|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4257|      0|      Value |= (op & UINT64_C(7)) << 21;
 4258|       |      // op: opc2
 4259|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 4260|      0|      Value |= (op & UINT64_C(7)) << 5;
 4261|       |      // op: CRm
 4262|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4263|      0|      Value |= op & UINT64_C(15);
 4264|       |      // op: CRn
 4265|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4266|      0|      Value |= (op & UINT64_C(15)) << 16;
 4267|      0|      break;
 4268|      0|    }
 4269|    517|    case ARM::tLDRpci: {
  ------------------
  |  Branch (4269:5): [True: 517, False: 28.9k]
  ------------------
 4270|       |      // op: Rt
 4271|    517|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4272|    517|      Value |= (op & UINT64_C(7)) << 8;
 4273|       |      // op: addr
 4274|    517|      op = getAddrModePCOpValue(MI, 1, Fixups, STI);
 4275|    517|      Value |= op & UINT64_C(255);
 4276|    517|      break;
 4277|      0|    }
 4278|      0|    case ARM::tLDRspi:
  ------------------
  |  Branch (4278:5): [True: 0, False: 29.4k]
  ------------------
 4279|      0|    case ARM::tSTRspi: {
  ------------------
  |  Branch (4279:5): [True: 0, False: 29.4k]
  ------------------
 4280|       |      // op: Rt
 4281|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4282|      0|      Value |= (op & UINT64_C(7)) << 8;
 4283|       |      // op: addr
 4284|      0|      op = getAddrModeThumbSPOpValue(MI, 1, Fixups, STI);
 4285|      0|      Value |= op & UINT64_C(255);
 4286|      0|      break;
 4287|      0|    }
 4288|     30|    case ARM::tLDRBi:
  ------------------
  |  Branch (4288:5): [True: 30, False: 29.4k]
  ------------------
 4289|     36|    case ARM::tLDRHi:
  ------------------
  |  Branch (4289:5): [True: 6, False: 29.4k]
  ------------------
 4290|     54|    case ARM::tLDRi:
  ------------------
  |  Branch (4290:5): [True: 18, False: 29.4k]
  ------------------
 4291|     54|    case ARM::tSTRBi:
  ------------------
  |  Branch (4291:5): [True: 0, False: 29.4k]
  ------------------
 4292|     54|    case ARM::tSTRHi:
  ------------------
  |  Branch (4292:5): [True: 0, False: 29.4k]
  ------------------
 4293|     58|    case ARM::tSTRi: {
  ------------------
  |  Branch (4293:5): [True: 4, False: 29.4k]
  ------------------
 4294|       |      // op: Rt
 4295|     58|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4296|     58|      Value |= op & UINT64_C(7);
 4297|       |      // op: addr
 4298|     58|      op = getAddrModeISOpValue(MI, 1, Fixups, STI);
 4299|     58|      Value |= (op & UINT64_C(255)) << 3;
 4300|     58|      break;
 4301|     54|    }
 4302|      3|    case ARM::tLDRBr:
  ------------------
  |  Branch (4302:5): [True: 3, False: 29.4k]
  ------------------
 4303|      4|    case ARM::tLDRHr:
  ------------------
  |  Branch (4303:5): [True: 1, False: 29.4k]
  ------------------
 4304|      4|    case ARM::tLDRSB:
  ------------------
  |  Branch (4304:5): [True: 0, False: 29.4k]
  ------------------
 4305|      4|    case ARM::tLDRSH:
  ------------------
  |  Branch (4305:5): [True: 0, False: 29.4k]
  ------------------
 4306|      7|    case ARM::tLDRr:
  ------------------
  |  Branch (4306:5): [True: 3, False: 29.4k]
  ------------------
 4307|      7|    case ARM::tSTRBr:
  ------------------
  |  Branch (4307:5): [True: 0, False: 29.4k]
  ------------------
 4308|      7|    case ARM::tSTRHr:
  ------------------
  |  Branch (4308:5): [True: 0, False: 29.4k]
  ------------------
 4309|      7|    case ARM::tSTRr: {
  ------------------
  |  Branch (4309:5): [True: 0, False: 29.4k]
  ------------------
 4310|       |      // op: Rt
 4311|      7|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4312|      7|      Value |= op & UINT64_C(7);
 4313|       |      // op: addr
 4314|      7|      op = getThumbAddrModeRegRegOpValue(MI, 1, Fixups, STI);
 4315|      7|      Value |= (op & UINT64_C(63)) << 3;
 4316|      7|      break;
 4317|      7|    }
 4318|      0|    case ARM::t2STRB_POST:
  ------------------
  |  Branch (4318:5): [True: 0, False: 29.4k]
  ------------------
 4319|      0|    case ARM::t2STRH_POST:
  ------------------
  |  Branch (4319:5): [True: 0, False: 29.4k]
  ------------------
 4320|      0|    case ARM::t2STR_POST: {
  ------------------
  |  Branch (4320:5): [True: 0, False: 29.4k]
  ------------------
 4321|       |      // op: Rt
 4322|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4323|      0|      Value |= (op & UINT64_C(15)) << 12;
 4324|       |      // op: Rn
 4325|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4326|      0|      Value |= (op & UINT64_C(15)) << 16;
 4327|       |      // op: offset
 4328|      0|      op = getT2AddrModeImm8OffsetOpValue(MI, 3, Fixups, STI);
 4329|      0|      Value |= (op & UINT64_C(256)) << 1;
 4330|      0|      Value |= op & UINT64_C(255);
 4331|      0|      break;
 4332|      0|    }
 4333|      0|    case ARM::t2STRD_POST: {
  ------------------
  |  Branch (4333:5): [True: 0, False: 29.4k]
  ------------------
 4334|       |      // op: Rt
 4335|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4336|      0|      Value |= (op & UINT64_C(15)) << 12;
 4337|       |      // op: Rt2
 4338|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4339|      0|      Value |= (op & UINT64_C(15)) << 8;
 4340|       |      // op: addr
 4341|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4342|      0|      Value |= (op & UINT64_C(15)) << 16;
 4343|       |      // op: imm
 4344|      0|      op = getT2Imm8s4OpValue(MI, 4, Fixups, STI);
 4345|      0|      Value |= (op & UINT64_C(256)) << 15;
 4346|      0|      Value |= op & UINT64_C(255);
 4347|      0|      break;
 4348|      0|    }
 4349|      0|    case ARM::t2STRD_PRE: {
  ------------------
  |  Branch (4349:5): [True: 0, False: 29.4k]
  ------------------
 4350|       |      // op: Rt
 4351|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4352|      0|      Value |= (op & UINT64_C(15)) << 12;
 4353|       |      // op: Rt2
 4354|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4355|      0|      Value |= (op & UINT64_C(15)) << 8;
 4356|       |      // op: addr
 4357|      0|      op = getT2AddrModeImm8s4OpValue(MI, 3, Fixups, STI);
 4358|      0|      Value |= (op & UINT64_C(256)) << 15;
 4359|      0|      Value |= (op & UINT64_C(7680)) << 7;
 4360|      0|      Value |= op & UINT64_C(255);
 4361|      0|      break;
 4362|      0|    }
 4363|      0|    case ARM::t2STRB_PRE:
  ------------------
  |  Branch (4363:5): [True: 0, False: 29.4k]
  ------------------
 4364|      0|    case ARM::t2STRH_PRE:
  ------------------
  |  Branch (4364:5): [True: 0, False: 29.4k]
  ------------------
 4365|      0|    case ARM::t2STR_PRE: {
  ------------------
  |  Branch (4365:5): [True: 0, False: 29.4k]
  ------------------
 4366|       |      // op: Rt
 4367|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4368|      0|      Value |= (op & UINT64_C(15)) << 12;
 4369|       |      // op: addr
 4370|      0|      op = getT2AddrModeImm8OpValue(MI, 2, Fixups, STI);
 4371|      0|      Value |= (op & UINT64_C(7680)) << 7;
 4372|      0|      Value |= (op & UINT64_C(256)) << 1;
 4373|      0|      Value |= op & UINT64_C(255);
 4374|      0|      break;
 4375|      0|    }
 4376|      0|    case ARM::MCRR2:
  ------------------
  |  Branch (4376:5): [True: 0, False: 29.4k]
  ------------------
 4377|      0|    case ARM::MRRC2:
  ------------------
  |  Branch (4377:5): [True: 0, False: 29.4k]
  ------------------
 4378|      0|    case ARM::t2MCRR:
  ------------------
  |  Branch (4378:5): [True: 0, False: 29.4k]
  ------------------
 4379|      0|    case ARM::t2MCRR2: {
  ------------------
  |  Branch (4379:5): [True: 0, False: 29.4k]
  ------------------
 4380|       |      // op: Rt
 4381|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4382|      0|      Value |= (op & UINT64_C(15)) << 12;
 4383|       |      // op: Rt2
 4384|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4385|      0|      Value |= (op & UINT64_C(15)) << 16;
 4386|       |      // op: cop
 4387|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4388|      0|      Value |= (op & UINT64_C(15)) << 8;
 4389|       |      // op: opc1
 4390|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4391|      0|      Value |= (op & UINT64_C(15)) << 4;
 4392|       |      // op: CRm
 4393|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4394|      0|      Value |= op & UINT64_C(15);
 4395|      0|      break;
 4396|      0|    }
 4397|      0|    case ARM::MCR2:
  ------------------
  |  Branch (4397:5): [True: 0, False: 29.4k]
  ------------------
 4398|      0|    case ARM::t2MCR:
  ------------------
  |  Branch (4398:5): [True: 0, False: 29.4k]
  ------------------
 4399|      0|    case ARM::t2MCR2: {
  ------------------
  |  Branch (4399:5): [True: 0, False: 29.4k]
  ------------------
 4400|       |      // op: Rt
 4401|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4402|      0|      Value |= (op & UINT64_C(15)) << 12;
 4403|       |      // op: cop
 4404|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4405|      0|      Value |= (op & UINT64_C(15)) << 8;
 4406|       |      // op: opc1
 4407|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4408|      0|      Value |= (op & UINT64_C(7)) << 21;
 4409|       |      // op: opc2
 4410|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 4411|      0|      Value |= (op & UINT64_C(7)) << 5;
 4412|       |      // op: CRm
 4413|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4414|      0|      Value |= op & UINT64_C(15);
 4415|       |      // op: CRn
 4416|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4417|      0|      Value |= (op & UINT64_C(15)) << 16;
 4418|      0|      break;
 4419|      0|    }
 4420|     21|    case ARM::t2MSR_M: {
  ------------------
  |  Branch (4420:5): [True: 21, False: 29.4k]
  ------------------
 4421|       |      // op: SYSm
 4422|     21|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4423|     21|      Value |= op & UINT64_C(3072);
 4424|     21|      Value |= op & UINT64_C(255);
 4425|       |      // op: Rn
 4426|     21|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4427|     21|      Value |= (op & UINT64_C(15)) << 16;
 4428|     21|      break;
 4429|      0|    }
 4430|      0|    case ARM::VCVTASD:
  ------------------
  |  Branch (4430:5): [True: 0, False: 29.4k]
  ------------------
 4431|      0|    case ARM::VCVTAUD:
  ------------------
  |  Branch (4431:5): [True: 0, False: 29.4k]
  ------------------
 4432|      0|    case ARM::VCVTMSD:
  ------------------
  |  Branch (4432:5): [True: 0, False: 29.4k]
  ------------------
 4433|      0|    case ARM::VCVTMUD:
  ------------------
  |  Branch (4433:5): [True: 0, False: 29.4k]
  ------------------
 4434|      0|    case ARM::VCVTNSD:
  ------------------
  |  Branch (4434:5): [True: 0, False: 29.4k]
  ------------------
 4435|      0|    case ARM::VCVTNUD:
  ------------------
  |  Branch (4435:5): [True: 0, False: 29.4k]
  ------------------
 4436|      0|    case ARM::VCVTPSD:
  ------------------
  |  Branch (4436:5): [True: 0, False: 29.4k]
  ------------------
 4437|      0|    case ARM::VCVTPUD: {
  ------------------
  |  Branch (4437:5): [True: 0, False: 29.4k]
  ------------------
 4438|       |      // op: Sd
 4439|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4440|      0|      Value |= (op & UINT64_C(1)) << 22;
 4441|      0|      Value |= (op & UINT64_C(30)) << 11;
 4442|       |      // op: Dm
 4443|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4444|      0|      Value |= (op & UINT64_C(16)) << 1;
 4445|      0|      Value |= op & UINT64_C(15);
 4446|      0|      break;
 4447|      0|    }
 4448|      0|    case ARM::VCVTASH:
  ------------------
  |  Branch (4448:5): [True: 0, False: 29.4k]
  ------------------
 4449|      0|    case ARM::VCVTASS:
  ------------------
  |  Branch (4449:5): [True: 0, False: 29.4k]
  ------------------
 4450|      0|    case ARM::VCVTAUH:
  ------------------
  |  Branch (4450:5): [True: 0, False: 29.4k]
  ------------------
 4451|      0|    case ARM::VCVTAUS:
  ------------------
  |  Branch (4451:5): [True: 0, False: 29.4k]
  ------------------
 4452|      0|    case ARM::VCVTMSH:
  ------------------
  |  Branch (4452:5): [True: 0, False: 29.4k]
  ------------------
 4453|      0|    case ARM::VCVTMSS:
  ------------------
  |  Branch (4453:5): [True: 0, False: 29.4k]
  ------------------
 4454|      0|    case ARM::VCVTMUH:
  ------------------
  |  Branch (4454:5): [True: 0, False: 29.4k]
  ------------------
 4455|      0|    case ARM::VCVTMUS:
  ------------------
  |  Branch (4455:5): [True: 0, False: 29.4k]
  ------------------
 4456|      0|    case ARM::VCVTNSH:
  ------------------
  |  Branch (4456:5): [True: 0, False: 29.4k]
  ------------------
 4457|      0|    case ARM::VCVTNSS:
  ------------------
  |  Branch (4457:5): [True: 0, False: 29.4k]
  ------------------
 4458|      0|    case ARM::VCVTNUH:
  ------------------
  |  Branch (4458:5): [True: 0, False: 29.4k]
  ------------------
 4459|      0|    case ARM::VCVTNUS:
  ------------------
  |  Branch (4459:5): [True: 0, False: 29.4k]
  ------------------
 4460|      0|    case ARM::VCVTPSH:
  ------------------
  |  Branch (4460:5): [True: 0, False: 29.4k]
  ------------------
 4461|      0|    case ARM::VCVTPSS:
  ------------------
  |  Branch (4461:5): [True: 0, False: 29.4k]
  ------------------
 4462|      0|    case ARM::VCVTPUH:
  ------------------
  |  Branch (4462:5): [True: 0, False: 29.4k]
  ------------------
 4463|      0|    case ARM::VCVTPUS:
  ------------------
  |  Branch (4463:5): [True: 0, False: 29.4k]
  ------------------
 4464|      0|    case ARM::VINSH:
  ------------------
  |  Branch (4464:5): [True: 0, False: 29.4k]
  ------------------
 4465|      0|    case ARM::VMOVH:
  ------------------
  |  Branch (4465:5): [True: 0, False: 29.4k]
  ------------------
 4466|      0|    case ARM::VRINTAH:
  ------------------
  |  Branch (4466:5): [True: 0, False: 29.4k]
  ------------------
 4467|      0|    case ARM::VRINTAS:
  ------------------
  |  Branch (4467:5): [True: 0, False: 29.4k]
  ------------------
 4468|      0|    case ARM::VRINTMH:
  ------------------
  |  Branch (4468:5): [True: 0, False: 29.4k]
  ------------------
 4469|      0|    case ARM::VRINTMS:
  ------------------
  |  Branch (4469:5): [True: 0, False: 29.4k]
  ------------------
 4470|      0|    case ARM::VRINTNH:
  ------------------
  |  Branch (4470:5): [True: 0, False: 29.4k]
  ------------------
 4471|      0|    case ARM::VRINTNS:
  ------------------
  |  Branch (4471:5): [True: 0, False: 29.4k]
  ------------------
 4472|      0|    case ARM::VRINTPH:
  ------------------
  |  Branch (4472:5): [True: 0, False: 29.4k]
  ------------------
 4473|      0|    case ARM::VRINTPS: {
  ------------------
  |  Branch (4473:5): [True: 0, False: 29.4k]
  ------------------
 4474|       |      // op: Sd
 4475|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4476|      0|      Value |= (op & UINT64_C(1)) << 22;
 4477|      0|      Value |= (op & UINT64_C(30)) << 11;
 4478|       |      // op: Sm
 4479|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4480|      0|      Value |= (op & UINT64_C(1)) << 5;
 4481|      0|      Value |= (op & UINT64_C(30)) >> 1;
 4482|      0|      break;
 4483|      0|    }
 4484|      0|    case ARM::VMAXNMH:
  ------------------
  |  Branch (4484:5): [True: 0, False: 29.4k]
  ------------------
 4485|      0|    case ARM::VMAXNMS:
  ------------------
  |  Branch (4485:5): [True: 0, False: 29.4k]
  ------------------
 4486|      0|    case ARM::VMINNMH:
  ------------------
  |  Branch (4486:5): [True: 0, False: 29.4k]
  ------------------
 4487|      0|    case ARM::VMINNMS:
  ------------------
  |  Branch (4487:5): [True: 0, False: 29.4k]
  ------------------
 4488|      0|    case ARM::VSELEQH:
  ------------------
  |  Branch (4488:5): [True: 0, False: 29.4k]
  ------------------
 4489|      0|    case ARM::VSELEQS:
  ------------------
  |  Branch (4489:5): [True: 0, False: 29.4k]
  ------------------
 4490|      0|    case ARM::VSELGEH:
  ------------------
  |  Branch (4490:5): [True: 0, False: 29.4k]
  ------------------
 4491|      0|    case ARM::VSELGES:
  ------------------
  |  Branch (4491:5): [True: 0, False: 29.4k]
  ------------------
 4492|      0|    case ARM::VSELGTH:
  ------------------
  |  Branch (4492:5): [True: 0, False: 29.4k]
  ------------------
 4493|      0|    case ARM::VSELGTS:
  ------------------
  |  Branch (4493:5): [True: 0, False: 29.4k]
  ------------------
 4494|      0|    case ARM::VSELVSH:
  ------------------
  |  Branch (4494:5): [True: 0, False: 29.4k]
  ------------------
 4495|      0|    case ARM::VSELVSS: {
  ------------------
  |  Branch (4495:5): [True: 0, False: 29.4k]
  ------------------
 4496|       |      // op: Sd
 4497|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4498|      0|      Value |= (op & UINT64_C(1)) << 22;
 4499|      0|      Value |= (op & UINT64_C(30)) << 11;
 4500|       |      // op: Sn
 4501|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4502|      0|      Value |= (op & UINT64_C(30)) << 15;
 4503|      0|      Value |= (op & UINT64_C(1)) << 7;
 4504|       |      // op: Sm
 4505|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4506|      0|      Value |= (op & UINT64_C(1)) << 5;
 4507|      0|      Value |= (op & UINT64_C(30)) >> 1;
 4508|      0|      break;
 4509|      0|    }
 4510|      0|    case ARM::VDUP16d:
  ------------------
  |  Branch (4510:5): [True: 0, False: 29.4k]
  ------------------
 4511|      0|    case ARM::VDUP16q:
  ------------------
  |  Branch (4511:5): [True: 0, False: 29.4k]
  ------------------
 4512|      0|    case ARM::VDUP32d:
  ------------------
  |  Branch (4512:5): [True: 0, False: 29.4k]
  ------------------
 4513|      0|    case ARM::VDUP32q:
  ------------------
  |  Branch (4513:5): [True: 0, False: 29.4k]
  ------------------
 4514|      0|    case ARM::VDUP8d:
  ------------------
  |  Branch (4514:5): [True: 0, False: 29.4k]
  ------------------
 4515|      0|    case ARM::VDUP8q: {
  ------------------
  |  Branch (4515:5): [True: 0, False: 29.4k]
  ------------------
 4516|       |      // op: V
 4517|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4518|      0|      Value |= (op & UINT64_C(15)) << 16;
 4519|      0|      Value |= (op & UINT64_C(16)) << 3;
 4520|       |      // op: R
 4521|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4522|      0|      Value |= (op & UINT64_C(15)) << 12;
 4523|       |      // op: p
 4524|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4525|      0|      Value |= (op & UINT64_C(15)) << 28;
 4526|      0|      Value = NEONThumb2DupPostEncoder(MI, Value, STI);
 4527|      0|      break;
 4528|      0|    }
 4529|      0|    case ARM::VSETLNi32: {
  ------------------
  |  Branch (4529:5): [True: 0, False: 29.4k]
  ------------------
 4530|       |      // op: V
 4531|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4532|      0|      Value |= (op & UINT64_C(15)) << 16;
 4533|      0|      Value |= (op & UINT64_C(16)) << 3;
 4534|       |      // op: R
 4535|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4536|      0|      Value |= (op & UINT64_C(15)) << 12;
 4537|       |      // op: p
 4538|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4539|      0|      Value |= (op & UINT64_C(15)) << 28;
 4540|       |      // op: lane
 4541|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4542|      0|      Value |= (op & UINT64_C(1)) << 21;
 4543|      0|      Value = NEONThumb2DupPostEncoder(MI, Value, STI);
 4544|      0|      break;
 4545|      0|    }
 4546|      0|    case ARM::VSETLNi16: {
  ------------------
  |  Branch (4546:5): [True: 0, False: 29.4k]
  ------------------
 4547|       |      // op: V
 4548|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4549|      0|      Value |= (op & UINT64_C(15)) << 16;
 4550|      0|      Value |= (op & UINT64_C(16)) << 3;
 4551|       |      // op: R
 4552|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4553|      0|      Value |= (op & UINT64_C(15)) << 12;
 4554|       |      // op: p
 4555|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4556|      0|      Value |= (op & UINT64_C(15)) << 28;
 4557|       |      // op: lane
 4558|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4559|      0|      Value |= (op & UINT64_C(2)) << 20;
 4560|      0|      Value |= (op & UINT64_C(1)) << 6;
 4561|      0|      Value = NEONThumb2DupPostEncoder(MI, Value, STI);
 4562|      0|      break;
 4563|      0|    }
 4564|      0|    case ARM::VSETLNi8: {
  ------------------
  |  Branch (4564:5): [True: 0, False: 29.4k]
  ------------------
 4565|       |      // op: V
 4566|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4567|      0|      Value |= (op & UINT64_C(15)) << 16;
 4568|      0|      Value |= (op & UINT64_C(16)) << 3;
 4569|       |      // op: R
 4570|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4571|      0|      Value |= (op & UINT64_C(15)) << 12;
 4572|       |      // op: p
 4573|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4574|      0|      Value |= (op & UINT64_C(15)) << 28;
 4575|       |      // op: lane
 4576|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4577|      0|      Value |= (op & UINT64_C(4)) << 19;
 4578|      0|      Value |= (op & UINT64_C(3)) << 5;
 4579|      0|      Value = NEONThumb2DupPostEncoder(MI, Value, STI);
 4580|      0|      break;
 4581|      0|    }
 4582|      0|    case ARM::VGETLNi32: {
  ------------------
  |  Branch (4582:5): [True: 0, False: 29.4k]
  ------------------
 4583|       |      // op: V
 4584|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4585|      0|      Value |= (op & UINT64_C(15)) << 16;
 4586|      0|      Value |= (op & UINT64_C(16)) << 3;
 4587|       |      // op: R
 4588|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4589|      0|      Value |= (op & UINT64_C(15)) << 12;
 4590|       |      // op: p
 4591|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4592|      0|      Value |= (op & UINT64_C(15)) << 28;
 4593|       |      // op: lane
 4594|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4595|      0|      Value |= (op & UINT64_C(1)) << 21;
 4596|      0|      Value = NEONThumb2DupPostEncoder(MI, Value, STI);
 4597|      0|      break;
 4598|      0|    }
 4599|      0|    case ARM::VGETLNs16:
  ------------------
  |  Branch (4599:5): [True: 0, False: 29.4k]
  ------------------
 4600|      0|    case ARM::VGETLNu16: {
  ------------------
  |  Branch (4600:5): [True: 0, False: 29.4k]
  ------------------
 4601|       |      // op: V
 4602|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4603|      0|      Value |= (op & UINT64_C(15)) << 16;
 4604|      0|      Value |= (op & UINT64_C(16)) << 3;
 4605|       |      // op: R
 4606|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4607|      0|      Value |= (op & UINT64_C(15)) << 12;
 4608|       |      // op: p
 4609|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4610|      0|      Value |= (op & UINT64_C(15)) << 28;
 4611|       |      // op: lane
 4612|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4613|      0|      Value |= (op & UINT64_C(2)) << 20;
 4614|      0|      Value |= (op & UINT64_C(1)) << 6;
 4615|      0|      Value = NEONThumb2DupPostEncoder(MI, Value, STI);
 4616|      0|      break;
 4617|      0|    }
 4618|      0|    case ARM::VGETLNs8:
  ------------------
  |  Branch (4618:5): [True: 0, False: 29.4k]
  ------------------
 4619|      0|    case ARM::VGETLNu8: {
  ------------------
  |  Branch (4619:5): [True: 0, False: 29.4k]
  ------------------
 4620|       |      // op: V
 4621|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 4622|      0|      Value |= (op & UINT64_C(15)) << 16;
 4623|      0|      Value |= (op & UINT64_C(16)) << 3;
 4624|       |      // op: R
 4625|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4626|      0|      Value |= (op & UINT64_C(15)) << 12;
 4627|       |      // op: p
 4628|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 4629|      0|      Value |= (op & UINT64_C(15)) << 28;
 4630|       |      // op: lane
 4631|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 4632|      0|      Value |= (op & UINT64_C(4)) << 19;
 4633|      0|      Value |= (op & UINT64_C(3)) << 5;
 4634|      0|      Value = NEONThumb2DupPostEncoder(MI, Value, STI);
 4635|      0|      break;
 4636|      0|    }
 4637|      0|    case ARM::VLD1LNd8: {
  ------------------
  |  Branch (4637:5): [True: 0, False: 29.4k]
  ------------------
 4638|       |      // op: Vd
 4639|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4640|      0|      Value |= (op & UINT64_C(16)) << 18;
 4641|      0|      Value |= (op & UINT64_C(15)) << 12;
 4642|       |      // op: Rn
 4643|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 4644|      0|      Value |= (op & UINT64_C(15)) << 16;
 4645|       |      // op: lane
 4646|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4647|      0|      Value |= (op & UINT64_C(7)) << 5;
 4648|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4649|      0|      break;
 4650|      0|    }
 4651|      0|    case ARM::VLD1d16:
  ------------------
  |  Branch (4651:5): [True: 0, False: 29.4k]
  ------------------
 4652|      0|    case ARM::VLD1d16T:
  ------------------
  |  Branch (4652:5): [True: 0, False: 29.4k]
  ------------------
 4653|      0|    case ARM::VLD1d32:
  ------------------
  |  Branch (4653:5): [True: 0, False: 29.4k]
  ------------------
 4654|      0|    case ARM::VLD1d32T:
  ------------------
  |  Branch (4654:5): [True: 0, False: 29.4k]
  ------------------
 4655|      0|    case ARM::VLD1d64:
  ------------------
  |  Branch (4655:5): [True: 0, False: 29.4k]
  ------------------
 4656|      0|    case ARM::VLD1d64T:
  ------------------
  |  Branch (4656:5): [True: 0, False: 29.4k]
  ------------------
 4657|      0|    case ARM::VLD1d8:
  ------------------
  |  Branch (4657:5): [True: 0, False: 29.4k]
  ------------------
 4658|      0|    case ARM::VLD1d8T: {
  ------------------
  |  Branch (4658:5): [True: 0, False: 29.4k]
  ------------------
 4659|       |      // op: Vd
 4660|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4661|      0|      Value |= (op & UINT64_C(16)) << 18;
 4662|      0|      Value |= (op & UINT64_C(15)) << 12;
 4663|       |      // op: Rn
 4664|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 4665|      0|      Value |= (op & UINT64_C(15)) << 16;
 4666|      0|      Value |= op & UINT64_C(16);
 4667|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4668|      0|      break;
 4669|      0|    }
 4670|      0|    case ARM::VLD1LNd16: {
  ------------------
  |  Branch (4670:5): [True: 0, False: 29.4k]
  ------------------
 4671|       |      // op: Vd
 4672|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4673|      0|      Value |= (op & UINT64_C(16)) << 18;
 4674|      0|      Value |= (op & UINT64_C(15)) << 12;
 4675|       |      // op: Rn
 4676|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 4677|      0|      Value |= (op & UINT64_C(15)) << 16;
 4678|      0|      Value |= op & UINT64_C(48);
 4679|       |      // op: lane
 4680|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4681|      0|      Value |= (op & UINT64_C(3)) << 6;
 4682|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4683|      0|      break;
 4684|      0|    }
 4685|      0|    case ARM::VLD1d16Q:
  ------------------
  |  Branch (4685:5): [True: 0, False: 29.4k]
  ------------------
 4686|      0|    case ARM::VLD1d32Q:
  ------------------
  |  Branch (4686:5): [True: 0, False: 29.4k]
  ------------------
 4687|      0|    case ARM::VLD1d64Q:
  ------------------
  |  Branch (4687:5): [True: 0, False: 29.4k]
  ------------------
 4688|      0|    case ARM::VLD1d8Q:
  ------------------
  |  Branch (4688:5): [True: 0, False: 29.4k]
  ------------------
 4689|      0|    case ARM::VLD1q16:
  ------------------
  |  Branch (4689:5): [True: 0, False: 29.4k]
  ------------------
 4690|      0|    case ARM::VLD1q32:
  ------------------
  |  Branch (4690:5): [True: 0, False: 29.4k]
  ------------------
 4691|      0|    case ARM::VLD1q64:
  ------------------
  |  Branch (4691:5): [True: 0, False: 29.4k]
  ------------------
 4692|      0|    case ARM::VLD1q8:
  ------------------
  |  Branch (4692:5): [True: 0, False: 29.4k]
  ------------------
 4693|      0|    case ARM::VLD2b16:
  ------------------
  |  Branch (4693:5): [True: 0, False: 29.4k]
  ------------------
 4694|      0|    case ARM::VLD2b32:
  ------------------
  |  Branch (4694:5): [True: 0, False: 29.4k]
  ------------------
 4695|      0|    case ARM::VLD2b8:
  ------------------
  |  Branch (4695:5): [True: 0, False: 29.4k]
  ------------------
 4696|      0|    case ARM::VLD2d16:
  ------------------
  |  Branch (4696:5): [True: 0, False: 29.4k]
  ------------------
 4697|      0|    case ARM::VLD2d32:
  ------------------
  |  Branch (4697:5): [True: 0, False: 29.4k]
  ------------------
 4698|      0|    case ARM::VLD2d8:
  ------------------
  |  Branch (4698:5): [True: 0, False: 29.4k]
  ------------------
 4699|      0|    case ARM::VLD2q16:
  ------------------
  |  Branch (4699:5): [True: 0, False: 29.4k]
  ------------------
 4700|      0|    case ARM::VLD2q32:
  ------------------
  |  Branch (4700:5): [True: 0, False: 29.4k]
  ------------------
 4701|      0|    case ARM::VLD2q8: {
  ------------------
  |  Branch (4701:5): [True: 0, False: 29.4k]
  ------------------
 4702|       |      // op: Vd
 4703|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4704|      0|      Value |= (op & UINT64_C(16)) << 18;
 4705|      0|      Value |= (op & UINT64_C(15)) << 12;
 4706|       |      // op: Rn
 4707|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 4708|      0|      Value |= (op & UINT64_C(15)) << 16;
 4709|      0|      Value |= op & UINT64_C(48);
 4710|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4711|      0|      break;
 4712|      0|    }
 4713|      0|    case ARM::VLD1LNd8_UPD: {
  ------------------
  |  Branch (4713:5): [True: 0, False: 29.4k]
  ------------------
 4714|       |      // op: Vd
 4715|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4716|      0|      Value |= (op & UINT64_C(16)) << 18;
 4717|      0|      Value |= (op & UINT64_C(15)) << 12;
 4718|       |      // op: Rn
 4719|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4720|      0|      Value |= (op & UINT64_C(15)) << 16;
 4721|       |      // op: Rm
 4722|      0|      op = getAddrMode6OffsetOpValue(MI, 4, Fixups, STI);
 4723|      0|      Value |= op & UINT64_C(15);
 4724|       |      // op: lane
 4725|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 4726|      0|      Value |= (op & UINT64_C(7)) << 5;
 4727|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4728|      0|      break;
 4729|      0|    }
 4730|      0|    case ARM::VLD1LNd32_UPD: {
  ------------------
  |  Branch (4730:5): [True: 0, False: 29.4k]
  ------------------
 4731|       |      // op: Vd
 4732|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4733|      0|      Value |= (op & UINT64_C(16)) << 18;
 4734|      0|      Value |= (op & UINT64_C(15)) << 12;
 4735|       |      // op: Rn
 4736|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4737|      0|      Value |= (op & UINT64_C(15)) << 16;
 4738|      0|      Value |= (op & UINT64_C(16)) << 1;
 4739|      0|      Value |= op & UINT64_C(16);
 4740|       |      // op: Rm
 4741|      0|      op = getAddrMode6OffsetOpValue(MI, 4, Fixups, STI);
 4742|      0|      Value |= op & UINT64_C(15);
 4743|       |      // op: lane
 4744|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 4745|      0|      Value |= (op & UINT64_C(1)) << 7;
 4746|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4747|      0|      break;
 4748|      0|    }
 4749|      0|    case ARM::VLD1LNd16_UPD: {
  ------------------
  |  Branch (4749:5): [True: 0, False: 29.4k]
  ------------------
 4750|       |      // op: Vd
 4751|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4752|      0|      Value |= (op & UINT64_C(16)) << 18;
 4753|      0|      Value |= (op & UINT64_C(15)) << 12;
 4754|       |      // op: Rn
 4755|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4756|      0|      Value |= (op & UINT64_C(15)) << 16;
 4757|      0|      Value |= op & UINT64_C(16);
 4758|       |      // op: Rm
 4759|      0|      op = getAddrMode6OffsetOpValue(MI, 4, Fixups, STI);
 4760|      0|      Value |= op & UINT64_C(15);
 4761|       |      // op: lane
 4762|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 4763|      0|      Value |= (op & UINT64_C(3)) << 6;
 4764|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4765|      0|      break;
 4766|      0|    }
 4767|      0|    case ARM::VLD1d16Twb_register:
  ------------------
  |  Branch (4767:5): [True: 0, False: 29.4k]
  ------------------
 4768|      0|    case ARM::VLD1d16wb_register:
  ------------------
  |  Branch (4768:5): [True: 0, False: 29.4k]
  ------------------
 4769|      0|    case ARM::VLD1d32Twb_register:
  ------------------
  |  Branch (4769:5): [True: 0, False: 29.4k]
  ------------------
 4770|      0|    case ARM::VLD1d32wb_register:
  ------------------
  |  Branch (4770:5): [True: 0, False: 29.4k]
  ------------------
 4771|      0|    case ARM::VLD1d64Twb_register:
  ------------------
  |  Branch (4771:5): [True: 0, False: 29.4k]
  ------------------
 4772|      0|    case ARM::VLD1d64wb_register:
  ------------------
  |  Branch (4772:5): [True: 0, False: 29.4k]
  ------------------
 4773|      0|    case ARM::VLD1d8Twb_register:
  ------------------
  |  Branch (4773:5): [True: 0, False: 29.4k]
  ------------------
 4774|      0|    case ARM::VLD1d8wb_register: {
  ------------------
  |  Branch (4774:5): [True: 0, False: 29.4k]
  ------------------
 4775|       |      // op: Vd
 4776|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4777|      0|      Value |= (op & UINT64_C(16)) << 18;
 4778|      0|      Value |= (op & UINT64_C(15)) << 12;
 4779|       |      // op: Rn
 4780|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4781|      0|      Value |= (op & UINT64_C(15)) << 16;
 4782|      0|      Value |= op & UINT64_C(16);
 4783|       |      // op: Rm
 4784|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4785|      0|      Value |= op & UINT64_C(15);
 4786|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4787|      0|      break;
 4788|      0|    }
 4789|      0|    case ARM::VLD2LNd32:
  ------------------
  |  Branch (4789:5): [True: 0, False: 29.4k]
  ------------------
 4790|      0|    case ARM::VLD2LNq32: {
  ------------------
  |  Branch (4790:5): [True: 0, False: 29.4k]
  ------------------
 4791|       |      // op: Vd
 4792|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4793|      0|      Value |= (op & UINT64_C(16)) << 18;
 4794|      0|      Value |= (op & UINT64_C(15)) << 12;
 4795|       |      // op: Rn
 4796|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4797|      0|      Value |= (op & UINT64_C(15)) << 16;
 4798|      0|      Value |= op & UINT64_C(16);
 4799|       |      // op: lane
 4800|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 4801|      0|      Value |= (op & UINT64_C(1)) << 7;
 4802|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4803|      0|      break;
 4804|      0|    }
 4805|      0|    case ARM::VLD2LNd16:
  ------------------
  |  Branch (4805:5): [True: 0, False: 29.4k]
  ------------------
 4806|      0|    case ARM::VLD2LNq16: {
  ------------------
  |  Branch (4806:5): [True: 0, False: 29.4k]
  ------------------
 4807|       |      // op: Vd
 4808|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4809|      0|      Value |= (op & UINT64_C(16)) << 18;
 4810|      0|      Value |= (op & UINT64_C(15)) << 12;
 4811|       |      // op: Rn
 4812|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4813|      0|      Value |= (op & UINT64_C(15)) << 16;
 4814|      0|      Value |= op & UINT64_C(16);
 4815|       |      // op: lane
 4816|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 4817|      0|      Value |= (op & UINT64_C(3)) << 6;
 4818|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4819|      0|      break;
 4820|      0|    }
 4821|      0|    case ARM::VLD2LNd8: {
  ------------------
  |  Branch (4821:5): [True: 0, False: 29.4k]
  ------------------
 4822|       |      // op: Vd
 4823|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4824|      0|      Value |= (op & UINT64_C(16)) << 18;
 4825|      0|      Value |= (op & UINT64_C(15)) << 12;
 4826|       |      // op: Rn
 4827|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4828|      0|      Value |= (op & UINT64_C(15)) << 16;
 4829|      0|      Value |= op & UINT64_C(16);
 4830|       |      // op: lane
 4831|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 4832|      0|      Value |= (op & UINT64_C(7)) << 5;
 4833|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4834|      0|      break;
 4835|      0|    }
 4836|      0|    case ARM::VLD1d16Twb_fixed:
  ------------------
  |  Branch (4836:5): [True: 0, False: 29.4k]
  ------------------
 4837|      0|    case ARM::VLD1d16wb_fixed:
  ------------------
  |  Branch (4837:5): [True: 0, False: 29.4k]
  ------------------
 4838|      0|    case ARM::VLD1d32Twb_fixed:
  ------------------
  |  Branch (4838:5): [True: 0, False: 29.4k]
  ------------------
 4839|      0|    case ARM::VLD1d32wb_fixed:
  ------------------
  |  Branch (4839:5): [True: 0, False: 29.4k]
  ------------------
 4840|      0|    case ARM::VLD1d64Twb_fixed:
  ------------------
  |  Branch (4840:5): [True: 0, False: 29.4k]
  ------------------
 4841|      0|    case ARM::VLD1d64wb_fixed:
  ------------------
  |  Branch (4841:5): [True: 0, False: 29.4k]
  ------------------
 4842|      0|    case ARM::VLD1d8Twb_fixed:
  ------------------
  |  Branch (4842:5): [True: 0, False: 29.4k]
  ------------------
 4843|      0|    case ARM::VLD1d8wb_fixed: {
  ------------------
  |  Branch (4843:5): [True: 0, False: 29.4k]
  ------------------
 4844|       |      // op: Vd
 4845|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4846|      0|      Value |= (op & UINT64_C(16)) << 18;
 4847|      0|      Value |= (op & UINT64_C(15)) << 12;
 4848|       |      // op: Rn
 4849|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4850|      0|      Value |= (op & UINT64_C(15)) << 16;
 4851|      0|      Value |= op & UINT64_C(16);
 4852|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4853|      0|      break;
 4854|      0|    }
 4855|      0|    case ARM::VLD1d16Qwb_register:
  ------------------
  |  Branch (4855:5): [True: 0, False: 29.4k]
  ------------------
 4856|      0|    case ARM::VLD1d32Qwb_register:
  ------------------
  |  Branch (4856:5): [True: 0, False: 29.4k]
  ------------------
 4857|      0|    case ARM::VLD1d64Qwb_register:
  ------------------
  |  Branch (4857:5): [True: 0, False: 29.4k]
  ------------------
 4858|      0|    case ARM::VLD1d8Qwb_register:
  ------------------
  |  Branch (4858:5): [True: 0, False: 29.4k]
  ------------------
 4859|      0|    case ARM::VLD1q16wb_register:
  ------------------
  |  Branch (4859:5): [True: 0, False: 29.4k]
  ------------------
 4860|      0|    case ARM::VLD1q32wb_register:
  ------------------
  |  Branch (4860:5): [True: 0, False: 29.4k]
  ------------------
 4861|      0|    case ARM::VLD1q64wb_register:
  ------------------
  |  Branch (4861:5): [True: 0, False: 29.4k]
  ------------------
 4862|      0|    case ARM::VLD1q8wb_register:
  ------------------
  |  Branch (4862:5): [True: 0, False: 29.4k]
  ------------------
 4863|      0|    case ARM::VLD2b16wb_register:
  ------------------
  |  Branch (4863:5): [True: 0, False: 29.4k]
  ------------------
 4864|      0|    case ARM::VLD2b32wb_register:
  ------------------
  |  Branch (4864:5): [True: 0, False: 29.4k]
  ------------------
 4865|      0|    case ARM::VLD2b8wb_register:
  ------------------
  |  Branch (4865:5): [True: 0, False: 29.4k]
  ------------------
 4866|      0|    case ARM::VLD2d16wb_register:
  ------------------
  |  Branch (4866:5): [True: 0, False: 29.4k]
  ------------------
 4867|      0|    case ARM::VLD2d32wb_register:
  ------------------
  |  Branch (4867:5): [True: 0, False: 29.4k]
  ------------------
 4868|      0|    case ARM::VLD2d8wb_register:
  ------------------
  |  Branch (4868:5): [True: 0, False: 29.4k]
  ------------------
 4869|      0|    case ARM::VLD2q16wb_register:
  ------------------
  |  Branch (4869:5): [True: 0, False: 29.4k]
  ------------------
 4870|      0|    case ARM::VLD2q32wb_register:
  ------------------
  |  Branch (4870:5): [True: 0, False: 29.4k]
  ------------------
 4871|      0|    case ARM::VLD2q8wb_register: {
  ------------------
  |  Branch (4871:5): [True: 0, False: 29.4k]
  ------------------
 4872|       |      // op: Vd
 4873|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4874|      0|      Value |= (op & UINT64_C(16)) << 18;
 4875|      0|      Value |= (op & UINT64_C(15)) << 12;
 4876|       |      // op: Rn
 4877|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4878|      0|      Value |= (op & UINT64_C(15)) << 16;
 4879|      0|      Value |= op & UINT64_C(48);
 4880|       |      // op: Rm
 4881|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 4882|      0|      Value |= op & UINT64_C(15);
 4883|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4884|      0|      break;
 4885|      0|    }
 4886|      0|    case ARM::VLD1d16Qwb_fixed:
  ------------------
  |  Branch (4886:5): [True: 0, False: 29.4k]
  ------------------
 4887|      0|    case ARM::VLD1d32Qwb_fixed:
  ------------------
  |  Branch (4887:5): [True: 0, False: 29.4k]
  ------------------
 4888|      0|    case ARM::VLD1d64Qwb_fixed:
  ------------------
  |  Branch (4888:5): [True: 0, False: 29.4k]
  ------------------
 4889|      0|    case ARM::VLD1d8Qwb_fixed:
  ------------------
  |  Branch (4889:5): [True: 0, False: 29.4k]
  ------------------
 4890|      0|    case ARM::VLD1q16wb_fixed:
  ------------------
  |  Branch (4890:5): [True: 0, False: 29.4k]
  ------------------
 4891|      0|    case ARM::VLD1q32wb_fixed:
  ------------------
  |  Branch (4891:5): [True: 0, False: 29.4k]
  ------------------
 4892|      0|    case ARM::VLD1q64wb_fixed:
  ------------------
  |  Branch (4892:5): [True: 0, False: 29.4k]
  ------------------
 4893|      0|    case ARM::VLD1q8wb_fixed:
  ------------------
  |  Branch (4893:5): [True: 0, False: 29.4k]
  ------------------
 4894|      0|    case ARM::VLD2b16wb_fixed:
  ------------------
  |  Branch (4894:5): [True: 0, False: 29.4k]
  ------------------
 4895|      0|    case ARM::VLD2b32wb_fixed:
  ------------------
  |  Branch (4895:5): [True: 0, False: 29.4k]
  ------------------
 4896|      0|    case ARM::VLD2b8wb_fixed:
  ------------------
  |  Branch (4896:5): [True: 0, False: 29.4k]
  ------------------
 4897|      0|    case ARM::VLD2d16wb_fixed:
  ------------------
  |  Branch (4897:5): [True: 0, False: 29.4k]
  ------------------
 4898|      0|    case ARM::VLD2d32wb_fixed:
  ------------------
  |  Branch (4898:5): [True: 0, False: 29.4k]
  ------------------
 4899|      0|    case ARM::VLD2d8wb_fixed:
  ------------------
  |  Branch (4899:5): [True: 0, False: 29.4k]
  ------------------
 4900|      0|    case ARM::VLD2q16wb_fixed:
  ------------------
  |  Branch (4900:5): [True: 0, False: 29.4k]
  ------------------
 4901|      0|    case ARM::VLD2q32wb_fixed:
  ------------------
  |  Branch (4901:5): [True: 0, False: 29.4k]
  ------------------
 4902|      0|    case ARM::VLD2q8wb_fixed: {
  ------------------
  |  Branch (4902:5): [True: 0, False: 29.4k]
  ------------------
 4903|       |      // op: Vd
 4904|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4905|      0|      Value |= (op & UINT64_C(16)) << 18;
 4906|      0|      Value |= (op & UINT64_C(15)) << 12;
 4907|       |      // op: Rn
 4908|      0|      op = getAddrMode6AddressOpValue(MI, 2, Fixups, STI);
 4909|      0|      Value |= (op & UINT64_C(15)) << 16;
 4910|      0|      Value |= op & UINT64_C(48);
 4911|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4912|      0|      break;
 4913|      0|    }
 4914|      0|    case ARM::VLD3LNd32:
  ------------------
  |  Branch (4914:5): [True: 0, False: 29.4k]
  ------------------
 4915|      0|    case ARM::VLD3LNq32: {
  ------------------
  |  Branch (4915:5): [True: 0, False: 29.4k]
  ------------------
 4916|       |      // op: Vd
 4917|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4918|      0|      Value |= (op & UINT64_C(16)) << 18;
 4919|      0|      Value |= (op & UINT64_C(15)) << 12;
 4920|       |      // op: Rn
 4921|      0|      op = getAddrMode6AddressOpValue(MI, 3, Fixups, STI);
 4922|      0|      Value |= (op & UINT64_C(15)) << 16;
 4923|       |      // op: lane
 4924|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 4925|      0|      Value |= (op & UINT64_C(1)) << 7;
 4926|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4927|      0|      break;
 4928|      0|    }
 4929|      0|    case ARM::VLD3LNd16:
  ------------------
  |  Branch (4929:5): [True: 0, False: 29.4k]
  ------------------
 4930|      0|    case ARM::VLD3LNq16: {
  ------------------
  |  Branch (4930:5): [True: 0, False: 29.4k]
  ------------------
 4931|       |      // op: Vd
 4932|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4933|      0|      Value |= (op & UINT64_C(16)) << 18;
 4934|      0|      Value |= (op & UINT64_C(15)) << 12;
 4935|       |      // op: Rn
 4936|      0|      op = getAddrMode6AddressOpValue(MI, 3, Fixups, STI);
 4937|      0|      Value |= (op & UINT64_C(15)) << 16;
 4938|       |      // op: lane
 4939|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 4940|      0|      Value |= (op & UINT64_C(3)) << 6;
 4941|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4942|      0|      break;
 4943|      0|    }
 4944|      0|    case ARM::VLD3LNd8: {
  ------------------
  |  Branch (4944:5): [True: 0, False: 29.4k]
  ------------------
 4945|       |      // op: Vd
 4946|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4947|      0|      Value |= (op & UINT64_C(16)) << 18;
 4948|      0|      Value |= (op & UINT64_C(15)) << 12;
 4949|       |      // op: Rn
 4950|      0|      op = getAddrMode6AddressOpValue(MI, 3, Fixups, STI);
 4951|      0|      Value |= (op & UINT64_C(15)) << 16;
 4952|       |      // op: lane
 4953|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 4954|      0|      Value |= (op & UINT64_C(7)) << 5;
 4955|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4956|      0|      break;
 4957|      0|    }
 4958|      0|    case ARM::VLD2LNd32_UPD:
  ------------------
  |  Branch (4958:5): [True: 0, False: 29.4k]
  ------------------
 4959|      0|    case ARM::VLD2LNq32_UPD: {
  ------------------
  |  Branch (4959:5): [True: 0, False: 29.4k]
  ------------------
 4960|       |      // op: Vd
 4961|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4962|      0|      Value |= (op & UINT64_C(16)) << 18;
 4963|      0|      Value |= (op & UINT64_C(15)) << 12;
 4964|       |      // op: Rn
 4965|      0|      op = getAddrMode6AddressOpValue(MI, 3, Fixups, STI);
 4966|      0|      Value |= (op & UINT64_C(15)) << 16;
 4967|      0|      Value |= op & UINT64_C(16);
 4968|       |      // op: Rm
 4969|      0|      op = getAddrMode6OffsetOpValue(MI, 5, Fixups, STI);
 4970|      0|      Value |= op & UINT64_C(15);
 4971|       |      // op: lane
 4972|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 4973|      0|      Value |= (op & UINT64_C(1)) << 7;
 4974|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4975|      0|      break;
 4976|      0|    }
 4977|      0|    case ARM::VLD2LNd16_UPD:
  ------------------
  |  Branch (4977:5): [True: 0, False: 29.4k]
  ------------------
 4978|      0|    case ARM::VLD2LNq16_UPD: {
  ------------------
  |  Branch (4978:5): [True: 0, False: 29.4k]
  ------------------
 4979|       |      // op: Vd
 4980|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4981|      0|      Value |= (op & UINT64_C(16)) << 18;
 4982|      0|      Value |= (op & UINT64_C(15)) << 12;
 4983|       |      // op: Rn
 4984|      0|      op = getAddrMode6AddressOpValue(MI, 3, Fixups, STI);
 4985|      0|      Value |= (op & UINT64_C(15)) << 16;
 4986|      0|      Value |= op & UINT64_C(16);
 4987|       |      // op: Rm
 4988|      0|      op = getAddrMode6OffsetOpValue(MI, 5, Fixups, STI);
 4989|      0|      Value |= op & UINT64_C(15);
 4990|       |      // op: lane
 4991|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 4992|      0|      Value |= (op & UINT64_C(3)) << 6;
 4993|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 4994|      0|      break;
 4995|      0|    }
 4996|      0|    case ARM::VLD2LNd8_UPD: {
  ------------------
  |  Branch (4996:5): [True: 0, False: 29.4k]
  ------------------
 4997|       |      // op: Vd
 4998|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 4999|      0|      Value |= (op & UINT64_C(16)) << 18;
 5000|      0|      Value |= (op & UINT64_C(15)) << 12;
 5001|       |      // op: Rn
 5002|      0|      op = getAddrMode6AddressOpValue(MI, 3, Fixups, STI);
 5003|      0|      Value |= (op & UINT64_C(15)) << 16;
 5004|      0|      Value |= op & UINT64_C(16);
 5005|       |      // op: Rm
 5006|      0|      op = getAddrMode6OffsetOpValue(MI, 5, Fixups, STI);
 5007|      0|      Value |= op & UINT64_C(15);
 5008|       |      // op: lane
 5009|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 5010|      0|      Value |= (op & UINT64_C(7)) << 5;
 5011|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5012|      0|      break;
 5013|      0|    }
 5014|      0|    case ARM::VLD3d16:
  ------------------
  |  Branch (5014:5): [True: 0, False: 29.4k]
  ------------------
 5015|      0|    case ARM::VLD3d32:
  ------------------
  |  Branch (5015:5): [True: 0, False: 29.4k]
  ------------------
 5016|      0|    case ARM::VLD3d8:
  ------------------
  |  Branch (5016:5): [True: 0, False: 29.4k]
  ------------------
 5017|      0|    case ARM::VLD3q16:
  ------------------
  |  Branch (5017:5): [True: 0, False: 29.4k]
  ------------------
 5018|      0|    case ARM::VLD3q32:
  ------------------
  |  Branch (5018:5): [True: 0, False: 29.4k]
  ------------------
 5019|      0|    case ARM::VLD3q8: {
  ------------------
  |  Branch (5019:5): [True: 0, False: 29.4k]
  ------------------
 5020|       |      // op: Vd
 5021|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5022|      0|      Value |= (op & UINT64_C(16)) << 18;
 5023|      0|      Value |= (op & UINT64_C(15)) << 12;
 5024|       |      // op: Rn
 5025|      0|      op = getAddrMode6AddressOpValue(MI, 3, Fixups, STI);
 5026|      0|      Value |= (op & UINT64_C(15)) << 16;
 5027|      0|      Value |= op & UINT64_C(16);
 5028|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5029|      0|      break;
 5030|      0|    }
 5031|      0|    case ARM::VLD3LNd32_UPD:
  ------------------
  |  Branch (5031:5): [True: 0, False: 29.4k]
  ------------------
 5032|      0|    case ARM::VLD3LNq32_UPD: {
  ------------------
  |  Branch (5032:5): [True: 0, False: 29.4k]
  ------------------
 5033|       |      // op: Vd
 5034|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5035|      0|      Value |= (op & UINT64_C(16)) << 18;
 5036|      0|      Value |= (op & UINT64_C(15)) << 12;
 5037|       |      // op: Rn
 5038|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5039|      0|      Value |= (op & UINT64_C(15)) << 16;
 5040|       |      // op: Rm
 5041|      0|      op = getAddrMode6OffsetOpValue(MI, 6, Fixups, STI);
 5042|      0|      Value |= op & UINT64_C(15);
 5043|       |      // op: lane
 5044|      0|      op = getMachineOpValue(MI, MI.getOperand(10), Fixups, STI);
 5045|      0|      Value |= (op & UINT64_C(1)) << 7;
 5046|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5047|      0|      break;
 5048|      0|    }
 5049|      0|    case ARM::VLD3LNd16_UPD:
  ------------------
  |  Branch (5049:5): [True: 0, False: 29.4k]
  ------------------
 5050|      0|    case ARM::VLD3LNq16_UPD: {
  ------------------
  |  Branch (5050:5): [True: 0, False: 29.4k]
  ------------------
 5051|       |      // op: Vd
 5052|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5053|      0|      Value |= (op & UINT64_C(16)) << 18;
 5054|      0|      Value |= (op & UINT64_C(15)) << 12;
 5055|       |      // op: Rn
 5056|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5057|      0|      Value |= (op & UINT64_C(15)) << 16;
 5058|       |      // op: Rm
 5059|      0|      op = getAddrMode6OffsetOpValue(MI, 6, Fixups, STI);
 5060|      0|      Value |= op & UINT64_C(15);
 5061|       |      // op: lane
 5062|      0|      op = getMachineOpValue(MI, MI.getOperand(10), Fixups, STI);
 5063|      0|      Value |= (op & UINT64_C(3)) << 6;
 5064|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5065|      0|      break;
 5066|      0|    }
 5067|      0|    case ARM::VLD3LNd8_UPD: {
  ------------------
  |  Branch (5067:5): [True: 0, False: 29.4k]
  ------------------
 5068|       |      // op: Vd
 5069|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5070|      0|      Value |= (op & UINT64_C(16)) << 18;
 5071|      0|      Value |= (op & UINT64_C(15)) << 12;
 5072|       |      // op: Rn
 5073|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5074|      0|      Value |= (op & UINT64_C(15)) << 16;
 5075|       |      // op: Rm
 5076|      0|      op = getAddrMode6OffsetOpValue(MI, 6, Fixups, STI);
 5077|      0|      Value |= op & UINT64_C(15);
 5078|       |      // op: lane
 5079|      0|      op = getMachineOpValue(MI, MI.getOperand(10), Fixups, STI);
 5080|      0|      Value |= (op & UINT64_C(7)) << 5;
 5081|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5082|      0|      break;
 5083|      0|    }
 5084|      0|    case ARM::VLD3d16_UPD:
  ------------------
  |  Branch (5084:5): [True: 0, False: 29.4k]
  ------------------
 5085|      0|    case ARM::VLD3d32_UPD:
  ------------------
  |  Branch (5085:5): [True: 0, False: 29.4k]
  ------------------
 5086|      0|    case ARM::VLD3d8_UPD:
  ------------------
  |  Branch (5086:5): [True: 0, False: 29.4k]
  ------------------
 5087|      0|    case ARM::VLD3q16_UPD:
  ------------------
  |  Branch (5087:5): [True: 0, False: 29.4k]
  ------------------
 5088|      0|    case ARM::VLD3q32_UPD:
  ------------------
  |  Branch (5088:5): [True: 0, False: 29.4k]
  ------------------
 5089|      0|    case ARM::VLD3q8_UPD: {
  ------------------
  |  Branch (5089:5): [True: 0, False: 29.4k]
  ------------------
 5090|       |      // op: Vd
 5091|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5092|      0|      Value |= (op & UINT64_C(16)) << 18;
 5093|      0|      Value |= (op & UINT64_C(15)) << 12;
 5094|       |      // op: Rn
 5095|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5096|      0|      Value |= (op & UINT64_C(15)) << 16;
 5097|      0|      Value |= op & UINT64_C(16);
 5098|       |      // op: Rm
 5099|      0|      op = getAddrMode6OffsetOpValue(MI, 6, Fixups, STI);
 5100|      0|      Value |= op & UINT64_C(15);
 5101|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5102|      0|      break;
 5103|      0|    }
 5104|      0|    case ARM::VLD4LNd16:
  ------------------
  |  Branch (5104:5): [True: 0, False: 29.4k]
  ------------------
 5105|      0|    case ARM::VLD4LNq16: {
  ------------------
  |  Branch (5105:5): [True: 0, False: 29.4k]
  ------------------
 5106|       |      // op: Vd
 5107|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5108|      0|      Value |= (op & UINT64_C(16)) << 18;
 5109|      0|      Value |= (op & UINT64_C(15)) << 12;
 5110|       |      // op: Rn
 5111|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5112|      0|      Value |= (op & UINT64_C(15)) << 16;
 5113|      0|      Value |= op & UINT64_C(16);
 5114|       |      // op: lane
 5115|      0|      op = getMachineOpValue(MI, MI.getOperand(10), Fixups, STI);
 5116|      0|      Value |= (op & UINT64_C(3)) << 6;
 5117|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5118|      0|      break;
 5119|      0|    }
 5120|      0|    case ARM::VLD4LNd8: {
  ------------------
  |  Branch (5120:5): [True: 0, False: 29.4k]
  ------------------
 5121|       |      // op: Vd
 5122|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5123|      0|      Value |= (op & UINT64_C(16)) << 18;
 5124|      0|      Value |= (op & UINT64_C(15)) << 12;
 5125|       |      // op: Rn
 5126|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5127|      0|      Value |= (op & UINT64_C(15)) << 16;
 5128|      0|      Value |= op & UINT64_C(16);
 5129|       |      // op: lane
 5130|      0|      op = getMachineOpValue(MI, MI.getOperand(10), Fixups, STI);
 5131|      0|      Value |= (op & UINT64_C(7)) << 5;
 5132|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5133|      0|      break;
 5134|      0|    }
 5135|      0|    case ARM::VLD4LNd32:
  ------------------
  |  Branch (5135:5): [True: 0, False: 29.4k]
  ------------------
 5136|      0|    case ARM::VLD4LNq32: {
  ------------------
  |  Branch (5136:5): [True: 0, False: 29.4k]
  ------------------
 5137|       |      // op: Vd
 5138|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5139|      0|      Value |= (op & UINT64_C(16)) << 18;
 5140|      0|      Value |= (op & UINT64_C(15)) << 12;
 5141|       |      // op: Rn
 5142|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5143|      0|      Value |= (op & UINT64_C(15)) << 16;
 5144|      0|      Value |= op & UINT64_C(48);
 5145|       |      // op: lane
 5146|      0|      op = getMachineOpValue(MI, MI.getOperand(10), Fixups, STI);
 5147|      0|      Value |= (op & UINT64_C(1)) << 7;
 5148|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5149|      0|      break;
 5150|      0|    }
 5151|      0|    case ARM::VLD4d16:
  ------------------
  |  Branch (5151:5): [True: 0, False: 29.4k]
  ------------------
 5152|      0|    case ARM::VLD4d32:
  ------------------
  |  Branch (5152:5): [True: 0, False: 29.4k]
  ------------------
 5153|      0|    case ARM::VLD4d8:
  ------------------
  |  Branch (5153:5): [True: 0, False: 29.4k]
  ------------------
 5154|      0|    case ARM::VLD4q16:
  ------------------
  |  Branch (5154:5): [True: 0, False: 29.4k]
  ------------------
 5155|      0|    case ARM::VLD4q32:
  ------------------
  |  Branch (5155:5): [True: 0, False: 29.4k]
  ------------------
 5156|      0|    case ARM::VLD4q8: {
  ------------------
  |  Branch (5156:5): [True: 0, False: 29.4k]
  ------------------
 5157|       |      // op: Vd
 5158|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5159|      0|      Value |= (op & UINT64_C(16)) << 18;
 5160|      0|      Value |= (op & UINT64_C(15)) << 12;
 5161|       |      // op: Rn
 5162|      0|      op = getAddrMode6AddressOpValue(MI, 4, Fixups, STI);
 5163|      0|      Value |= (op & UINT64_C(15)) << 16;
 5164|      0|      Value |= op & UINT64_C(48);
 5165|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5166|      0|      break;
 5167|      0|    }
 5168|      0|    case ARM::VLD4LNd16_UPD:
  ------------------
  |  Branch (5168:5): [True: 0, False: 29.4k]
  ------------------
 5169|      0|    case ARM::VLD4LNq16_UPD: {
  ------------------
  |  Branch (5169:5): [True: 0, False: 29.4k]
  ------------------
 5170|       |      // op: Vd
 5171|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5172|      0|      Value |= (op & UINT64_C(16)) << 18;
 5173|      0|      Value |= (op & UINT64_C(15)) << 12;
 5174|       |      // op: Rn
 5175|      0|      op = getAddrMode6AddressOpValue(MI, 5, Fixups, STI);
 5176|      0|      Value |= (op & UINT64_C(15)) << 16;
 5177|      0|      Value |= op & UINT64_C(16);
 5178|       |      // op: Rm
 5179|      0|      op = getAddrMode6OffsetOpValue(MI, 7, Fixups, STI);
 5180|      0|      Value |= op & UINT64_C(15);
 5181|       |      // op: lane
 5182|      0|      op = getMachineOpValue(MI, MI.getOperand(12), Fixups, STI);
 5183|      0|      Value |= (op & UINT64_C(3)) << 6;
 5184|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5185|      0|      break;
 5186|      0|    }
 5187|      0|    case ARM::VLD4LNd8_UPD: {
  ------------------
  |  Branch (5187:5): [True: 0, False: 29.4k]
  ------------------
 5188|       |      // op: Vd
 5189|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5190|      0|      Value |= (op & UINT64_C(16)) << 18;
 5191|      0|      Value |= (op & UINT64_C(15)) << 12;
 5192|       |      // op: Rn
 5193|      0|      op = getAddrMode6AddressOpValue(MI, 5, Fixups, STI);
 5194|      0|      Value |= (op & UINT64_C(15)) << 16;
 5195|      0|      Value |= op & UINT64_C(16);
 5196|       |      // op: Rm
 5197|      0|      op = getAddrMode6OffsetOpValue(MI, 7, Fixups, STI);
 5198|      0|      Value |= op & UINT64_C(15);
 5199|       |      // op: lane
 5200|      0|      op = getMachineOpValue(MI, MI.getOperand(12), Fixups, STI);
 5201|      0|      Value |= (op & UINT64_C(7)) << 5;
 5202|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5203|      0|      break;
 5204|      0|    }
 5205|      0|    case ARM::VLD4LNd32_UPD:
  ------------------
  |  Branch (5205:5): [True: 0, False: 29.4k]
  ------------------
 5206|      0|    case ARM::VLD4LNq32_UPD: {
  ------------------
  |  Branch (5206:5): [True: 0, False: 29.4k]
  ------------------
 5207|       |      // op: Vd
 5208|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5209|      0|      Value |= (op & UINT64_C(16)) << 18;
 5210|      0|      Value |= (op & UINT64_C(15)) << 12;
 5211|       |      // op: Rn
 5212|      0|      op = getAddrMode6AddressOpValue(MI, 5, Fixups, STI);
 5213|      0|      Value |= (op & UINT64_C(15)) << 16;
 5214|      0|      Value |= op & UINT64_C(48);
 5215|       |      // op: Rm
 5216|      0|      op = getAddrMode6OffsetOpValue(MI, 7, Fixups, STI);
 5217|      0|      Value |= op & UINT64_C(15);
 5218|       |      // op: lane
 5219|      0|      op = getMachineOpValue(MI, MI.getOperand(12), Fixups, STI);
 5220|      0|      Value |= (op & UINT64_C(1)) << 7;
 5221|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5222|      0|      break;
 5223|      0|    }
 5224|      0|    case ARM::VLD4d16_UPD:
  ------------------
  |  Branch (5224:5): [True: 0, False: 29.4k]
  ------------------
 5225|      0|    case ARM::VLD4d32_UPD:
  ------------------
  |  Branch (5225:5): [True: 0, False: 29.4k]
  ------------------
 5226|      0|    case ARM::VLD4d8_UPD:
  ------------------
  |  Branch (5226:5): [True: 0, False: 29.4k]
  ------------------
 5227|      0|    case ARM::VLD4q16_UPD:
  ------------------
  |  Branch (5227:5): [True: 0, False: 29.4k]
  ------------------
 5228|      0|    case ARM::VLD4q32_UPD:
  ------------------
  |  Branch (5228:5): [True: 0, False: 29.4k]
  ------------------
 5229|      0|    case ARM::VLD4q8_UPD: {
  ------------------
  |  Branch (5229:5): [True: 0, False: 29.4k]
  ------------------
 5230|       |      // op: Vd
 5231|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5232|      0|      Value |= (op & UINT64_C(16)) << 18;
 5233|      0|      Value |= (op & UINT64_C(15)) << 12;
 5234|       |      // op: Rn
 5235|      0|      op = getAddrMode6AddressOpValue(MI, 5, Fixups, STI);
 5236|      0|      Value |= (op & UINT64_C(15)) << 16;
 5237|      0|      Value |= op & UINT64_C(48);
 5238|       |      // op: Rm
 5239|      0|      op = getAddrMode6OffsetOpValue(MI, 7, Fixups, STI);
 5240|      0|      Value |= op & UINT64_C(15);
 5241|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5242|      0|      break;
 5243|      0|    }
 5244|      0|    case ARM::VLD1DUPd16:
  ------------------
  |  Branch (5244:5): [True: 0, False: 29.4k]
  ------------------
 5245|      0|    case ARM::VLD1DUPd32:
  ------------------
  |  Branch (5245:5): [True: 0, False: 29.4k]
  ------------------
 5246|      0|    case ARM::VLD1DUPd8:
  ------------------
  |  Branch (5246:5): [True: 0, False: 29.4k]
  ------------------
 5247|      0|    case ARM::VLD1DUPq16:
  ------------------
  |  Branch (5247:5): [True: 0, False: 29.4k]
  ------------------
 5248|      0|    case ARM::VLD1DUPq32:
  ------------------
  |  Branch (5248:5): [True: 0, False: 29.4k]
  ------------------
 5249|      0|    case ARM::VLD1DUPq8:
  ------------------
  |  Branch (5249:5): [True: 0, False: 29.4k]
  ------------------
 5250|      0|    case ARM::VLD2DUPd16:
  ------------------
  |  Branch (5250:5): [True: 0, False: 29.4k]
  ------------------
 5251|      0|    case ARM::VLD2DUPd16x2:
  ------------------
  |  Branch (5251:5): [True: 0, False: 29.4k]
  ------------------
 5252|      0|    case ARM::VLD2DUPd32:
  ------------------
  |  Branch (5252:5): [True: 0, False: 29.4k]
  ------------------
 5253|      0|    case ARM::VLD2DUPd32x2:
  ------------------
  |  Branch (5253:5): [True: 0, False: 29.4k]
  ------------------
 5254|      0|    case ARM::VLD2DUPd8:
  ------------------
  |  Branch (5254:5): [True: 0, False: 29.4k]
  ------------------
 5255|      0|    case ARM::VLD2DUPd8x2: {
  ------------------
  |  Branch (5255:5): [True: 0, False: 29.4k]
  ------------------
 5256|       |      // op: Vd
 5257|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5258|      0|      Value |= (op & UINT64_C(16)) << 18;
 5259|      0|      Value |= (op & UINT64_C(15)) << 12;
 5260|       |      // op: Rn
 5261|      0|      op = getAddrMode6DupAddressOpValue(MI, 1, Fixups, STI);
 5262|      0|      Value |= (op & UINT64_C(15)) << 16;
 5263|      0|      Value |= op & UINT64_C(16);
 5264|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5265|      0|      break;
 5266|      0|    }
 5267|      0|    case ARM::VLD1DUPd16wb_register:
  ------------------
  |  Branch (5267:5): [True: 0, False: 29.4k]
  ------------------
 5268|      0|    case ARM::VLD1DUPd32wb_register:
  ------------------
  |  Branch (5268:5): [True: 0, False: 29.4k]
  ------------------
 5269|      0|    case ARM::VLD1DUPd8wb_register:
  ------------------
  |  Branch (5269:5): [True: 0, False: 29.4k]
  ------------------
 5270|      0|    case ARM::VLD1DUPq16wb_register:
  ------------------
  |  Branch (5270:5): [True: 0, False: 29.4k]
  ------------------
 5271|      0|    case ARM::VLD1DUPq32wb_register:
  ------------------
  |  Branch (5271:5): [True: 0, False: 29.4k]
  ------------------
 5272|      0|    case ARM::VLD1DUPq8wb_register:
  ------------------
  |  Branch (5272:5): [True: 0, False: 29.4k]
  ------------------
 5273|      0|    case ARM::VLD2DUPd16wb_register:
  ------------------
  |  Branch (5273:5): [True: 0, False: 29.4k]
  ------------------
 5274|      0|    case ARM::VLD2DUPd16x2wb_register:
  ------------------
  |  Branch (5274:5): [True: 0, False: 29.4k]
  ------------------
 5275|      0|    case ARM::VLD2DUPd32wb_register:
  ------------------
  |  Branch (5275:5): [True: 0, False: 29.4k]
  ------------------
 5276|      0|    case ARM::VLD2DUPd32x2wb_register:
  ------------------
  |  Branch (5276:5): [True: 0, False: 29.4k]
  ------------------
 5277|      0|    case ARM::VLD2DUPd8wb_register:
  ------------------
  |  Branch (5277:5): [True: 0, False: 29.4k]
  ------------------
 5278|      0|    case ARM::VLD2DUPd8x2wb_register: {
  ------------------
  |  Branch (5278:5): [True: 0, False: 29.4k]
  ------------------
 5279|       |      // op: Vd
 5280|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5281|      0|      Value |= (op & UINT64_C(16)) << 18;
 5282|      0|      Value |= (op & UINT64_C(15)) << 12;
 5283|       |      // op: Rn
 5284|      0|      op = getAddrMode6DupAddressOpValue(MI, 2, Fixups, STI);
 5285|      0|      Value |= (op & UINT64_C(15)) << 16;
 5286|      0|      Value |= op & UINT64_C(16);
 5287|       |      // op: Rm
 5288|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 5289|      0|      Value |= op & UINT64_C(15);
 5290|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5291|      0|      break;
 5292|      0|    }
 5293|      0|    case ARM::VLD1DUPd16wb_fixed:
  ------------------
  |  Branch (5293:5): [True: 0, False: 29.4k]
  ------------------
 5294|      0|    case ARM::VLD1DUPd32wb_fixed:
  ------------------
  |  Branch (5294:5): [True: 0, False: 29.4k]
  ------------------
 5295|      0|    case ARM::VLD1DUPd8wb_fixed:
  ------------------
  |  Branch (5295:5): [True: 0, False: 29.4k]
  ------------------
 5296|      0|    case ARM::VLD1DUPq16wb_fixed:
  ------------------
  |  Branch (5296:5): [True: 0, False: 29.4k]
  ------------------
 5297|      0|    case ARM::VLD1DUPq32wb_fixed:
  ------------------
  |  Branch (5297:5): [True: 0, False: 29.4k]
  ------------------
 5298|      0|    case ARM::VLD1DUPq8wb_fixed:
  ------------------
  |  Branch (5298:5): [True: 0, False: 29.4k]
  ------------------
 5299|      0|    case ARM::VLD2DUPd16wb_fixed:
  ------------------
  |  Branch (5299:5): [True: 0, False: 29.4k]
  ------------------
 5300|      0|    case ARM::VLD2DUPd16x2wb_fixed:
  ------------------
  |  Branch (5300:5): [True: 0, False: 29.4k]
  ------------------
 5301|      0|    case ARM::VLD2DUPd32wb_fixed:
  ------------------
  |  Branch (5301:5): [True: 0, False: 29.4k]
  ------------------
 5302|      0|    case ARM::VLD2DUPd32x2wb_fixed:
  ------------------
  |  Branch (5302:5): [True: 0, False: 29.4k]
  ------------------
 5303|      0|    case ARM::VLD2DUPd8wb_fixed:
  ------------------
  |  Branch (5303:5): [True: 0, False: 29.4k]
  ------------------
 5304|      0|    case ARM::VLD2DUPd8x2wb_fixed: {
  ------------------
  |  Branch (5304:5): [True: 0, False: 29.4k]
  ------------------
 5305|       |      // op: Vd
 5306|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5307|      0|      Value |= (op & UINT64_C(16)) << 18;
 5308|      0|      Value |= (op & UINT64_C(15)) << 12;
 5309|       |      // op: Rn
 5310|      0|      op = getAddrMode6DupAddressOpValue(MI, 2, Fixups, STI);
 5311|      0|      Value |= (op & UINT64_C(15)) << 16;
 5312|      0|      Value |= op & UINT64_C(16);
 5313|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5314|      0|      break;
 5315|      0|    }
 5316|      0|    case ARM::VLD3DUPd16:
  ------------------
  |  Branch (5316:5): [True: 0, False: 29.4k]
  ------------------
 5317|      0|    case ARM::VLD3DUPd32:
  ------------------
  |  Branch (5317:5): [True: 0, False: 29.4k]
  ------------------
 5318|      0|    case ARM::VLD3DUPd8:
  ------------------
  |  Branch (5318:5): [True: 0, False: 29.4k]
  ------------------
 5319|      0|    case ARM::VLD3DUPq16:
  ------------------
  |  Branch (5319:5): [True: 0, False: 29.4k]
  ------------------
 5320|      0|    case ARM::VLD3DUPq32:
  ------------------
  |  Branch (5320:5): [True: 0, False: 29.4k]
  ------------------
 5321|      0|    case ARM::VLD3DUPq8: {
  ------------------
  |  Branch (5321:5): [True: 0, False: 29.4k]
  ------------------
 5322|       |      // op: Vd
 5323|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5324|      0|      Value |= (op & UINT64_C(16)) << 18;
 5325|      0|      Value |= (op & UINT64_C(15)) << 12;
 5326|       |      // op: Rn
 5327|      0|      op = getAddrMode6DupAddressOpValue(MI, 3, Fixups, STI);
 5328|      0|      Value |= (op & UINT64_C(15)) << 16;
 5329|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5330|      0|      break;
 5331|      0|    }
 5332|      0|    case ARM::VLD3DUPd16_UPD:
  ------------------
  |  Branch (5332:5): [True: 0, False: 29.4k]
  ------------------
 5333|      0|    case ARM::VLD3DUPd32_UPD:
  ------------------
  |  Branch (5333:5): [True: 0, False: 29.4k]
  ------------------
 5334|      0|    case ARM::VLD3DUPd8_UPD:
  ------------------
  |  Branch (5334:5): [True: 0, False: 29.4k]
  ------------------
 5335|      0|    case ARM::VLD3DUPq16_UPD:
  ------------------
  |  Branch (5335:5): [True: 0, False: 29.4k]
  ------------------
 5336|      0|    case ARM::VLD3DUPq32_UPD:
  ------------------
  |  Branch (5336:5): [True: 0, False: 29.4k]
  ------------------
 5337|      0|    case ARM::VLD3DUPq8_UPD: {
  ------------------
  |  Branch (5337:5): [True: 0, False: 29.4k]
  ------------------
 5338|       |      // op: Vd
 5339|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5340|      0|      Value |= (op & UINT64_C(16)) << 18;
 5341|      0|      Value |= (op & UINT64_C(15)) << 12;
 5342|       |      // op: Rn
 5343|      0|      op = getAddrMode6DupAddressOpValue(MI, 4, Fixups, STI);
 5344|      0|      Value |= (op & UINT64_C(15)) << 16;
 5345|       |      // op: Rm
 5346|      0|      op = getAddrMode6OffsetOpValue(MI, 6, Fixups, STI);
 5347|      0|      Value |= op & UINT64_C(15);
 5348|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5349|      0|      break;
 5350|      0|    }
 5351|      0|    case ARM::VLD4DUPd32:
  ------------------
  |  Branch (5351:5): [True: 0, False: 29.4k]
  ------------------
 5352|      0|    case ARM::VLD4DUPq32: {
  ------------------
  |  Branch (5352:5): [True: 0, False: 29.4k]
  ------------------
 5353|       |      // op: Vd
 5354|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5355|      0|      Value |= (op & UINT64_C(16)) << 18;
 5356|      0|      Value |= (op & UINT64_C(15)) << 12;
 5357|       |      // op: Rn
 5358|      0|      op = getAddrMode6DupAddressOpValue(MI, 4, Fixups, STI);
 5359|      0|      Value |= (op & UINT64_C(15)) << 16;
 5360|      0|      Value |= (op & UINT64_C(32)) << 1;
 5361|      0|      Value |= op & UINT64_C(16);
 5362|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5363|      0|      break;
 5364|      0|    }
 5365|      0|    case ARM::VLD4DUPd16:
  ------------------
  |  Branch (5365:5): [True: 0, False: 29.4k]
  ------------------
 5366|      0|    case ARM::VLD4DUPd8:
  ------------------
  |  Branch (5366:5): [True: 0, False: 29.4k]
  ------------------
 5367|      0|    case ARM::VLD4DUPq16:
  ------------------
  |  Branch (5367:5): [True: 0, False: 29.4k]
  ------------------
 5368|      0|    case ARM::VLD4DUPq8: {
  ------------------
  |  Branch (5368:5): [True: 0, False: 29.4k]
  ------------------
 5369|       |      // op: Vd
 5370|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5371|      0|      Value |= (op & UINT64_C(16)) << 18;
 5372|      0|      Value |= (op & UINT64_C(15)) << 12;
 5373|       |      // op: Rn
 5374|      0|      op = getAddrMode6DupAddressOpValue(MI, 4, Fixups, STI);
 5375|      0|      Value |= (op & UINT64_C(15)) << 16;
 5376|      0|      Value |= op & UINT64_C(16);
 5377|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5378|      0|      break;
 5379|      0|    }
 5380|      0|    case ARM::VLD4DUPd32_UPD:
  ------------------
  |  Branch (5380:5): [True: 0, False: 29.4k]
  ------------------
 5381|      0|    case ARM::VLD4DUPq32_UPD: {
  ------------------
  |  Branch (5381:5): [True: 0, False: 29.4k]
  ------------------
 5382|       |      // op: Vd
 5383|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5384|      0|      Value |= (op & UINT64_C(16)) << 18;
 5385|      0|      Value |= (op & UINT64_C(15)) << 12;
 5386|       |      // op: Rn
 5387|      0|      op = getAddrMode6DupAddressOpValue(MI, 5, Fixups, STI);
 5388|      0|      Value |= (op & UINT64_C(15)) << 16;
 5389|      0|      Value |= (op & UINT64_C(32)) << 1;
 5390|      0|      Value |= op & UINT64_C(16);
 5391|       |      // op: Rm
 5392|      0|      op = getAddrMode6OffsetOpValue(MI, 7, Fixups, STI);
 5393|      0|      Value |= op & UINT64_C(15);
 5394|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5395|      0|      break;
 5396|      0|    }
 5397|      0|    case ARM::VLD4DUPd16_UPD:
  ------------------
  |  Branch (5397:5): [True: 0, False: 29.4k]
  ------------------
 5398|      0|    case ARM::VLD4DUPd8_UPD:
  ------------------
  |  Branch (5398:5): [True: 0, False: 29.4k]
  ------------------
 5399|      0|    case ARM::VLD4DUPq16_UPD:
  ------------------
  |  Branch (5399:5): [True: 0, False: 29.4k]
  ------------------
 5400|      0|    case ARM::VLD4DUPq8_UPD: {
  ------------------
  |  Branch (5400:5): [True: 0, False: 29.4k]
  ------------------
 5401|       |      // op: Vd
 5402|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5403|      0|      Value |= (op & UINT64_C(16)) << 18;
 5404|      0|      Value |= (op & UINT64_C(15)) << 12;
 5405|       |      // op: Rn
 5406|      0|      op = getAddrMode6DupAddressOpValue(MI, 5, Fixups, STI);
 5407|      0|      Value |= (op & UINT64_C(15)) << 16;
 5408|      0|      Value |= op & UINT64_C(16);
 5409|       |      // op: Rm
 5410|      0|      op = getAddrMode6OffsetOpValue(MI, 7, Fixups, STI);
 5411|      0|      Value |= op & UINT64_C(15);
 5412|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5413|      0|      break;
 5414|      0|    }
 5415|      0|    case ARM::VLD1LNd32: {
  ------------------
  |  Branch (5415:5): [True: 0, False: 29.4k]
  ------------------
 5416|       |      // op: Vd
 5417|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5418|      0|      Value |= (op & UINT64_C(16)) << 18;
 5419|      0|      Value |= (op & UINT64_C(15)) << 12;
 5420|       |      // op: Rn
 5421|      0|      op = getAddrMode6OneLane32AddressOpValue(MI, 1, Fixups, STI);
 5422|      0|      Value |= (op & UINT64_C(15)) << 16;
 5423|      0|      Value |= op & UINT64_C(48);
 5424|       |      // op: lane
 5425|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 5426|      0|      Value |= (op & UINT64_C(1)) << 7;
 5427|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 5428|      0|      break;
 5429|      0|    }
 5430|      6|    case ARM::VMOVv16i8:
  ------------------
  |  Branch (5430:5): [True: 6, False: 29.4k]
  ------------------
 5431|      7|    case ARM::VMOVv1i64:
  ------------------
  |  Branch (5431:5): [True: 1, False: 29.4k]
  ------------------
 5432|      9|    case ARM::VMOVv2f32:
  ------------------
  |  Branch (5432:5): [True: 2, False: 29.4k]
  ------------------
 5433|     10|    case ARM::VMOVv2i64:
  ------------------
  |  Branch (5433:5): [True: 1, False: 29.4k]
  ------------------
 5434|     32|    case ARM::VMOVv4f32:
  ------------------
  |  Branch (5434:5): [True: 22, False: 29.4k]
  ------------------
 5435|     36|    case ARM::VMOVv8i8: {
  ------------------
  |  Branch (5435:5): [True: 4, False: 29.4k]
  ------------------
 5436|       |      // op: Vd
 5437|     36|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5438|     36|      Value |= (op & UINT64_C(16)) << 18;
 5439|     36|      Value |= (op & UINT64_C(15)) << 12;
 5440|       |      // op: SIMM
 5441|     36|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5442|     36|      Value |= (op & UINT64_C(128)) << 17;
 5443|     36|      Value |= (op & UINT64_C(112)) << 12;
 5444|     36|      Value |= op & UINT64_C(15);
 5445|     36|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5446|     36|      break;
 5447|     32|    }
 5448|      6|    case ARM::VBICiv2i32:
  ------------------
  |  Branch (5448:5): [True: 6, False: 29.4k]
  ------------------
 5449|     16|    case ARM::VBICiv4i32:
  ------------------
  |  Branch (5449:5): [True: 10, False: 29.4k]
  ------------------
 5450|     16|    case ARM::VORRiv2i32:
  ------------------
  |  Branch (5450:5): [True: 0, False: 29.4k]
  ------------------
 5451|     16|    case ARM::VORRiv4i32: {
  ------------------
  |  Branch (5451:5): [True: 0, False: 29.4k]
  ------------------
 5452|       |      // op: Vd
 5453|     16|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5454|     16|      Value |= (op & UINT64_C(16)) << 18;
 5455|     16|      Value |= (op & UINT64_C(15)) << 12;
 5456|       |      // op: SIMM
 5457|     16|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5458|     16|      Value |= (op & UINT64_C(128)) << 17;
 5459|     16|      Value |= (op & UINT64_C(112)) << 12;
 5460|     16|      Value |= op & UINT64_C(1536);
 5461|     16|      Value |= op & UINT64_C(15);
 5462|     16|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5463|     16|      break;
 5464|     16|    }
 5465|     76|    case ARM::VMOVv2i32:
  ------------------
  |  Branch (5465:5): [True: 76, False: 29.4k]
  ------------------
 5466|     95|    case ARM::VMOVv4i32:
  ------------------
  |  Branch (5466:5): [True: 19, False: 29.4k]
  ------------------
 5467|    158|    case ARM::VMVNv2i32:
  ------------------
  |  Branch (5467:5): [True: 63, False: 29.4k]
  ------------------
 5468|    159|    case ARM::VMVNv4i32: {
  ------------------
  |  Branch (5468:5): [True: 1, False: 29.4k]
  ------------------
 5469|       |      // op: Vd
 5470|    159|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5471|    159|      Value |= (op & UINT64_C(16)) << 18;
 5472|    159|      Value |= (op & UINT64_C(15)) << 12;
 5473|       |      // op: SIMM
 5474|    159|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5475|    159|      Value |= (op & UINT64_C(128)) << 17;
 5476|    159|      Value |= (op & UINT64_C(112)) << 12;
 5477|    159|      Value |= op & UINT64_C(3840);
 5478|    159|      Value |= op & UINT64_C(15);
 5479|    159|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5480|    159|      break;
 5481|    158|    }
 5482|      2|    case ARM::VBICiv4i16:
  ------------------
  |  Branch (5482:5): [True: 2, False: 29.4k]
  ------------------
 5483|      3|    case ARM::VBICiv8i16:
  ------------------
  |  Branch (5483:5): [True: 1, False: 29.4k]
  ------------------
 5484|     26|    case ARM::VMOVv4i16:
  ------------------
  |  Branch (5484:5): [True: 23, False: 29.4k]
  ------------------
 5485|     28|    case ARM::VMOVv8i16:
  ------------------
  |  Branch (5485:5): [True: 2, False: 29.4k]
  ------------------
 5486|     30|    case ARM::VMVNv4i16:
  ------------------
  |  Branch (5486:5): [True: 2, False: 29.4k]
  ------------------
 5487|     30|    case ARM::VMVNv8i16:
  ------------------
  |  Branch (5487:5): [True: 0, False: 29.4k]
  ------------------
 5488|     30|    case ARM::VORRiv4i16:
  ------------------
  |  Branch (5488:5): [True: 0, False: 29.4k]
  ------------------
 5489|     30|    case ARM::VORRiv8i16: {
  ------------------
  |  Branch (5489:5): [True: 0, False: 29.4k]
  ------------------
 5490|       |      // op: Vd
 5491|     30|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5492|     30|      Value |= (op & UINT64_C(16)) << 18;
 5493|     30|      Value |= (op & UINT64_C(15)) << 12;
 5494|       |      // op: SIMM
 5495|     30|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5496|     30|      Value |= (op & UINT64_C(128)) << 17;
 5497|     30|      Value |= (op & UINT64_C(112)) << 12;
 5498|     30|      Value |= op & UINT64_C(512);
 5499|     30|      Value |= op & UINT64_C(15);
 5500|     30|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5501|     30|      break;
 5502|     30|    }
 5503|      1|    case ARM::VQSHLsiv4i16:
  ------------------
  |  Branch (5503:5): [True: 1, False: 29.4k]
  ------------------
 5504|      2|    case ARM::VQSHLsiv8i16:
  ------------------
  |  Branch (5504:5): [True: 1, False: 29.4k]
  ------------------
 5505|      2|    case ARM::VQSHLsuv4i16:
  ------------------
  |  Branch (5505:5): [True: 0, False: 29.4k]
  ------------------
 5506|      2|    case ARM::VQSHLsuv8i16:
  ------------------
  |  Branch (5506:5): [True: 0, False: 29.4k]
  ------------------
 5507|      3|    case ARM::VQSHLuiv4i16:
  ------------------
  |  Branch (5507:5): [True: 1, False: 29.4k]
  ------------------
 5508|      4|    case ARM::VQSHLuiv8i16:
  ------------------
  |  Branch (5508:5): [True: 1, False: 29.4k]
  ------------------
 5509|      4|    case ARM::VSHLLsv4i32:
  ------------------
  |  Branch (5509:5): [True: 0, False: 29.4k]
  ------------------
 5510|      4|    case ARM::VSHLLuv4i32:
  ------------------
  |  Branch (5510:5): [True: 0, False: 29.4k]
  ------------------
 5511|      5|    case ARM::VSHLiv4i16:
  ------------------
  |  Branch (5511:5): [True: 1, False: 29.4k]
  ------------------
 5512|      6|    case ARM::VSHLiv8i16: {
  ------------------
  |  Branch (5512:5): [True: 1, False: 29.4k]
  ------------------
 5513|       |      // op: Vd
 5514|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5515|      6|      Value |= (op & UINT64_C(16)) << 18;
 5516|      6|      Value |= (op & UINT64_C(15)) << 12;
 5517|       |      // op: Vm
 5518|      6|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5519|      6|      Value |= (op & UINT64_C(16)) << 1;
 5520|      6|      Value |= op & UINT64_C(15);
 5521|       |      // op: SIMM
 5522|      6|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 5523|      6|      Value |= (op & UINT64_C(15)) << 16;
 5524|      6|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5525|      6|      break;
 5526|      5|    }
 5527|      1|    case ARM::VQSHLsiv2i32:
  ------------------
  |  Branch (5527:5): [True: 1, False: 29.4k]
  ------------------
 5528|      2|    case ARM::VQSHLsiv4i32:
  ------------------
  |  Branch (5528:5): [True: 1, False: 29.4k]
  ------------------
 5529|      2|    case ARM::VQSHLsuv2i32:
  ------------------
  |  Branch (5529:5): [True: 0, False: 29.4k]
  ------------------
 5530|      2|    case ARM::VQSHLsuv4i32:
  ------------------
  |  Branch (5530:5): [True: 0, False: 29.4k]
  ------------------
 5531|      3|    case ARM::VQSHLuiv2i32:
  ------------------
  |  Branch (5531:5): [True: 1, False: 29.4k]
  ------------------
 5532|      4|    case ARM::VQSHLuiv4i32:
  ------------------
  |  Branch (5532:5): [True: 1, False: 29.4k]
  ------------------
 5533|      4|    case ARM::VSHLLsv2i64:
  ------------------
  |  Branch (5533:5): [True: 0, False: 29.4k]
  ------------------
 5534|      4|    case ARM::VSHLLuv2i64:
  ------------------
  |  Branch (5534:5): [True: 0, False: 29.4k]
  ------------------
 5535|      6|    case ARM::VSHLiv2i32:
  ------------------
  |  Branch (5535:5): [True: 2, False: 29.4k]
  ------------------
 5536|      7|    case ARM::VSHLiv4i32: {
  ------------------
  |  Branch (5536:5): [True: 1, False: 29.4k]
  ------------------
 5537|       |      // op: Vd
 5538|      7|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5539|      7|      Value |= (op & UINT64_C(16)) << 18;
 5540|      7|      Value |= (op & UINT64_C(15)) << 12;
 5541|       |      // op: Vm
 5542|      7|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5543|      7|      Value |= (op & UINT64_C(16)) << 1;
 5544|      7|      Value |= op & UINT64_C(15);
 5545|       |      // op: SIMM
 5546|      7|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 5547|      7|      Value |= (op & UINT64_C(31)) << 16;
 5548|      7|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5549|      7|      break;
 5550|      6|    }
 5551|      1|    case ARM::VQSHLsiv1i64:
  ------------------
  |  Branch (5551:5): [True: 1, False: 29.4k]
  ------------------
 5552|      2|    case ARM::VQSHLsiv2i64:
  ------------------
  |  Branch (5552:5): [True: 1, False: 29.4k]
  ------------------
 5553|      2|    case ARM::VQSHLsuv1i64:
  ------------------
  |  Branch (5553:5): [True: 0, False: 29.4k]
  ------------------
 5554|      2|    case ARM::VQSHLsuv2i64:
  ------------------
  |  Branch (5554:5): [True: 0, False: 29.4k]
  ------------------
 5555|      3|    case ARM::VQSHLuiv1i64:
  ------------------
  |  Branch (5555:5): [True: 1, False: 29.4k]
  ------------------
 5556|      6|    case ARM::VQSHLuiv2i64:
  ------------------
  |  Branch (5556:5): [True: 3, False: 29.4k]
  ------------------
 5557|      7|    case ARM::VSHLiv1i64:
  ------------------
  |  Branch (5557:5): [True: 1, False: 29.4k]
  ------------------
 5558|      9|    case ARM::VSHLiv2i64: {
  ------------------
  |  Branch (5558:5): [True: 2, False: 29.4k]
  ------------------
 5559|       |      // op: Vd
 5560|      9|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5561|      9|      Value |= (op & UINT64_C(16)) << 18;
 5562|      9|      Value |= (op & UINT64_C(15)) << 12;
 5563|       |      // op: Vm
 5564|      9|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5565|      9|      Value |= (op & UINT64_C(16)) << 1;
 5566|      9|      Value |= op & UINT64_C(15);
 5567|       |      // op: SIMM
 5568|      9|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 5569|      9|      Value |= (op & UINT64_C(63)) << 16;
 5570|      9|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5571|      9|      break;
 5572|      7|    }
 5573|      1|    case ARM::VQSHLsiv16i8:
  ------------------
  |  Branch (5573:5): [True: 1, False: 29.4k]
  ------------------
 5574|      2|    case ARM::VQSHLsiv8i8:
  ------------------
  |  Branch (5574:5): [True: 1, False: 29.4k]
  ------------------
 5575|      2|    case ARM::VQSHLsuv16i8:
  ------------------
  |  Branch (5575:5): [True: 0, False: 29.4k]
  ------------------
 5576|      2|    case ARM::VQSHLsuv8i8:
  ------------------
  |  Branch (5576:5): [True: 0, False: 29.4k]
  ------------------
 5577|      3|    case ARM::VQSHLuiv16i8:
  ------------------
  |  Branch (5577:5): [True: 1, False: 29.4k]
  ------------------
 5578|      4|    case ARM::VQSHLuiv8i8:
  ------------------
  |  Branch (5578:5): [True: 1, False: 29.4k]
  ------------------
 5579|      4|    case ARM::VSHLLsv8i16:
  ------------------
  |  Branch (5579:5): [True: 0, False: 29.4k]
  ------------------
 5580|      4|    case ARM::VSHLLuv8i16:
  ------------------
  |  Branch (5580:5): [True: 0, False: 29.4k]
  ------------------
 5581|      5|    case ARM::VSHLiv16i8:
  ------------------
  |  Branch (5581:5): [True: 1, False: 29.4k]
  ------------------
 5582|      6|    case ARM::VSHLiv8i8: {
  ------------------
  |  Branch (5582:5): [True: 1, False: 29.4k]
  ------------------
 5583|       |      // op: Vd
 5584|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5585|      6|      Value |= (op & UINT64_C(16)) << 18;
 5586|      6|      Value |= (op & UINT64_C(15)) << 12;
 5587|       |      // op: Vm
 5588|      6|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5589|      6|      Value |= (op & UINT64_C(16)) << 1;
 5590|      6|      Value |= op & UINT64_C(15);
 5591|       |      // op: SIMM
 5592|      6|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 5593|      6|      Value |= (op & UINT64_C(7)) << 16;
 5594|      6|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5595|      6|      break;
 5596|      5|    }
 5597|      0|    case ARM::VCVTf2xsd:
  ------------------
  |  Branch (5597:5): [True: 0, False: 29.4k]
  ------------------
 5598|      0|    case ARM::VCVTf2xsq:
  ------------------
  |  Branch (5598:5): [True: 0, False: 29.4k]
  ------------------
 5599|      0|    case ARM::VCVTf2xud:
  ------------------
  |  Branch (5599:5): [True: 0, False: 29.4k]
  ------------------
 5600|      0|    case ARM::VCVTf2xuq:
  ------------------
  |  Branch (5600:5): [True: 0, False: 29.4k]
  ------------------
 5601|      0|    case ARM::VCVTh2xsd:
  ------------------
  |  Branch (5601:5): [True: 0, False: 29.4k]
  ------------------
 5602|      0|    case ARM::VCVTh2xsq:
  ------------------
  |  Branch (5602:5): [True: 0, False: 29.4k]
  ------------------
 5603|      0|    case ARM::VCVTh2xud:
  ------------------
  |  Branch (5603:5): [True: 0, False: 29.4k]
  ------------------
 5604|      0|    case ARM::VCVTh2xuq:
  ------------------
  |  Branch (5604:5): [True: 0, False: 29.4k]
  ------------------
 5605|      0|    case ARM::VCVTxs2fd:
  ------------------
  |  Branch (5605:5): [True: 0, False: 29.4k]
  ------------------
 5606|      0|    case ARM::VCVTxs2fq:
  ------------------
  |  Branch (5606:5): [True: 0, False: 29.4k]
  ------------------
 5607|      0|    case ARM::VCVTxs2hd:
  ------------------
  |  Branch (5607:5): [True: 0, False: 29.4k]
  ------------------
 5608|      0|    case ARM::VCVTxs2hq:
  ------------------
  |  Branch (5608:5): [True: 0, False: 29.4k]
  ------------------
 5609|      0|    case ARM::VCVTxu2fd:
  ------------------
  |  Branch (5609:5): [True: 0, False: 29.4k]
  ------------------
 5610|      0|    case ARM::VCVTxu2fq:
  ------------------
  |  Branch (5610:5): [True: 0, False: 29.4k]
  ------------------
 5611|      0|    case ARM::VCVTxu2hd:
  ------------------
  |  Branch (5611:5): [True: 0, False: 29.4k]
  ------------------
 5612|      0|    case ARM::VCVTxu2hq: {
  ------------------
  |  Branch (5612:5): [True: 0, False: 29.4k]
  ------------------
 5613|       |      // op: Vd
 5614|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5615|      0|      Value |= (op & UINT64_C(16)) << 18;
 5616|      0|      Value |= (op & UINT64_C(15)) << 12;
 5617|       |      // op: Vm
 5618|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5619|      0|      Value |= (op & UINT64_C(16)) << 1;
 5620|      0|      Value |= op & UINT64_C(15);
 5621|       |      // op: SIMM
 5622|      0|      op = getNEONVcvtImm32OpValue(MI, 2, Fixups, STI);
 5623|      0|      Value |= (op & UINT64_C(63)) << 16;
 5624|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5625|      0|      break;
 5626|      0|    }
 5627|      0|    case ARM::VQRSHRNsv4i16:
  ------------------
  |  Branch (5627:5): [True: 0, False: 29.4k]
  ------------------
 5628|      0|    case ARM::VQRSHRNuv4i16:
  ------------------
  |  Branch (5628:5): [True: 0, False: 29.4k]
  ------------------
 5629|      0|    case ARM::VQRSHRUNv4i16:
  ------------------
  |  Branch (5629:5): [True: 0, False: 29.4k]
  ------------------
 5630|      0|    case ARM::VQSHRNsv4i16:
  ------------------
  |  Branch (5630:5): [True: 0, False: 29.4k]
  ------------------
 5631|      0|    case ARM::VQSHRNuv4i16:
  ------------------
  |  Branch (5631:5): [True: 0, False: 29.4k]
  ------------------
 5632|      0|    case ARM::VQSHRUNv4i16:
  ------------------
  |  Branch (5632:5): [True: 0, False: 29.4k]
  ------------------
 5633|      0|    case ARM::VRSHRNv4i16:
  ------------------
  |  Branch (5633:5): [True: 0, False: 29.4k]
  ------------------
 5634|      1|    case ARM::VRSHRsv4i16:
  ------------------
  |  Branch (5634:5): [True: 1, False: 29.4k]
  ------------------
 5635|      2|    case ARM::VRSHRsv8i16:
  ------------------
  |  Branch (5635:5): [True: 1, False: 29.4k]
  ------------------
 5636|      3|    case ARM::VRSHRuv4i16:
  ------------------
  |  Branch (5636:5): [True: 1, False: 29.4k]
  ------------------
 5637|      4|    case ARM::VRSHRuv8i16:
  ------------------
  |  Branch (5637:5): [True: 1, False: 29.4k]
  ------------------
 5638|      4|    case ARM::VSHRNv4i16:
  ------------------
  |  Branch (5638:5): [True: 0, False: 29.4k]
  ------------------
 5639|      6|    case ARM::VSHRsv4i16:
  ------------------
  |  Branch (5639:5): [True: 2, False: 29.4k]
  ------------------
 5640|      7|    case ARM::VSHRsv8i16:
  ------------------
  |  Branch (5640:5): [True: 1, False: 29.4k]
  ------------------
 5641|      8|    case ARM::VSHRuv4i16:
  ------------------
  |  Branch (5641:5): [True: 1, False: 29.4k]
  ------------------
 5642|      9|    case ARM::VSHRuv8i16: {
  ------------------
  |  Branch (5642:5): [True: 1, False: 29.4k]
  ------------------
 5643|       |      // op: Vd
 5644|      9|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5645|      9|      Value |= (op & UINT64_C(16)) << 18;
 5646|      9|      Value |= (op & UINT64_C(15)) << 12;
 5647|       |      // op: Vm
 5648|      9|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5649|      9|      Value |= (op & UINT64_C(16)) << 1;
 5650|      9|      Value |= op & UINT64_C(15);
 5651|       |      // op: SIMM
 5652|      9|      op = getShiftRight16Imm(MI, 2, Fixups, STI);
 5653|      9|      Value |= (op & UINT64_C(15)) << 16;
 5654|      9|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5655|      9|      break;
 5656|      8|    }
 5657|      0|    case ARM::VQRSHRNsv2i32:
  ------------------
  |  Branch (5657:5): [True: 0, False: 29.4k]
  ------------------
 5658|      0|    case ARM::VQRSHRNuv2i32:
  ------------------
  |  Branch (5658:5): [True: 0, False: 29.4k]
  ------------------
 5659|      0|    case ARM::VQRSHRUNv2i32:
  ------------------
  |  Branch (5659:5): [True: 0, False: 29.4k]
  ------------------
 5660|      0|    case ARM::VQSHRNsv2i32:
  ------------------
  |  Branch (5660:5): [True: 0, False: 29.4k]
  ------------------
 5661|      0|    case ARM::VQSHRNuv2i32:
  ------------------
  |  Branch (5661:5): [True: 0, False: 29.4k]
  ------------------
 5662|      0|    case ARM::VQSHRUNv2i32:
  ------------------
  |  Branch (5662:5): [True: 0, False: 29.4k]
  ------------------
 5663|      0|    case ARM::VRSHRNv2i32:
  ------------------
  |  Branch (5663:5): [True: 0, False: 29.4k]
  ------------------
 5664|      1|    case ARM::VRSHRsv2i32:
  ------------------
  |  Branch (5664:5): [True: 1, False: 29.4k]
  ------------------
 5665|      2|    case ARM::VRSHRsv4i32:
  ------------------
  |  Branch (5665:5): [True: 1, False: 29.4k]
  ------------------
 5666|      3|    case ARM::VRSHRuv2i32:
  ------------------
  |  Branch (5666:5): [True: 1, False: 29.4k]
  ------------------
 5667|      4|    case ARM::VRSHRuv4i32:
  ------------------
  |  Branch (5667:5): [True: 1, False: 29.4k]
  ------------------
 5668|      4|    case ARM::VSHRNv2i32:
  ------------------
  |  Branch (5668:5): [True: 0, False: 29.4k]
  ------------------
 5669|      8|    case ARM::VSHRsv2i32:
  ------------------
  |  Branch (5669:5): [True: 4, False: 29.4k]
  ------------------
 5670|      9|    case ARM::VSHRsv4i32:
  ------------------
  |  Branch (5670:5): [True: 1, False: 29.4k]
  ------------------
 5671|     10|    case ARM::VSHRuv2i32:
  ------------------
  |  Branch (5671:5): [True: 1, False: 29.4k]
  ------------------
 5672|     11|    case ARM::VSHRuv4i32: {
  ------------------
  |  Branch (5672:5): [True: 1, False: 29.4k]
  ------------------
 5673|       |      // op: Vd
 5674|     11|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5675|     11|      Value |= (op & UINT64_C(16)) << 18;
 5676|     11|      Value |= (op & UINT64_C(15)) << 12;
 5677|       |      // op: Vm
 5678|     11|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5679|     11|      Value |= (op & UINT64_C(16)) << 1;
 5680|     11|      Value |= op & UINT64_C(15);
 5681|       |      // op: SIMM
 5682|     11|      op = getShiftRight32Imm(MI, 2, Fixups, STI);
 5683|     11|      Value |= (op & UINT64_C(31)) << 16;
 5684|     11|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5685|     11|      break;
 5686|     10|    }
 5687|      1|    case ARM::VRSHRsv1i64:
  ------------------
  |  Branch (5687:5): [True: 1, False: 29.4k]
  ------------------
 5688|      1|    case ARM::VRSHRsv2i64:
  ------------------
  |  Branch (5688:5): [True: 0, False: 29.4k]
  ------------------
 5689|      2|    case ARM::VRSHRuv1i64:
  ------------------
  |  Branch (5689:5): [True: 1, False: 29.4k]
  ------------------
 5690|      2|    case ARM::VRSHRuv2i64:
  ------------------
  |  Branch (5690:5): [True: 0, False: 29.4k]
  ------------------
 5691|      6|    case ARM::VSHRsv1i64:
  ------------------
  |  Branch (5691:5): [True: 4, False: 29.4k]
  ------------------
 5692|      7|    case ARM::VSHRsv2i64:
  ------------------
  |  Branch (5692:5): [True: 1, False: 29.4k]
  ------------------
 5693|      8|    case ARM::VSHRuv1i64:
  ------------------
  |  Branch (5693:5): [True: 1, False: 29.4k]
  ------------------
 5694|      9|    case ARM::VSHRuv2i64: {
  ------------------
  |  Branch (5694:5): [True: 1, False: 29.4k]
  ------------------
 5695|       |      // op: Vd
 5696|      9|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5697|      9|      Value |= (op & UINT64_C(16)) << 18;
 5698|      9|      Value |= (op & UINT64_C(15)) << 12;
 5699|       |      // op: Vm
 5700|      9|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5701|      9|      Value |= (op & UINT64_C(16)) << 1;
 5702|      9|      Value |= op & UINT64_C(15);
 5703|       |      // op: SIMM
 5704|      9|      op = getShiftRight64Imm(MI, 2, Fixups, STI);
 5705|      9|      Value |= (op & UINT64_C(63)) << 16;
 5706|      9|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5707|      9|      break;
 5708|      8|    }
 5709|      0|    case ARM::VQRSHRNsv8i8:
  ------------------
  |  Branch (5709:5): [True: 0, False: 29.4k]
  ------------------
 5710|      0|    case ARM::VQRSHRNuv8i8:
  ------------------
  |  Branch (5710:5): [True: 0, False: 29.4k]
  ------------------
 5711|      0|    case ARM::VQRSHRUNv8i8:
  ------------------
  |  Branch (5711:5): [True: 0, False: 29.4k]
  ------------------
 5712|      0|    case ARM::VQSHRNsv8i8:
  ------------------
  |  Branch (5712:5): [True: 0, False: 29.4k]
  ------------------
 5713|      0|    case ARM::VQSHRNuv8i8:
  ------------------
  |  Branch (5713:5): [True: 0, False: 29.4k]
  ------------------
 5714|      0|    case ARM::VQSHRUNv8i8:
  ------------------
  |  Branch (5714:5): [True: 0, False: 29.4k]
  ------------------
 5715|      0|    case ARM::VRSHRNv8i8:
  ------------------
  |  Branch (5715:5): [True: 0, False: 29.4k]
  ------------------
 5716|      1|    case ARM::VRSHRsv16i8:
  ------------------
  |  Branch (5716:5): [True: 1, False: 29.4k]
  ------------------
 5717|      2|    case ARM::VRSHRsv8i8:
  ------------------
  |  Branch (5717:5): [True: 1, False: 29.4k]
  ------------------
 5718|      3|    case ARM::VRSHRuv16i8:
  ------------------
  |  Branch (5718:5): [True: 1, False: 29.4k]
  ------------------
 5719|      4|    case ARM::VRSHRuv8i8:
  ------------------
  |  Branch (5719:5): [True: 1, False: 29.4k]
  ------------------
 5720|      4|    case ARM::VSHRNv8i8:
  ------------------
  |  Branch (5720:5): [True: 0, False: 29.4k]
  ------------------
 5721|      5|    case ARM::VSHRsv16i8:
  ------------------
  |  Branch (5721:5): [True: 1, False: 29.4k]
  ------------------
 5722|      6|    case ARM::VSHRsv8i8:
  ------------------
  |  Branch (5722:5): [True: 1, False: 29.4k]
  ------------------
 5723|      7|    case ARM::VSHRuv16i8:
  ------------------
  |  Branch (5723:5): [True: 1, False: 29.4k]
  ------------------
 5724|      8|    case ARM::VSHRuv8i8: {
  ------------------
  |  Branch (5724:5): [True: 1, False: 29.4k]
  ------------------
 5725|       |      // op: Vd
 5726|      8|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5727|      8|      Value |= (op & UINT64_C(16)) << 18;
 5728|      8|      Value |= (op & UINT64_C(15)) << 12;
 5729|       |      // op: Vm
 5730|      8|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5731|      8|      Value |= (op & UINT64_C(16)) << 1;
 5732|      8|      Value |= op & UINT64_C(15);
 5733|       |      // op: SIMM
 5734|      8|      op = getShiftRight8Imm(MI, 2, Fixups, STI);
 5735|      8|      Value |= (op & UINT64_C(7)) << 16;
 5736|      8|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5737|      8|      break;
 5738|      7|    }
 5739|      0|    case ARM::VDUPLN32d:
  ------------------
  |  Branch (5739:5): [True: 0, False: 29.4k]
  ------------------
 5740|      0|    case ARM::VDUPLN32q: {
  ------------------
  |  Branch (5740:5): [True: 0, False: 29.4k]
  ------------------
 5741|       |      // op: Vd
 5742|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5743|      0|      Value |= (op & UINT64_C(16)) << 18;
 5744|      0|      Value |= (op & UINT64_C(15)) << 12;
 5745|       |      // op: Vm
 5746|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5747|      0|      Value |= (op & UINT64_C(16)) << 1;
 5748|      0|      Value |= op & UINT64_C(15);
 5749|       |      // op: lane
 5750|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 5751|      0|      Value |= (op & UINT64_C(1)) << 19;
 5752|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5753|      0|      break;
 5754|      0|    }
 5755|      0|    case ARM::VDUPLN16d:
  ------------------
  |  Branch (5755:5): [True: 0, False: 29.4k]
  ------------------
 5756|      0|    case ARM::VDUPLN16q: {
  ------------------
  |  Branch (5756:5): [True: 0, False: 29.4k]
  ------------------
 5757|       |      // op: Vd
 5758|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5759|      0|      Value |= (op & UINT64_C(16)) << 18;
 5760|      0|      Value |= (op & UINT64_C(15)) << 12;
 5761|       |      // op: Vm
 5762|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5763|      0|      Value |= (op & UINT64_C(16)) << 1;
 5764|      0|      Value |= op & UINT64_C(15);
 5765|       |      // op: lane
 5766|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 5767|      0|      Value |= (op & UINT64_C(3)) << 18;
 5768|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5769|      0|      break;
 5770|      0|    }
 5771|      0|    case ARM::VDUPLN8d:
  ------------------
  |  Branch (5771:5): [True: 0, False: 29.4k]
  ------------------
 5772|      0|    case ARM::VDUPLN8q: {
  ------------------
  |  Branch (5772:5): [True: 0, False: 29.4k]
  ------------------
 5773|       |      // op: Vd
 5774|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5775|      0|      Value |= (op & UINT64_C(16)) << 18;
 5776|      0|      Value |= (op & UINT64_C(15)) << 12;
 5777|       |      // op: Vm
 5778|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5779|      0|      Value |= (op & UINT64_C(16)) << 1;
 5780|      0|      Value |= op & UINT64_C(15);
 5781|       |      // op: lane
 5782|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 5783|      0|      Value |= (op & UINT64_C(7)) << 17;
 5784|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5785|      0|      break;
 5786|      0|    }
 5787|      0|    case ARM::AESIMC:
  ------------------
  |  Branch (5787:5): [True: 0, False: 29.4k]
  ------------------
 5788|      0|    case ARM::AESMC:
  ------------------
  |  Branch (5788:5): [True: 0, False: 29.4k]
  ------------------
 5789|      0|    case ARM::SHA1H:
  ------------------
  |  Branch (5789:5): [True: 0, False: 29.4k]
  ------------------
 5790|      1|    case ARM::VABSfd:
  ------------------
  |  Branch (5790:5): [True: 1, False: 29.4k]
  ------------------
 5791|      3|    case ARM::VABSfq:
  ------------------
  |  Branch (5791:5): [True: 2, False: 29.4k]
  ------------------
 5792|      3|    case ARM::VABShd:
  ------------------
  |  Branch (5792:5): [True: 0, False: 29.4k]
  ------------------
 5793|      3|    case ARM::VABShq:
  ------------------
  |  Branch (5793:5): [True: 0, False: 29.4k]
  ------------------
 5794|      4|    case ARM::VABSv16i8:
  ------------------
  |  Branch (5794:5): [True: 1, False: 29.4k]
  ------------------
 5795|      5|    case ARM::VABSv2i32:
  ------------------
  |  Branch (5795:5): [True: 1, False: 29.4k]
  ------------------
 5796|      6|    case ARM::VABSv4i16:
  ------------------
  |  Branch (5796:5): [True: 1, False: 29.4k]
  ------------------
 5797|      9|    case ARM::VABSv4i32:
  ------------------
  |  Branch (5797:5): [True: 3, False: 29.4k]
  ------------------
 5798|     10|    case ARM::VABSv8i16:
  ------------------
  |  Branch (5798:5): [True: 1, False: 29.4k]
  ------------------
 5799|     12|    case ARM::VABSv8i8:
  ------------------
  |  Branch (5799:5): [True: 2, False: 29.4k]
  ------------------
 5800|     12|    case ARM::VCEQzv16i8:
  ------------------
  |  Branch (5800:5): [True: 0, False: 29.4k]
  ------------------
 5801|     12|    case ARM::VCEQzv2f32:
  ------------------
  |  Branch (5801:5): [True: 0, False: 29.4k]
  ------------------
 5802|     12|    case ARM::VCEQzv2i32:
  ------------------
  |  Branch (5802:5): [True: 0, False: 29.4k]
  ------------------
 5803|     12|    case ARM::VCEQzv4f16:
  ------------------
  |  Branch (5803:5): [True: 0, False: 29.4k]
  ------------------
 5804|     12|    case ARM::VCEQzv4f32:
  ------------------
  |  Branch (5804:5): [True: 0, False: 29.4k]
  ------------------
 5805|     12|    case ARM::VCEQzv4i16:
  ------------------
  |  Branch (5805:5): [True: 0, False: 29.4k]
  ------------------
 5806|     12|    case ARM::VCEQzv4i32:
  ------------------
  |  Branch (5806:5): [True: 0, False: 29.4k]
  ------------------
 5807|     12|    case ARM::VCEQzv8f16:
  ------------------
  |  Branch (5807:5): [True: 0, False: 29.4k]
  ------------------
 5808|     12|    case ARM::VCEQzv8i16:
  ------------------
  |  Branch (5808:5): [True: 0, False: 29.4k]
  ------------------
 5809|     12|    case ARM::VCEQzv8i8:
  ------------------
  |  Branch (5809:5): [True: 0, False: 29.4k]
  ------------------
 5810|     12|    case ARM::VCGEzv16i8:
  ------------------
  |  Branch (5810:5): [True: 0, False: 29.4k]
  ------------------
 5811|     12|    case ARM::VCGEzv2f32:
  ------------------
  |  Branch (5811:5): [True: 0, False: 29.4k]
  ------------------
 5812|     12|    case ARM::VCGEzv2i32:
  ------------------
  |  Branch (5812:5): [True: 0, False: 29.4k]
  ------------------
 5813|     12|    case ARM::VCGEzv4f16:
  ------------------
  |  Branch (5813:5): [True: 0, False: 29.4k]
  ------------------
 5814|     12|    case ARM::VCGEzv4f32:
  ------------------
  |  Branch (5814:5): [True: 0, False: 29.4k]
  ------------------
 5815|     12|    case ARM::VCGEzv4i16:
  ------------------
  |  Branch (5815:5): [True: 0, False: 29.4k]
  ------------------
 5816|     12|    case ARM::VCGEzv4i32:
  ------------------
  |  Branch (5816:5): [True: 0, False: 29.4k]
  ------------------
 5817|     12|    case ARM::VCGEzv8f16:
  ------------------
  |  Branch (5817:5): [True: 0, False: 29.4k]
  ------------------
 5818|     12|    case ARM::VCGEzv8i16:
  ------------------
  |  Branch (5818:5): [True: 0, False: 29.4k]
  ------------------
 5819|     12|    case ARM::VCGEzv8i8:
  ------------------
  |  Branch (5819:5): [True: 0, False: 29.4k]
  ------------------
 5820|     12|    case ARM::VCGTzv16i8:
  ------------------
  |  Branch (5820:5): [True: 0, False: 29.4k]
  ------------------
 5821|     12|    case ARM::VCGTzv2f32:
  ------------------
  |  Branch (5821:5): [True: 0, False: 29.4k]
  ------------------
 5822|     12|    case ARM::VCGTzv2i32:
  ------------------
  |  Branch (5822:5): [True: 0, False: 29.4k]
  ------------------
 5823|     12|    case ARM::VCGTzv4f16:
  ------------------
  |  Branch (5823:5): [True: 0, False: 29.4k]
  ------------------
 5824|     12|    case ARM::VCGTzv4f32:
  ------------------
  |  Branch (5824:5): [True: 0, False: 29.4k]
  ------------------
 5825|     12|    case ARM::VCGTzv4i16:
  ------------------
  |  Branch (5825:5): [True: 0, False: 29.4k]
  ------------------
 5826|     12|    case ARM::VCGTzv4i32:
  ------------------
  |  Branch (5826:5): [True: 0, False: 29.4k]
  ------------------
 5827|     12|    case ARM::VCGTzv8f16:
  ------------------
  |  Branch (5827:5): [True: 0, False: 29.4k]
  ------------------
 5828|     12|    case ARM::VCGTzv8i16:
  ------------------
  |  Branch (5828:5): [True: 0, False: 29.4k]
  ------------------
 5829|     12|    case ARM::VCGTzv8i8:
  ------------------
  |  Branch (5829:5): [True: 0, False: 29.4k]
  ------------------
 5830|     12|    case ARM::VCLEzv16i8:
  ------------------
  |  Branch (5830:5): [True: 0, False: 29.4k]
  ------------------
 5831|     12|    case ARM::VCLEzv2f32:
  ------------------
  |  Branch (5831:5): [True: 0, False: 29.4k]
  ------------------
 5832|     12|    case ARM::VCLEzv2i32:
  ------------------
  |  Branch (5832:5): [True: 0, False: 29.4k]
  ------------------
 5833|     12|    case ARM::VCLEzv4f16:
  ------------------
  |  Branch (5833:5): [True: 0, False: 29.4k]
  ------------------
 5834|     12|    case ARM::VCLEzv4f32:
  ------------------
  |  Branch (5834:5): [True: 0, False: 29.4k]
  ------------------
 5835|     12|    case ARM::VCLEzv4i16:
  ------------------
  |  Branch (5835:5): [True: 0, False: 29.4k]
  ------------------
 5836|     12|    case ARM::VCLEzv4i32:
  ------------------
  |  Branch (5836:5): [True: 0, False: 29.4k]
  ------------------
 5837|     12|    case ARM::VCLEzv8f16:
  ------------------
  |  Branch (5837:5): [True: 0, False: 29.4k]
  ------------------
 5838|     12|    case ARM::VCLEzv8i16:
  ------------------
  |  Branch (5838:5): [True: 0, False: 29.4k]
  ------------------
 5839|     12|    case ARM::VCLEzv8i8:
  ------------------
  |  Branch (5839:5): [True: 0, False: 29.4k]
  ------------------
 5840|     12|    case ARM::VCLSv16i8:
  ------------------
  |  Branch (5840:5): [True: 0, False: 29.4k]
  ------------------
 5841|     12|    case ARM::VCLSv2i32:
  ------------------
  |  Branch (5841:5): [True: 0, False: 29.4k]
  ------------------
 5842|     12|    case ARM::VCLSv4i16:
  ------------------
  |  Branch (5842:5): [True: 0, False: 29.4k]
  ------------------
 5843|     12|    case ARM::VCLSv4i32:
  ------------------
  |  Branch (5843:5): [True: 0, False: 29.4k]
  ------------------
 5844|     12|    case ARM::VCLSv8i16:
  ------------------
  |  Branch (5844:5): [True: 0, False: 29.4k]
  ------------------
 5845|     12|    case ARM::VCLSv8i8:
  ------------------
  |  Branch (5845:5): [True: 0, False: 29.4k]
  ------------------
 5846|     12|    case ARM::VCLTzv16i8:
  ------------------
  |  Branch (5846:5): [True: 0, False: 29.4k]
  ------------------
 5847|     12|    case ARM::VCLTzv2f32:
  ------------------
  |  Branch (5847:5): [True: 0, False: 29.4k]
  ------------------
 5848|     12|    case ARM::VCLTzv2i32:
  ------------------
  |  Branch (5848:5): [True: 0, False: 29.4k]
  ------------------
 5849|     12|    case ARM::VCLTzv4f16:
  ------------------
  |  Branch (5849:5): [True: 0, False: 29.4k]
  ------------------
 5850|     12|    case ARM::VCLTzv4f32:
  ------------------
  |  Branch (5850:5): [True: 0, False: 29.4k]
  ------------------
 5851|     12|    case ARM::VCLTzv4i16:
  ------------------
  |  Branch (5851:5): [True: 0, False: 29.4k]
  ------------------
 5852|     12|    case ARM::VCLTzv4i32:
  ------------------
  |  Branch (5852:5): [True: 0, False: 29.4k]
  ------------------
 5853|     12|    case ARM::VCLTzv8f16:
  ------------------
  |  Branch (5853:5): [True: 0, False: 29.4k]
  ------------------
 5854|     12|    case ARM::VCLTzv8i16:
  ------------------
  |  Branch (5854:5): [True: 0, False: 29.4k]
  ------------------
 5855|     12|    case ARM::VCLTzv8i8:
  ------------------
  |  Branch (5855:5): [True: 0, False: 29.4k]
  ------------------
 5856|     12|    case ARM::VCLZv16i8:
  ------------------
  |  Branch (5856:5): [True: 0, False: 29.4k]
  ------------------
 5857|     12|    case ARM::VCLZv2i32:
  ------------------
  |  Branch (5857:5): [True: 0, False: 29.4k]
  ------------------
 5858|     12|    case ARM::VCLZv4i16:
  ------------------
  |  Branch (5858:5): [True: 0, False: 29.4k]
  ------------------
 5859|     12|    case ARM::VCLZv4i32:
  ------------------
  |  Branch (5859:5): [True: 0, False: 29.4k]
  ------------------
 5860|     12|    case ARM::VCLZv8i16:
  ------------------
  |  Branch (5860:5): [True: 0, False: 29.4k]
  ------------------
 5861|     12|    case ARM::VCLZv8i8:
  ------------------
  |  Branch (5861:5): [True: 0, False: 29.4k]
  ------------------
 5862|     12|    case ARM::VCNTd:
  ------------------
  |  Branch (5862:5): [True: 0, False: 29.4k]
  ------------------
 5863|     12|    case ARM::VCNTq:
  ------------------
  |  Branch (5863:5): [True: 0, False: 29.4k]
  ------------------
 5864|     12|    case ARM::VCVTf2h:
  ------------------
  |  Branch (5864:5): [True: 0, False: 29.4k]
  ------------------
 5865|     12|    case ARM::VCVTf2sd:
  ------------------
  |  Branch (5865:5): [True: 0, False: 29.4k]
  ------------------
 5866|     12|    case ARM::VCVTf2sq:
  ------------------
  |  Branch (5866:5): [True: 0, False: 29.4k]
  ------------------
 5867|     12|    case ARM::VCVTf2ud:
  ------------------
  |  Branch (5867:5): [True: 0, False: 29.4k]
  ------------------
 5868|     12|    case ARM::VCVTf2uq:
  ------------------
  |  Branch (5868:5): [True: 0, False: 29.4k]
  ------------------
 5869|     12|    case ARM::VCVTh2f:
  ------------------
  |  Branch (5869:5): [True: 0, False: 29.4k]
  ------------------
 5870|     12|    case ARM::VCVTh2sd:
  ------------------
  |  Branch (5870:5): [True: 0, False: 29.4k]
  ------------------
 5871|     12|    case ARM::VCVTh2sq:
  ------------------
  |  Branch (5871:5): [True: 0, False: 29.4k]
  ------------------
 5872|     12|    case ARM::VCVTh2ud:
  ------------------
  |  Branch (5872:5): [True: 0, False: 29.4k]
  ------------------
 5873|     12|    case ARM::VCVTh2uq:
  ------------------
  |  Branch (5873:5): [True: 0, False: 29.4k]
  ------------------
 5874|     12|    case ARM::VCVTs2fd:
  ------------------
  |  Branch (5874:5): [True: 0, False: 29.4k]
  ------------------
 5875|     12|    case ARM::VCVTs2fq:
  ------------------
  |  Branch (5875:5): [True: 0, False: 29.4k]
  ------------------
 5876|     12|    case ARM::VCVTs2hd:
  ------------------
  |  Branch (5876:5): [True: 0, False: 29.4k]
  ------------------
 5877|     12|    case ARM::VCVTs2hq:
  ------------------
  |  Branch (5877:5): [True: 0, False: 29.4k]
  ------------------
 5878|     12|    case ARM::VCVTu2fd:
  ------------------
  |  Branch (5878:5): [True: 0, False: 29.4k]
  ------------------
 5879|     12|    case ARM::VCVTu2fq:
  ------------------
  |  Branch (5879:5): [True: 0, False: 29.4k]
  ------------------
 5880|     12|    case ARM::VCVTu2hd:
  ------------------
  |  Branch (5880:5): [True: 0, False: 29.4k]
  ------------------
 5881|     12|    case ARM::VCVTu2hq:
  ------------------
  |  Branch (5881:5): [True: 0, False: 29.4k]
  ------------------
 5882|     12|    case ARM::VMOVLsv2i64:
  ------------------
  |  Branch (5882:5): [True: 0, False: 29.4k]
  ------------------
 5883|     12|    case ARM::VMOVLsv4i32:
  ------------------
  |  Branch (5883:5): [True: 0, False: 29.4k]
  ------------------
 5884|     12|    case ARM::VMOVLsv8i16:
  ------------------
  |  Branch (5884:5): [True: 0, False: 29.4k]
  ------------------
 5885|     12|    case ARM::VMOVLuv2i64:
  ------------------
  |  Branch (5885:5): [True: 0, False: 29.4k]
  ------------------
 5886|     12|    case ARM::VMOVLuv4i32:
  ------------------
  |  Branch (5886:5): [True: 0, False: 29.4k]
  ------------------
 5887|     12|    case ARM::VMOVLuv8i16:
  ------------------
  |  Branch (5887:5): [True: 0, False: 29.4k]
  ------------------
 5888|     12|    case ARM::VMOVNv2i32:
  ------------------
  |  Branch (5888:5): [True: 0, False: 29.4k]
  ------------------
 5889|     12|    case ARM::VMOVNv4i16:
  ------------------
  |  Branch (5889:5): [True: 0, False: 29.4k]
  ------------------
 5890|     12|    case ARM::VMOVNv8i8:
  ------------------
  |  Branch (5890:5): [True: 0, False: 29.4k]
  ------------------
 5891|     13|    case ARM::VMVNd:
  ------------------
  |  Branch (5891:5): [True: 1, False: 29.4k]
  ------------------
 5892|     13|    case ARM::VMVNq:
  ------------------
  |  Branch (5892:5): [True: 0, False: 29.4k]
  ------------------
 5893|     13|    case ARM::VNEGf32q:
  ------------------
  |  Branch (5893:5): [True: 0, False: 29.4k]
  ------------------
 5894|     13|    case ARM::VNEGfd:
  ------------------
  |  Branch (5894:5): [True: 0, False: 29.4k]
  ------------------
 5895|     13|    case ARM::VNEGhd:
  ------------------
  |  Branch (5895:5): [True: 0, False: 29.4k]
  ------------------
 5896|     13|    case ARM::VNEGhq:
  ------------------
  |  Branch (5896:5): [True: 0, False: 29.4k]
  ------------------
 5897|     13|    case ARM::VNEGs16d:
  ------------------
  |  Branch (5897:5): [True: 0, False: 29.4k]
  ------------------
 5898|     13|    case ARM::VNEGs16q:
  ------------------
  |  Branch (5898:5): [True: 0, False: 29.4k]
  ------------------
 5899|     13|    case ARM::VNEGs32d:
  ------------------
  |  Branch (5899:5): [True: 0, False: 29.4k]
  ------------------
 5900|     13|    case ARM::VNEGs32q:
  ------------------
  |  Branch (5900:5): [True: 0, False: 29.4k]
  ------------------
 5901|     13|    case ARM::VNEGs8d:
  ------------------
  |  Branch (5901:5): [True: 0, False: 29.4k]
  ------------------
 5902|     13|    case ARM::VNEGs8q:
  ------------------
  |  Branch (5902:5): [True: 0, False: 29.4k]
  ------------------
 5903|     13|    case ARM::VPADDLsv16i8:
  ------------------
  |  Branch (5903:5): [True: 0, False: 29.4k]
  ------------------
 5904|     13|    case ARM::VPADDLsv2i32:
  ------------------
  |  Branch (5904:5): [True: 0, False: 29.4k]
  ------------------
 5905|     13|    case ARM::VPADDLsv4i16:
  ------------------
  |  Branch (5905:5): [True: 0, False: 29.4k]
  ------------------
 5906|     13|    case ARM::VPADDLsv4i32:
  ------------------
  |  Branch (5906:5): [True: 0, False: 29.4k]
  ------------------
 5907|     13|    case ARM::VPADDLsv8i16:
  ------------------
  |  Branch (5907:5): [True: 0, False: 29.4k]
  ------------------
 5908|     13|    case ARM::VPADDLsv8i8:
  ------------------
  |  Branch (5908:5): [True: 0, False: 29.4k]
  ------------------
 5909|     13|    case ARM::VPADDLuv16i8:
  ------------------
  |  Branch (5909:5): [True: 0, False: 29.4k]
  ------------------
 5910|     13|    case ARM::VPADDLuv2i32:
  ------------------
  |  Branch (5910:5): [True: 0, False: 29.4k]
  ------------------
 5911|     13|    case ARM::VPADDLuv4i16:
  ------------------
  |  Branch (5911:5): [True: 0, False: 29.4k]
  ------------------
 5912|     13|    case ARM::VPADDLuv4i32:
  ------------------
  |  Branch (5912:5): [True: 0, False: 29.4k]
  ------------------
 5913|     13|    case ARM::VPADDLuv8i16:
  ------------------
  |  Branch (5913:5): [True: 0, False: 29.4k]
  ------------------
 5914|     13|    case ARM::VPADDLuv8i8:
  ------------------
  |  Branch (5914:5): [True: 0, False: 29.4k]
  ------------------
 5915|     13|    case ARM::VQABSv16i8:
  ------------------
  |  Branch (5915:5): [True: 0, False: 29.4k]
  ------------------
 5916|     13|    case ARM::VQABSv2i32:
  ------------------
  |  Branch (5916:5): [True: 0, False: 29.4k]
  ------------------
 5917|     13|    case ARM::VQABSv4i16:
  ------------------
  |  Branch (5917:5): [True: 0, False: 29.4k]
  ------------------
 5918|     13|    case ARM::VQABSv4i32:
  ------------------
  |  Branch (5918:5): [True: 0, False: 29.4k]
  ------------------
 5919|     13|    case ARM::VQABSv8i16:
  ------------------
  |  Branch (5919:5): [True: 0, False: 29.4k]
  ------------------
 5920|     13|    case ARM::VQABSv8i8:
  ------------------
  |  Branch (5920:5): [True: 0, False: 29.4k]
  ------------------
 5921|     13|    case ARM::VQMOVNsuv2i32:
  ------------------
  |  Branch (5921:5): [True: 0, False: 29.4k]
  ------------------
 5922|     13|    case ARM::VQMOVNsuv4i16:
  ------------------
  |  Branch (5922:5): [True: 0, False: 29.4k]
  ------------------
 5923|     13|    case ARM::VQMOVNsuv8i8:
  ------------------
  |  Branch (5923:5): [True: 0, False: 29.4k]
  ------------------
 5924|     13|    case ARM::VQMOVNsv2i32:
  ------------------
  |  Branch (5924:5): [True: 0, False: 29.4k]
  ------------------
 5925|     13|    case ARM::VQMOVNsv4i16:
  ------------------
  |  Branch (5925:5): [True: 0, False: 29.4k]
  ------------------
 5926|     13|    case ARM::VQMOVNsv8i8:
  ------------------
  |  Branch (5926:5): [True: 0, False: 29.4k]
  ------------------
 5927|     13|    case ARM::VQMOVNuv2i32:
  ------------------
  |  Branch (5927:5): [True: 0, False: 29.4k]
  ------------------
 5928|     13|    case ARM::VQMOVNuv4i16:
  ------------------
  |  Branch (5928:5): [True: 0, False: 29.4k]
  ------------------
 5929|     13|    case ARM::VQMOVNuv8i8:
  ------------------
  |  Branch (5929:5): [True: 0, False: 29.4k]
  ------------------
 5930|     13|    case ARM::VQNEGv16i8:
  ------------------
  |  Branch (5930:5): [True: 0, False: 29.4k]
  ------------------
 5931|     13|    case ARM::VQNEGv2i32:
  ------------------
  |  Branch (5931:5): [True: 0, False: 29.4k]
  ------------------
 5932|     13|    case ARM::VQNEGv4i16:
  ------------------
  |  Branch (5932:5): [True: 0, False: 29.4k]
  ------------------
 5933|     13|    case ARM::VQNEGv4i32:
  ------------------
  |  Branch (5933:5): [True: 0, False: 29.4k]
  ------------------
 5934|     13|    case ARM::VQNEGv8i16:
  ------------------
  |  Branch (5934:5): [True: 0, False: 29.4k]
  ------------------
 5935|     13|    case ARM::VQNEGv8i8:
  ------------------
  |  Branch (5935:5): [True: 0, False: 29.4k]
  ------------------
 5936|     13|    case ARM::VRECPEd:
  ------------------
  |  Branch (5936:5): [True: 0, False: 29.4k]
  ------------------
 5937|     13|    case ARM::VRECPEfd:
  ------------------
  |  Branch (5937:5): [True: 0, False: 29.4k]
  ------------------
 5938|     13|    case ARM::VRECPEfq:
  ------------------
  |  Branch (5938:5): [True: 0, False: 29.4k]
  ------------------
 5939|     13|    case ARM::VRECPEhd:
  ------------------
  |  Branch (5939:5): [True: 0, False: 29.4k]
  ------------------
 5940|     13|    case ARM::VRECPEhq:
  ------------------
  |  Branch (5940:5): [True: 0, False: 29.4k]
  ------------------
 5941|     13|    case ARM::VRECPEq:
  ------------------
  |  Branch (5941:5): [True: 0, False: 29.4k]
  ------------------
 5942|     13|    case ARM::VREV16d8:
  ------------------
  |  Branch (5942:5): [True: 0, False: 29.4k]
  ------------------
 5943|     13|    case ARM::VREV16q8:
  ------------------
  |  Branch (5943:5): [True: 0, False: 29.4k]
  ------------------
 5944|     13|    case ARM::VREV32d16:
  ------------------
  |  Branch (5944:5): [True: 0, False: 29.4k]
  ------------------
 5945|     13|    case ARM::VREV32d8:
  ------------------
  |  Branch (5945:5): [True: 0, False: 29.4k]
  ------------------
 5946|     13|    case ARM::VREV32q16:
  ------------------
  |  Branch (5946:5): [True: 0, False: 29.4k]
  ------------------
 5947|     13|    case ARM::VREV32q8:
  ------------------
  |  Branch (5947:5): [True: 0, False: 29.4k]
  ------------------
 5948|     13|    case ARM::VREV64d16:
  ------------------
  |  Branch (5948:5): [True: 0, False: 29.4k]
  ------------------
 5949|     13|    case ARM::VREV64d32:
  ------------------
  |  Branch (5949:5): [True: 0, False: 29.4k]
  ------------------
 5950|     13|    case ARM::VREV64d8:
  ------------------
  |  Branch (5950:5): [True: 0, False: 29.4k]
  ------------------
 5951|     13|    case ARM::VREV64q16:
  ------------------
  |  Branch (5951:5): [True: 0, False: 29.4k]
  ------------------
 5952|     13|    case ARM::VREV64q32:
  ------------------
  |  Branch (5952:5): [True: 0, False: 29.4k]
  ------------------
 5953|     13|    case ARM::VREV64q8:
  ------------------
  |  Branch (5953:5): [True: 0, False: 29.4k]
  ------------------
 5954|     13|    case ARM::VRSQRTEd:
  ------------------
  |  Branch (5954:5): [True: 0, False: 29.4k]
  ------------------
 5955|     13|    case ARM::VRSQRTEfd:
  ------------------
  |  Branch (5955:5): [True: 0, False: 29.4k]
  ------------------
 5956|     13|    case ARM::VRSQRTEfq:
  ------------------
  |  Branch (5956:5): [True: 0, False: 29.4k]
  ------------------
 5957|     13|    case ARM::VRSQRTEhd:
  ------------------
  |  Branch (5957:5): [True: 0, False: 29.4k]
  ------------------
 5958|     13|    case ARM::VRSQRTEhq:
  ------------------
  |  Branch (5958:5): [True: 0, False: 29.4k]
  ------------------
 5959|     13|    case ARM::VRSQRTEq:
  ------------------
  |  Branch (5959:5): [True: 0, False: 29.4k]
  ------------------
 5960|     13|    case ARM::VSHLLi16:
  ------------------
  |  Branch (5960:5): [True: 0, False: 29.4k]
  ------------------
 5961|     13|    case ARM::VSHLLi32:
  ------------------
  |  Branch (5961:5): [True: 0, False: 29.4k]
  ------------------
 5962|     13|    case ARM::VSHLLi8:
  ------------------
  |  Branch (5962:5): [True: 0, False: 29.4k]
  ------------------
 5963|     13|    case ARM::VSWPd:
  ------------------
  |  Branch (5963:5): [True: 0, False: 29.4k]
  ------------------
 5964|     13|    case ARM::VSWPq:
  ------------------
  |  Branch (5964:5): [True: 0, False: 29.4k]
  ------------------
 5965|     13|    case ARM::VTRNd16:
  ------------------
  |  Branch (5965:5): [True: 0, False: 29.4k]
  ------------------
 5966|     13|    case ARM::VTRNd32:
  ------------------
  |  Branch (5966:5): [True: 0, False: 29.4k]
  ------------------
 5967|     13|    case ARM::VTRNd8:
  ------------------
  |  Branch (5967:5): [True: 0, False: 29.4k]
  ------------------
 5968|     13|    case ARM::VTRNq16:
  ------------------
  |  Branch (5968:5): [True: 0, False: 29.4k]
  ------------------
 5969|     13|    case ARM::VTRNq32:
  ------------------
  |  Branch (5969:5): [True: 0, False: 29.4k]
  ------------------
 5970|     13|    case ARM::VTRNq8:
  ------------------
  |  Branch (5970:5): [True: 0, False: 29.4k]
  ------------------
 5971|     13|    case ARM::VUZPd16:
  ------------------
  |  Branch (5971:5): [True: 0, False: 29.4k]
  ------------------
 5972|     13|    case ARM::VUZPd8:
  ------------------
  |  Branch (5972:5): [True: 0, False: 29.4k]
  ------------------
 5973|     13|    case ARM::VUZPq16:
  ------------------
  |  Branch (5973:5): [True: 0, False: 29.4k]
  ------------------
 5974|     13|    case ARM::VUZPq32:
  ------------------
  |  Branch (5974:5): [True: 0, False: 29.4k]
  ------------------
 5975|     13|    case ARM::VUZPq8:
  ------------------
  |  Branch (5975:5): [True: 0, False: 29.4k]
  ------------------
 5976|     13|    case ARM::VZIPd16:
  ------------------
  |  Branch (5976:5): [True: 0, False: 29.4k]
  ------------------
 5977|     13|    case ARM::VZIPd8:
  ------------------
  |  Branch (5977:5): [True: 0, False: 29.4k]
  ------------------
 5978|     13|    case ARM::VZIPq16:
  ------------------
  |  Branch (5978:5): [True: 0, False: 29.4k]
  ------------------
 5979|     13|    case ARM::VZIPq32:
  ------------------
  |  Branch (5979:5): [True: 0, False: 29.4k]
  ------------------
 5980|     13|    case ARM::VZIPq8: {
  ------------------
  |  Branch (5980:5): [True: 0, False: 29.4k]
  ------------------
 5981|       |      // op: Vd
 5982|     13|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 5983|     13|      Value |= (op & UINT64_C(16)) << 18;
 5984|     13|      Value |= (op & UINT64_C(15)) << 12;
 5985|       |      // op: Vm
 5986|     13|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 5987|     13|      Value |= (op & UINT64_C(16)) << 1;
 5988|     13|      Value |= op & UINT64_C(15);
 5989|     13|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 5990|     13|      break;
 5991|     13|    }
 5992|      0|    case ARM::VCVTANSDf:
  ------------------
  |  Branch (5992:5): [True: 0, False: 29.4k]
  ------------------
 5993|      0|    case ARM::VCVTANSDh:
  ------------------
  |  Branch (5993:5): [True: 0, False: 29.4k]
  ------------------
 5994|      0|    case ARM::VCVTANSQf:
  ------------------
  |  Branch (5994:5): [True: 0, False: 29.4k]
  ------------------
 5995|      0|    case ARM::VCVTANSQh:
  ------------------
  |  Branch (5995:5): [True: 0, False: 29.4k]
  ------------------
 5996|      0|    case ARM::VCVTANUDf:
  ------------------
  |  Branch (5996:5): [True: 0, False: 29.4k]
  ------------------
 5997|      0|    case ARM::VCVTANUDh:
  ------------------
  |  Branch (5997:5): [True: 0, False: 29.4k]
  ------------------
 5998|      0|    case ARM::VCVTANUQf:
  ------------------
  |  Branch (5998:5): [True: 0, False: 29.4k]
  ------------------
 5999|      0|    case ARM::VCVTANUQh:
  ------------------
  |  Branch (5999:5): [True: 0, False: 29.4k]
  ------------------
 6000|      0|    case ARM::VCVTMNSDf:
  ------------------
  |  Branch (6000:5): [True: 0, False: 29.4k]
  ------------------
 6001|      0|    case ARM::VCVTMNSDh:
  ------------------
  |  Branch (6001:5): [True: 0, False: 29.4k]
  ------------------
 6002|      0|    case ARM::VCVTMNSQf:
  ------------------
  |  Branch (6002:5): [True: 0, False: 29.4k]
  ------------------
 6003|      0|    case ARM::VCVTMNSQh:
  ------------------
  |  Branch (6003:5): [True: 0, False: 29.4k]
  ------------------
 6004|      0|    case ARM::VCVTMNUDf:
  ------------------
  |  Branch (6004:5): [True: 0, False: 29.4k]
  ------------------
 6005|      0|    case ARM::VCVTMNUDh:
  ------------------
  |  Branch (6005:5): [True: 0, False: 29.4k]
  ------------------
 6006|      0|    case ARM::VCVTMNUQf:
  ------------------
  |  Branch (6006:5): [True: 0, False: 29.4k]
  ------------------
 6007|      0|    case ARM::VCVTMNUQh:
  ------------------
  |  Branch (6007:5): [True: 0, False: 29.4k]
  ------------------
 6008|      0|    case ARM::VCVTNNSDf:
  ------------------
  |  Branch (6008:5): [True: 0, False: 29.4k]
  ------------------
 6009|      0|    case ARM::VCVTNNSDh:
  ------------------
  |  Branch (6009:5): [True: 0, False: 29.4k]
  ------------------
 6010|      0|    case ARM::VCVTNNSQf:
  ------------------
  |  Branch (6010:5): [True: 0, False: 29.4k]
  ------------------
 6011|      0|    case ARM::VCVTNNSQh:
  ------------------
  |  Branch (6011:5): [True: 0, False: 29.4k]
  ------------------
 6012|      0|    case ARM::VCVTNNUDf:
  ------------------
  |  Branch (6012:5): [True: 0, False: 29.4k]
  ------------------
 6013|      0|    case ARM::VCVTNNUDh:
  ------------------
  |  Branch (6013:5): [True: 0, False: 29.4k]
  ------------------
 6014|      0|    case ARM::VCVTNNUQf:
  ------------------
  |  Branch (6014:5): [True: 0, False: 29.4k]
  ------------------
 6015|      0|    case ARM::VCVTNNUQh:
  ------------------
  |  Branch (6015:5): [True: 0, False: 29.4k]
  ------------------
 6016|      0|    case ARM::VCVTPNSDf:
  ------------------
  |  Branch (6016:5): [True: 0, False: 29.4k]
  ------------------
 6017|      0|    case ARM::VCVTPNSDh:
  ------------------
  |  Branch (6017:5): [True: 0, False: 29.4k]
  ------------------
 6018|      0|    case ARM::VCVTPNSQf:
  ------------------
  |  Branch (6018:5): [True: 0, False: 29.4k]
  ------------------
 6019|      0|    case ARM::VCVTPNSQh:
  ------------------
  |  Branch (6019:5): [True: 0, False: 29.4k]
  ------------------
 6020|      0|    case ARM::VCVTPNUDf:
  ------------------
  |  Branch (6020:5): [True: 0, False: 29.4k]
  ------------------
 6021|      0|    case ARM::VCVTPNUDh:
  ------------------
  |  Branch (6021:5): [True: 0, False: 29.4k]
  ------------------
 6022|      0|    case ARM::VCVTPNUQf:
  ------------------
  |  Branch (6022:5): [True: 0, False: 29.4k]
  ------------------
 6023|      0|    case ARM::VCVTPNUQh:
  ------------------
  |  Branch (6023:5): [True: 0, False: 29.4k]
  ------------------
 6024|      0|    case ARM::VRINTANDf:
  ------------------
  |  Branch (6024:5): [True: 0, False: 29.4k]
  ------------------
 6025|      0|    case ARM::VRINTANDh:
  ------------------
  |  Branch (6025:5): [True: 0, False: 29.4k]
  ------------------
 6026|      0|    case ARM::VRINTANQf:
  ------------------
  |  Branch (6026:5): [True: 0, False: 29.4k]
  ------------------
 6027|      0|    case ARM::VRINTANQh:
  ------------------
  |  Branch (6027:5): [True: 0, False: 29.4k]
  ------------------
 6028|      0|    case ARM::VRINTMNDf:
  ------------------
  |  Branch (6028:5): [True: 0, False: 29.4k]
  ------------------
 6029|      0|    case ARM::VRINTMNDh:
  ------------------
  |  Branch (6029:5): [True: 0, False: 29.4k]
  ------------------
 6030|      0|    case ARM::VRINTMNQf:
  ------------------
  |  Branch (6030:5): [True: 0, False: 29.4k]
  ------------------
 6031|      0|    case ARM::VRINTMNQh:
  ------------------
  |  Branch (6031:5): [True: 0, False: 29.4k]
  ------------------
 6032|      0|    case ARM::VRINTNNDf:
  ------------------
  |  Branch (6032:5): [True: 0, False: 29.4k]
  ------------------
 6033|      0|    case ARM::VRINTNNDh:
  ------------------
  |  Branch (6033:5): [True: 0, False: 29.4k]
  ------------------
 6034|      0|    case ARM::VRINTNNQf:
  ------------------
  |  Branch (6034:5): [True: 0, False: 29.4k]
  ------------------
 6035|      0|    case ARM::VRINTNNQh:
  ------------------
  |  Branch (6035:5): [True: 0, False: 29.4k]
  ------------------
 6036|      0|    case ARM::VRINTPNDf:
  ------------------
  |  Branch (6036:5): [True: 0, False: 29.4k]
  ------------------
 6037|      0|    case ARM::VRINTPNDh:
  ------------------
  |  Branch (6037:5): [True: 0, False: 29.4k]
  ------------------
 6038|      0|    case ARM::VRINTPNQf:
  ------------------
  |  Branch (6038:5): [True: 0, False: 29.4k]
  ------------------
 6039|      0|    case ARM::VRINTPNQh:
  ------------------
  |  Branch (6039:5): [True: 0, False: 29.4k]
  ------------------
 6040|      0|    case ARM::VRINTXNDf:
  ------------------
  |  Branch (6040:5): [True: 0, False: 29.4k]
  ------------------
 6041|      0|    case ARM::VRINTXNDh:
  ------------------
  |  Branch (6041:5): [True: 0, False: 29.4k]
  ------------------
 6042|      0|    case ARM::VRINTXNQf:
  ------------------
  |  Branch (6042:5): [True: 0, False: 29.4k]
  ------------------
 6043|      0|    case ARM::VRINTXNQh:
  ------------------
  |  Branch (6043:5): [True: 0, False: 29.4k]
  ------------------
 6044|      0|    case ARM::VRINTZNDf:
  ------------------
  |  Branch (6044:5): [True: 0, False: 29.4k]
  ------------------
 6045|      0|    case ARM::VRINTZNDh:
  ------------------
  |  Branch (6045:5): [True: 0, False: 29.4k]
  ------------------
 6046|      0|    case ARM::VRINTZNQf:
  ------------------
  |  Branch (6046:5): [True: 0, False: 29.4k]
  ------------------
 6047|      0|    case ARM::VRINTZNQh: {
  ------------------
  |  Branch (6047:5): [True: 0, False: 29.4k]
  ------------------
 6048|       |      // op: Vd
 6049|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6050|      0|      Value |= (op & UINT64_C(16)) << 18;
 6051|      0|      Value |= (op & UINT64_C(15)) << 12;
 6052|       |      // op: Vm
 6053|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6054|      0|      Value |= (op & UINT64_C(16)) << 1;
 6055|      0|      Value |= op & UINT64_C(15);
 6056|      0|      Value = NEONThumb2V8PostEncoder(MI, Value, STI);
 6057|      0|      break;
 6058|      0|    }
 6059|      0|    case ARM::VSLIv4i16:
  ------------------
  |  Branch (6059:5): [True: 0, False: 29.4k]
  ------------------
 6060|      0|    case ARM::VSLIv8i16: {
  ------------------
  |  Branch (6060:5): [True: 0, False: 29.4k]
  ------------------
 6061|       |      // op: Vd
 6062|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6063|      0|      Value |= (op & UINT64_C(16)) << 18;
 6064|      0|      Value |= (op & UINT64_C(15)) << 12;
 6065|       |      // op: Vm
 6066|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6067|      0|      Value |= (op & UINT64_C(16)) << 1;
 6068|      0|      Value |= op & UINT64_C(15);
 6069|       |      // op: SIMM
 6070|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6071|      0|      Value |= (op & UINT64_C(15)) << 16;
 6072|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6073|      0|      break;
 6074|      0|    }
 6075|      0|    case ARM::VSLIv2i32:
  ------------------
  |  Branch (6075:5): [True: 0, False: 29.4k]
  ------------------
 6076|      0|    case ARM::VSLIv4i32: {
  ------------------
  |  Branch (6076:5): [True: 0, False: 29.4k]
  ------------------
 6077|       |      // op: Vd
 6078|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6079|      0|      Value |= (op & UINT64_C(16)) << 18;
 6080|      0|      Value |= (op & UINT64_C(15)) << 12;
 6081|       |      // op: Vm
 6082|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6083|      0|      Value |= (op & UINT64_C(16)) << 1;
 6084|      0|      Value |= op & UINT64_C(15);
 6085|       |      // op: SIMM
 6086|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6087|      0|      Value |= (op & UINT64_C(31)) << 16;
 6088|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6089|      0|      break;
 6090|      0|    }
 6091|      0|    case ARM::VSLIv1i64:
  ------------------
  |  Branch (6091:5): [True: 0, False: 29.4k]
  ------------------
 6092|      0|    case ARM::VSLIv2i64: {
  ------------------
  |  Branch (6092:5): [True: 0, False: 29.4k]
  ------------------
 6093|       |      // op: Vd
 6094|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6095|      0|      Value |= (op & UINT64_C(16)) << 18;
 6096|      0|      Value |= (op & UINT64_C(15)) << 12;
 6097|       |      // op: Vm
 6098|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6099|      0|      Value |= (op & UINT64_C(16)) << 1;
 6100|      0|      Value |= op & UINT64_C(15);
 6101|       |      // op: SIMM
 6102|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6103|      0|      Value |= (op & UINT64_C(63)) << 16;
 6104|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6105|      0|      break;
 6106|      0|    }
 6107|      0|    case ARM::VSLIv16i8:
  ------------------
  |  Branch (6107:5): [True: 0, False: 29.4k]
  ------------------
 6108|      0|    case ARM::VSLIv8i8: {
  ------------------
  |  Branch (6108:5): [True: 0, False: 29.4k]
  ------------------
 6109|       |      // op: Vd
 6110|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6111|      0|      Value |= (op & UINT64_C(16)) << 18;
 6112|      0|      Value |= (op & UINT64_C(15)) << 12;
 6113|       |      // op: Vm
 6114|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6115|      0|      Value |= (op & UINT64_C(16)) << 1;
 6116|      0|      Value |= op & UINT64_C(15);
 6117|       |      // op: SIMM
 6118|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6119|      0|      Value |= (op & UINT64_C(7)) << 16;
 6120|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6121|      0|      break;
 6122|      0|    }
 6123|      0|    case ARM::VRSRAsv4i16:
  ------------------
  |  Branch (6123:5): [True: 0, False: 29.4k]
  ------------------
 6124|      0|    case ARM::VRSRAsv8i16:
  ------------------
  |  Branch (6124:5): [True: 0, False: 29.4k]
  ------------------
 6125|      0|    case ARM::VRSRAuv4i16:
  ------------------
  |  Branch (6125:5): [True: 0, False: 29.4k]
  ------------------
 6126|      0|    case ARM::VRSRAuv8i16:
  ------------------
  |  Branch (6126:5): [True: 0, False: 29.4k]
  ------------------
 6127|      0|    case ARM::VSRAsv4i16:
  ------------------
  |  Branch (6127:5): [True: 0, False: 29.4k]
  ------------------
 6128|      0|    case ARM::VSRAsv8i16:
  ------------------
  |  Branch (6128:5): [True: 0, False: 29.4k]
  ------------------
 6129|      0|    case ARM::VSRAuv4i16:
  ------------------
  |  Branch (6129:5): [True: 0, False: 29.4k]
  ------------------
 6130|      0|    case ARM::VSRAuv8i16:
  ------------------
  |  Branch (6130:5): [True: 0, False: 29.4k]
  ------------------
 6131|      0|    case ARM::VSRIv4i16:
  ------------------
  |  Branch (6131:5): [True: 0, False: 29.4k]
  ------------------
 6132|      0|    case ARM::VSRIv8i16: {
  ------------------
  |  Branch (6132:5): [True: 0, False: 29.4k]
  ------------------
 6133|       |      // op: Vd
 6134|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6135|      0|      Value |= (op & UINT64_C(16)) << 18;
 6136|      0|      Value |= (op & UINT64_C(15)) << 12;
 6137|       |      // op: Vm
 6138|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6139|      0|      Value |= (op & UINT64_C(16)) << 1;
 6140|      0|      Value |= op & UINT64_C(15);
 6141|       |      // op: SIMM
 6142|      0|      op = getShiftRight16Imm(MI, 3, Fixups, STI);
 6143|      0|      Value |= (op & UINT64_C(15)) << 16;
 6144|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6145|      0|      break;
 6146|      0|    }
 6147|      0|    case ARM::VRSRAsv2i32:
  ------------------
  |  Branch (6147:5): [True: 0, False: 29.4k]
  ------------------
 6148|      0|    case ARM::VRSRAsv4i32:
  ------------------
  |  Branch (6148:5): [True: 0, False: 29.4k]
  ------------------
 6149|      0|    case ARM::VRSRAuv2i32:
  ------------------
  |  Branch (6149:5): [True: 0, False: 29.4k]
  ------------------
 6150|      0|    case ARM::VRSRAuv4i32:
  ------------------
  |  Branch (6150:5): [True: 0, False: 29.4k]
  ------------------
 6151|      0|    case ARM::VSRAsv2i32:
  ------------------
  |  Branch (6151:5): [True: 0, False: 29.4k]
  ------------------
 6152|      0|    case ARM::VSRAsv4i32:
  ------------------
  |  Branch (6152:5): [True: 0, False: 29.4k]
  ------------------
 6153|      0|    case ARM::VSRAuv2i32:
  ------------------
  |  Branch (6153:5): [True: 0, False: 29.4k]
  ------------------
 6154|      0|    case ARM::VSRAuv4i32:
  ------------------
  |  Branch (6154:5): [True: 0, False: 29.4k]
  ------------------
 6155|      0|    case ARM::VSRIv2i32:
  ------------------
  |  Branch (6155:5): [True: 0, False: 29.4k]
  ------------------
 6156|      0|    case ARM::VSRIv4i32: {
  ------------------
  |  Branch (6156:5): [True: 0, False: 29.4k]
  ------------------
 6157|       |      // op: Vd
 6158|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6159|      0|      Value |= (op & UINT64_C(16)) << 18;
 6160|      0|      Value |= (op & UINT64_C(15)) << 12;
 6161|       |      // op: Vm
 6162|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6163|      0|      Value |= (op & UINT64_C(16)) << 1;
 6164|      0|      Value |= op & UINT64_C(15);
 6165|       |      // op: SIMM
 6166|      0|      op = getShiftRight32Imm(MI, 3, Fixups, STI);
 6167|      0|      Value |= (op & UINT64_C(31)) << 16;
 6168|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6169|      0|      break;
 6170|      0|    }
 6171|      0|    case ARM::VRSRAsv1i64:
  ------------------
  |  Branch (6171:5): [True: 0, False: 29.4k]
  ------------------
 6172|      0|    case ARM::VRSRAsv2i64:
  ------------------
  |  Branch (6172:5): [True: 0, False: 29.4k]
  ------------------
 6173|      0|    case ARM::VRSRAuv1i64:
  ------------------
  |  Branch (6173:5): [True: 0, False: 29.4k]
  ------------------
 6174|      0|    case ARM::VRSRAuv2i64:
  ------------------
  |  Branch (6174:5): [True: 0, False: 29.4k]
  ------------------
 6175|      0|    case ARM::VSRAsv1i64:
  ------------------
  |  Branch (6175:5): [True: 0, False: 29.4k]
  ------------------
 6176|      0|    case ARM::VSRAsv2i64:
  ------------------
  |  Branch (6176:5): [True: 0, False: 29.4k]
  ------------------
 6177|      0|    case ARM::VSRAuv1i64:
  ------------------
  |  Branch (6177:5): [True: 0, False: 29.4k]
  ------------------
 6178|      0|    case ARM::VSRAuv2i64:
  ------------------
  |  Branch (6178:5): [True: 0, False: 29.4k]
  ------------------
 6179|      0|    case ARM::VSRIv1i64:
  ------------------
  |  Branch (6179:5): [True: 0, False: 29.4k]
  ------------------
 6180|      0|    case ARM::VSRIv2i64: {
  ------------------
  |  Branch (6180:5): [True: 0, False: 29.4k]
  ------------------
 6181|       |      // op: Vd
 6182|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6183|      0|      Value |= (op & UINT64_C(16)) << 18;
 6184|      0|      Value |= (op & UINT64_C(15)) << 12;
 6185|       |      // op: Vm
 6186|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6187|      0|      Value |= (op & UINT64_C(16)) << 1;
 6188|      0|      Value |= op & UINT64_C(15);
 6189|       |      // op: SIMM
 6190|      0|      op = getShiftRight64Imm(MI, 3, Fixups, STI);
 6191|      0|      Value |= (op & UINT64_C(63)) << 16;
 6192|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6193|      0|      break;
 6194|      0|    }
 6195|      0|    case ARM::VRSRAsv16i8:
  ------------------
  |  Branch (6195:5): [True: 0, False: 29.4k]
  ------------------
 6196|      0|    case ARM::VRSRAsv8i8:
  ------------------
  |  Branch (6196:5): [True: 0, False: 29.4k]
  ------------------
 6197|      0|    case ARM::VRSRAuv16i8:
  ------------------
  |  Branch (6197:5): [True: 0, False: 29.4k]
  ------------------
 6198|      0|    case ARM::VRSRAuv8i8:
  ------------------
  |  Branch (6198:5): [True: 0, False: 29.4k]
  ------------------
 6199|      0|    case ARM::VSRAsv16i8:
  ------------------
  |  Branch (6199:5): [True: 0, False: 29.4k]
  ------------------
 6200|      0|    case ARM::VSRAsv8i8:
  ------------------
  |  Branch (6200:5): [True: 0, False: 29.4k]
  ------------------
 6201|      0|    case ARM::VSRAuv16i8:
  ------------------
  |  Branch (6201:5): [True: 0, False: 29.4k]
  ------------------
 6202|      0|    case ARM::VSRAuv8i8:
  ------------------
  |  Branch (6202:5): [True: 0, False: 29.4k]
  ------------------
 6203|      0|    case ARM::VSRIv16i8:
  ------------------
  |  Branch (6203:5): [True: 0, False: 29.4k]
  ------------------
 6204|      0|    case ARM::VSRIv8i8: {
  ------------------
  |  Branch (6204:5): [True: 0, False: 29.4k]
  ------------------
 6205|       |      // op: Vd
 6206|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6207|      0|      Value |= (op & UINT64_C(16)) << 18;
 6208|      0|      Value |= (op & UINT64_C(15)) << 12;
 6209|       |      // op: Vm
 6210|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6211|      0|      Value |= (op & UINT64_C(16)) << 1;
 6212|      0|      Value |= op & UINT64_C(15);
 6213|       |      // op: SIMM
 6214|      0|      op = getShiftRight8Imm(MI, 3, Fixups, STI);
 6215|      0|      Value |= (op & UINT64_C(7)) << 16;
 6216|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6217|      0|      break;
 6218|      0|    }
 6219|      0|    case ARM::AESD:
  ------------------
  |  Branch (6219:5): [True: 0, False: 29.4k]
  ------------------
 6220|      0|    case ARM::AESE:
  ------------------
  |  Branch (6220:5): [True: 0, False: 29.4k]
  ------------------
 6221|      0|    case ARM::SHA1SU1:
  ------------------
  |  Branch (6221:5): [True: 0, False: 29.4k]
  ------------------
 6222|      0|    case ARM::SHA256SU0:
  ------------------
  |  Branch (6222:5): [True: 0, False: 29.4k]
  ------------------
 6223|      0|    case ARM::VPADALsv16i8:
  ------------------
  |  Branch (6223:5): [True: 0, False: 29.4k]
  ------------------
 6224|      0|    case ARM::VPADALsv2i32:
  ------------------
  |  Branch (6224:5): [True: 0, False: 29.4k]
  ------------------
 6225|      0|    case ARM::VPADALsv4i16:
  ------------------
  |  Branch (6225:5): [True: 0, False: 29.4k]
  ------------------
 6226|      0|    case ARM::VPADALsv4i32:
  ------------------
  |  Branch (6226:5): [True: 0, False: 29.4k]
  ------------------
 6227|      0|    case ARM::VPADALsv8i16:
  ------------------
  |  Branch (6227:5): [True: 0, False: 29.4k]
  ------------------
 6228|      0|    case ARM::VPADALsv8i8:
  ------------------
  |  Branch (6228:5): [True: 0, False: 29.4k]
  ------------------
 6229|      0|    case ARM::VPADALuv16i8:
  ------------------
  |  Branch (6229:5): [True: 0, False: 29.4k]
  ------------------
 6230|      0|    case ARM::VPADALuv2i32:
  ------------------
  |  Branch (6230:5): [True: 0, False: 29.4k]
  ------------------
 6231|      0|    case ARM::VPADALuv4i16:
  ------------------
  |  Branch (6231:5): [True: 0, False: 29.4k]
  ------------------
 6232|      0|    case ARM::VPADALuv4i32:
  ------------------
  |  Branch (6232:5): [True: 0, False: 29.4k]
  ------------------
 6233|      0|    case ARM::VPADALuv8i16:
  ------------------
  |  Branch (6233:5): [True: 0, False: 29.4k]
  ------------------
 6234|      0|    case ARM::VPADALuv8i8: {
  ------------------
  |  Branch (6234:5): [True: 0, False: 29.4k]
  ------------------
 6235|       |      // op: Vd
 6236|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6237|      0|      Value |= (op & UINT64_C(16)) << 18;
 6238|      0|      Value |= (op & UINT64_C(15)) << 12;
 6239|       |      // op: Vm
 6240|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6241|      0|      Value |= (op & UINT64_C(16)) << 1;
 6242|      0|      Value |= op & UINT64_C(15);
 6243|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6244|      0|      break;
 6245|      0|    }
 6246|      0|    case ARM::VEXTd32: {
  ------------------
  |  Branch (6246:5): [True: 0, False: 29.4k]
  ------------------
 6247|       |      // op: Vd
 6248|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6249|      0|      Value |= (op & UINT64_C(16)) << 18;
 6250|      0|      Value |= (op & UINT64_C(15)) << 12;
 6251|       |      // op: Vn
 6252|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6253|      0|      Value |= (op & UINT64_C(15)) << 16;
 6254|      0|      Value |= (op & UINT64_C(16)) << 3;
 6255|       |      // op: Vm
 6256|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6257|      0|      Value |= (op & UINT64_C(16)) << 1;
 6258|      0|      Value |= op & UINT64_C(15);
 6259|       |      // op: index
 6260|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6261|      0|      Value |= (op & UINT64_C(1)) << 10;
 6262|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6263|      0|      break;
 6264|      0|    }
 6265|      0|    case ARM::VEXTq64: {
  ------------------
  |  Branch (6265:5): [True: 0, False: 29.4k]
  ------------------
 6266|       |      // op: Vd
 6267|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6268|      0|      Value |= (op & UINT64_C(16)) << 18;
 6269|      0|      Value |= (op & UINT64_C(15)) << 12;
 6270|       |      // op: Vn
 6271|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6272|      0|      Value |= (op & UINT64_C(15)) << 16;
 6273|      0|      Value |= (op & UINT64_C(16)) << 3;
 6274|       |      // op: Vm
 6275|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6276|      0|      Value |= (op & UINT64_C(16)) << 1;
 6277|      0|      Value |= op & UINT64_C(15);
 6278|       |      // op: index
 6279|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6280|      0|      Value |= (op & UINT64_C(1)) << 11;
 6281|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6282|      0|      break;
 6283|      0|    }
 6284|      0|    case ARM::VEXTq8: {
  ------------------
  |  Branch (6284:5): [True: 0, False: 29.4k]
  ------------------
 6285|       |      // op: Vd
 6286|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6287|      0|      Value |= (op & UINT64_C(16)) << 18;
 6288|      0|      Value |= (op & UINT64_C(15)) << 12;
 6289|       |      // op: Vn
 6290|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6291|      0|      Value |= (op & UINT64_C(15)) << 16;
 6292|      0|      Value |= (op & UINT64_C(16)) << 3;
 6293|       |      // op: Vm
 6294|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6295|      0|      Value |= (op & UINT64_C(16)) << 1;
 6296|      0|      Value |= op & UINT64_C(15);
 6297|       |      // op: index
 6298|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6299|      0|      Value |= (op & UINT64_C(15)) << 8;
 6300|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6301|      0|      break;
 6302|      0|    }
 6303|      0|    case ARM::VEXTq32: {
  ------------------
  |  Branch (6303:5): [True: 0, False: 29.4k]
  ------------------
 6304|       |      // op: Vd
 6305|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6306|      0|      Value |= (op & UINT64_C(16)) << 18;
 6307|      0|      Value |= (op & UINT64_C(15)) << 12;
 6308|       |      // op: Vn
 6309|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6310|      0|      Value |= (op & UINT64_C(15)) << 16;
 6311|      0|      Value |= (op & UINT64_C(16)) << 3;
 6312|       |      // op: Vm
 6313|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6314|      0|      Value |= (op & UINT64_C(16)) << 1;
 6315|      0|      Value |= op & UINT64_C(15);
 6316|       |      // op: index
 6317|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6318|      0|      Value |= (op & UINT64_C(3)) << 10;
 6319|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6320|      0|      break;
 6321|      0|    }
 6322|      0|    case ARM::VEXTd16: {
  ------------------
  |  Branch (6322:5): [True: 0, False: 29.4k]
  ------------------
 6323|       |      // op: Vd
 6324|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6325|      0|      Value |= (op & UINT64_C(16)) << 18;
 6326|      0|      Value |= (op & UINT64_C(15)) << 12;
 6327|       |      // op: Vn
 6328|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6329|      0|      Value |= (op & UINT64_C(15)) << 16;
 6330|      0|      Value |= (op & UINT64_C(16)) << 3;
 6331|       |      // op: Vm
 6332|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6333|      0|      Value |= (op & UINT64_C(16)) << 1;
 6334|      0|      Value |= op & UINT64_C(15);
 6335|       |      // op: index
 6336|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6337|      0|      Value |= (op & UINT64_C(3)) << 9;
 6338|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6339|      0|      break;
 6340|      0|    }
 6341|      0|    case ARM::VEXTd8: {
  ------------------
  |  Branch (6341:5): [True: 0, False: 29.4k]
  ------------------
 6342|       |      // op: Vd
 6343|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6344|      0|      Value |= (op & UINT64_C(16)) << 18;
 6345|      0|      Value |= (op & UINT64_C(15)) << 12;
 6346|       |      // op: Vn
 6347|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6348|      0|      Value |= (op & UINT64_C(15)) << 16;
 6349|      0|      Value |= (op & UINT64_C(16)) << 3;
 6350|       |      // op: Vm
 6351|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6352|      0|      Value |= (op & UINT64_C(16)) << 1;
 6353|      0|      Value |= op & UINT64_C(15);
 6354|       |      // op: index
 6355|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6356|      0|      Value |= (op & UINT64_C(7)) << 8;
 6357|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6358|      0|      break;
 6359|      0|    }
 6360|      0|    case ARM::VEXTq16: {
  ------------------
  |  Branch (6360:5): [True: 0, False: 29.4k]
  ------------------
 6361|       |      // op: Vd
 6362|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6363|      0|      Value |= (op & UINT64_C(16)) << 18;
 6364|      0|      Value |= (op & UINT64_C(15)) << 12;
 6365|       |      // op: Vn
 6366|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6367|      0|      Value |= (op & UINT64_C(15)) << 16;
 6368|      0|      Value |= (op & UINT64_C(16)) << 3;
 6369|       |      // op: Vm
 6370|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6371|      0|      Value |= (op & UINT64_C(16)) << 1;
 6372|      0|      Value |= op & UINT64_C(15);
 6373|       |      // op: index
 6374|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6375|      0|      Value |= (op & UINT64_C(7)) << 9;
 6376|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6377|      0|      break;
 6378|      0|    }
 6379|      0|    case ARM::VABDLsv2i64:
  ------------------
  |  Branch (6379:5): [True: 0, False: 29.4k]
  ------------------
 6380|      0|    case ARM::VABDLsv4i32:
  ------------------
  |  Branch (6380:5): [True: 0, False: 29.4k]
  ------------------
 6381|      0|    case ARM::VABDLsv8i16:
  ------------------
  |  Branch (6381:5): [True: 0, False: 29.4k]
  ------------------
 6382|      0|    case ARM::VABDLuv2i64:
  ------------------
  |  Branch (6382:5): [True: 0, False: 29.4k]
  ------------------
 6383|      0|    case ARM::VABDLuv4i32:
  ------------------
  |  Branch (6383:5): [True: 0, False: 29.4k]
  ------------------
 6384|      0|    case ARM::VABDLuv8i16:
  ------------------
  |  Branch (6384:5): [True: 0, False: 29.4k]
  ------------------
 6385|      1|    case ARM::VABDfd:
  ------------------
  |  Branch (6385:5): [True: 1, False: 29.4k]
  ------------------
 6386|      2|    case ARM::VABDfq:
  ------------------
  |  Branch (6386:5): [True: 1, False: 29.4k]
  ------------------
 6387|      2|    case ARM::VABDhd:
  ------------------
  |  Branch (6387:5): [True: 0, False: 29.4k]
  ------------------
 6388|      2|    case ARM::VABDhq:
  ------------------
  |  Branch (6388:5): [True: 0, False: 29.4k]
  ------------------
 6389|      3|    case ARM::VABDsv16i8:
  ------------------
  |  Branch (6389:5): [True: 1, False: 29.4k]
  ------------------
 6390|      4|    case ARM::VABDsv2i32:
  ------------------
  |  Branch (6390:5): [True: 1, False: 29.4k]
  ------------------
 6391|      5|    case ARM::VABDsv4i16:
  ------------------
  |  Branch (6391:5): [True: 1, False: 29.4k]
  ------------------
 6392|      8|    case ARM::VABDsv4i32:
  ------------------
  |  Branch (6392:5): [True: 3, False: 29.4k]
  ------------------
 6393|      9|    case ARM::VABDsv8i16:
  ------------------
  |  Branch (6393:5): [True: 1, False: 29.4k]
  ------------------
 6394|     10|    case ARM::VABDsv8i8:
  ------------------
  |  Branch (6394:5): [True: 1, False: 29.4k]
  ------------------
 6395|     11|    case ARM::VABDuv16i8:
  ------------------
  |  Branch (6395:5): [True: 1, False: 29.4k]
  ------------------
 6396|     12|    case ARM::VABDuv2i32:
  ------------------
  |  Branch (6396:5): [True: 1, False: 29.4k]
  ------------------
 6397|     13|    case ARM::VABDuv4i16:
  ------------------
  |  Branch (6397:5): [True: 1, False: 29.4k]
  ------------------
 6398|     16|    case ARM::VABDuv4i32:
  ------------------
  |  Branch (6398:5): [True: 3, False: 29.4k]
  ------------------
 6399|     17|    case ARM::VABDuv8i16:
  ------------------
  |  Branch (6399:5): [True: 1, False: 29.4k]
  ------------------
 6400|     18|    case ARM::VABDuv8i8:
  ------------------
  |  Branch (6400:5): [True: 1, False: 29.4k]
  ------------------
 6401|     18|    case ARM::VACGEfd:
  ------------------
  |  Branch (6401:5): [True: 0, False: 29.4k]
  ------------------
 6402|     18|    case ARM::VACGEfq:
  ------------------
  |  Branch (6402:5): [True: 0, False: 29.4k]
  ------------------
 6403|     18|    case ARM::VACGEhd:
  ------------------
  |  Branch (6403:5): [True: 0, False: 29.4k]
  ------------------
 6404|     18|    case ARM::VACGEhq:
  ------------------
  |  Branch (6404:5): [True: 0, False: 29.4k]
  ------------------
 6405|     18|    case ARM::VACGTfd:
  ------------------
  |  Branch (6405:5): [True: 0, False: 29.4k]
  ------------------
 6406|     18|    case ARM::VACGTfq:
  ------------------
  |  Branch (6406:5): [True: 0, False: 29.4k]
  ------------------
 6407|     18|    case ARM::VACGThd:
  ------------------
  |  Branch (6407:5): [True: 0, False: 29.4k]
  ------------------
 6408|     18|    case ARM::VACGThq:
  ------------------
  |  Branch (6408:5): [True: 0, False: 29.4k]
  ------------------
 6409|     18|    case ARM::VADDHNv2i32:
  ------------------
  |  Branch (6409:5): [True: 0, False: 29.4k]
  ------------------
 6410|     18|    case ARM::VADDHNv4i16:
  ------------------
  |  Branch (6410:5): [True: 0, False: 29.4k]
  ------------------
 6411|     18|    case ARM::VADDHNv8i8:
  ------------------
  |  Branch (6411:5): [True: 0, False: 29.4k]
  ------------------
 6412|     18|    case ARM::VADDLsv2i64:
  ------------------
  |  Branch (6412:5): [True: 0, False: 29.4k]
  ------------------
 6413|     18|    case ARM::VADDLsv4i32:
  ------------------
  |  Branch (6413:5): [True: 0, False: 29.4k]
  ------------------
 6414|     18|    case ARM::VADDLsv8i16:
  ------------------
  |  Branch (6414:5): [True: 0, False: 29.4k]
  ------------------
 6415|     18|    case ARM::VADDLuv2i64:
  ------------------
  |  Branch (6415:5): [True: 0, False: 29.4k]
  ------------------
 6416|     18|    case ARM::VADDLuv4i32:
  ------------------
  |  Branch (6416:5): [True: 0, False: 29.4k]
  ------------------
 6417|     18|    case ARM::VADDLuv8i16:
  ------------------
  |  Branch (6417:5): [True: 0, False: 29.4k]
  ------------------
 6418|     18|    case ARM::VADDWsv2i64:
  ------------------
  |  Branch (6418:5): [True: 0, False: 29.4k]
  ------------------
 6419|     18|    case ARM::VADDWsv4i32:
  ------------------
  |  Branch (6419:5): [True: 0, False: 29.4k]
  ------------------
 6420|     18|    case ARM::VADDWsv8i16:
  ------------------
  |  Branch (6420:5): [True: 0, False: 29.4k]
  ------------------
 6421|     18|    case ARM::VADDWuv2i64:
  ------------------
  |  Branch (6421:5): [True: 0, False: 29.4k]
  ------------------
 6422|     18|    case ARM::VADDWuv4i32:
  ------------------
  |  Branch (6422:5): [True: 0, False: 29.4k]
  ------------------
 6423|     18|    case ARM::VADDWuv8i16:
  ------------------
  |  Branch (6423:5): [True: 0, False: 29.4k]
  ------------------
 6424|     18|    case ARM::VADDfd:
  ------------------
  |  Branch (6424:5): [True: 0, False: 29.4k]
  ------------------
 6425|     21|    case ARM::VADDfq:
  ------------------
  |  Branch (6425:5): [True: 3, False: 29.4k]
  ------------------
 6426|     21|    case ARM::VADDhd:
  ------------------
  |  Branch (6426:5): [True: 0, False: 29.4k]
  ------------------
 6427|     21|    case ARM::VADDhq:
  ------------------
  |  Branch (6427:5): [True: 0, False: 29.4k]
  ------------------
 6428|     22|    case ARM::VADDv16i8:
  ------------------
  |  Branch (6428:5): [True: 1, False: 29.4k]
  ------------------
 6429|     22|    case ARM::VADDv1i64:
  ------------------
  |  Branch (6429:5): [True: 0, False: 29.4k]
  ------------------
 6430|     23|    case ARM::VADDv2i32:
  ------------------
  |  Branch (6430:5): [True: 1, False: 29.4k]
  ------------------
 6431|     24|    case ARM::VADDv2i64:
  ------------------
  |  Branch (6431:5): [True: 1, False: 29.4k]
  ------------------
 6432|     25|    case ARM::VADDv4i16:
  ------------------
  |  Branch (6432:5): [True: 1, False: 29.4k]
  ------------------
 6433|     26|    case ARM::VADDv4i32:
  ------------------
  |  Branch (6433:5): [True: 1, False: 29.4k]
  ------------------
 6434|     27|    case ARM::VADDv8i16:
  ------------------
  |  Branch (6434:5): [True: 1, False: 29.4k]
  ------------------
 6435|     28|    case ARM::VADDv8i8:
  ------------------
  |  Branch (6435:5): [True: 1, False: 29.4k]
  ------------------
 6436|     30|    case ARM::VANDd:
  ------------------
  |  Branch (6436:5): [True: 2, False: 29.4k]
  ------------------
 6437|     36|    case ARM::VANDq:
  ------------------
  |  Branch (6437:5): [True: 6, False: 29.4k]
  ------------------
 6438|     37|    case ARM::VBICd:
  ------------------
  |  Branch (6438:5): [True: 1, False: 29.4k]
  ------------------
 6439|     38|    case ARM::VBICq:
  ------------------
  |  Branch (6439:5): [True: 1, False: 29.4k]
  ------------------
 6440|     38|    case ARM::VCEQfd:
  ------------------
  |  Branch (6440:5): [True: 0, False: 29.4k]
  ------------------
 6441|     38|    case ARM::VCEQfq:
  ------------------
  |  Branch (6441:5): [True: 0, False: 29.4k]
  ------------------
 6442|     38|    case ARM::VCEQhd:
  ------------------
  |  Branch (6442:5): [True: 0, False: 29.4k]
  ------------------
 6443|     38|    case ARM::VCEQhq:
  ------------------
  |  Branch (6443:5): [True: 0, False: 29.4k]
  ------------------
 6444|     38|    case ARM::VCEQv16i8:
  ------------------
  |  Branch (6444:5): [True: 0, False: 29.4k]
  ------------------
 6445|     38|    case ARM::VCEQv2i32:
  ------------------
  |  Branch (6445:5): [True: 0, False: 29.4k]
  ------------------
 6446|     38|    case ARM::VCEQv4i16:
  ------------------
  |  Branch (6446:5): [True: 0, False: 29.4k]
  ------------------
 6447|     38|    case ARM::VCEQv4i32:
  ------------------
  |  Branch (6447:5): [True: 0, False: 29.4k]
  ------------------
 6448|     38|    case ARM::VCEQv8i16:
  ------------------
  |  Branch (6448:5): [True: 0, False: 29.4k]
  ------------------
 6449|     38|    case ARM::VCEQv8i8:
  ------------------
  |  Branch (6449:5): [True: 0, False: 29.4k]
  ------------------
 6450|     38|    case ARM::VCGEfd:
  ------------------
  |  Branch (6450:5): [True: 0, False: 29.4k]
  ------------------
 6451|     38|    case ARM::VCGEfq:
  ------------------
  |  Branch (6451:5): [True: 0, False: 29.4k]
  ------------------
 6452|     38|    case ARM::VCGEhd:
  ------------------
  |  Branch (6452:5): [True: 0, False: 29.4k]
  ------------------
 6453|     38|    case ARM::VCGEhq:
  ------------------
  |  Branch (6453:5): [True: 0, False: 29.4k]
  ------------------
 6454|     38|    case ARM::VCGEsv16i8:
  ------------------
  |  Branch (6454:5): [True: 0, False: 29.4k]
  ------------------
 6455|     38|    case ARM::VCGEsv2i32:
  ------------------
  |  Branch (6455:5): [True: 0, False: 29.4k]
  ------------------
 6456|     38|    case ARM::VCGEsv4i16:
  ------------------
  |  Branch (6456:5): [True: 0, False: 29.4k]
  ------------------
 6457|     38|    case ARM::VCGEsv4i32:
  ------------------
  |  Branch (6457:5): [True: 0, False: 29.4k]
  ------------------
 6458|     38|    case ARM::VCGEsv8i16:
  ------------------
  |  Branch (6458:5): [True: 0, False: 29.4k]
  ------------------
 6459|     38|    case ARM::VCGEsv8i8:
  ------------------
  |  Branch (6459:5): [True: 0, False: 29.4k]
  ------------------
 6460|     38|    case ARM::VCGEuv16i8:
  ------------------
  |  Branch (6460:5): [True: 0, False: 29.4k]
  ------------------
 6461|     38|    case ARM::VCGEuv2i32:
  ------------------
  |  Branch (6461:5): [True: 0, False: 29.4k]
  ------------------
 6462|     38|    case ARM::VCGEuv4i16:
  ------------------
  |  Branch (6462:5): [True: 0, False: 29.4k]
  ------------------
 6463|     38|    case ARM::VCGEuv4i32:
  ------------------
  |  Branch (6463:5): [True: 0, False: 29.4k]
  ------------------
 6464|     38|    case ARM::VCGEuv8i16:
  ------------------
  |  Branch (6464:5): [True: 0, False: 29.4k]
  ------------------
 6465|     38|    case ARM::VCGEuv8i8:
  ------------------
  |  Branch (6465:5): [True: 0, False: 29.4k]
  ------------------
 6466|     38|    case ARM::VCGTfd:
  ------------------
  |  Branch (6466:5): [True: 0, False: 29.4k]
  ------------------
 6467|     38|    case ARM::VCGTfq:
  ------------------
  |  Branch (6467:5): [True: 0, False: 29.4k]
  ------------------
 6468|     38|    case ARM::VCGThd:
  ------------------
  |  Branch (6468:5): [True: 0, False: 29.4k]
  ------------------
 6469|     38|    case ARM::VCGThq:
  ------------------
  |  Branch (6469:5): [True: 0, False: 29.4k]
  ------------------
 6470|     38|    case ARM::VCGTsv16i8:
  ------------------
  |  Branch (6470:5): [True: 0, False: 29.4k]
  ------------------
 6471|     38|    case ARM::VCGTsv2i32:
  ------------------
  |  Branch (6471:5): [True: 0, False: 29.4k]
  ------------------
 6472|     38|    case ARM::VCGTsv4i16:
  ------------------
  |  Branch (6472:5): [True: 0, False: 29.4k]
  ------------------
 6473|     38|    case ARM::VCGTsv4i32:
  ------------------
  |  Branch (6473:5): [True: 0, False: 29.4k]
  ------------------
 6474|     38|    case ARM::VCGTsv8i16:
  ------------------
  |  Branch (6474:5): [True: 0, False: 29.4k]
  ------------------
 6475|     38|    case ARM::VCGTsv8i8:
  ------------------
  |  Branch (6475:5): [True: 0, False: 29.4k]
  ------------------
 6476|     38|    case ARM::VCGTuv16i8:
  ------------------
  |  Branch (6476:5): [True: 0, False: 29.4k]
  ------------------
 6477|     38|    case ARM::VCGTuv2i32:
  ------------------
  |  Branch (6477:5): [True: 0, False: 29.4k]
  ------------------
 6478|     38|    case ARM::VCGTuv4i16:
  ------------------
  |  Branch (6478:5): [True: 0, False: 29.4k]
  ------------------
 6479|     38|    case ARM::VCGTuv4i32:
  ------------------
  |  Branch (6479:5): [True: 0, False: 29.4k]
  ------------------
 6480|     38|    case ARM::VCGTuv8i16:
  ------------------
  |  Branch (6480:5): [True: 0, False: 29.4k]
  ------------------
 6481|     38|    case ARM::VCGTuv8i8:
  ------------------
  |  Branch (6481:5): [True: 0, False: 29.4k]
  ------------------
 6482|     38|    case ARM::VEORd:
  ------------------
  |  Branch (6482:5): [True: 0, False: 29.4k]
  ------------------
 6483|     38|    case ARM::VEORq:
  ------------------
  |  Branch (6483:5): [True: 0, False: 29.4k]
  ------------------
 6484|     38|    case ARM::VHADDsv16i8:
  ------------------
  |  Branch (6484:5): [True: 0, False: 29.4k]
  ------------------
 6485|     38|    case ARM::VHADDsv2i32:
  ------------------
  |  Branch (6485:5): [True: 0, False: 29.4k]
  ------------------
 6486|     38|    case ARM::VHADDsv4i16:
  ------------------
  |  Branch (6486:5): [True: 0, False: 29.4k]
  ------------------
 6487|     38|    case ARM::VHADDsv4i32:
  ------------------
  |  Branch (6487:5): [True: 0, False: 29.4k]
  ------------------
 6488|     38|    case ARM::VHADDsv8i16:
  ------------------
  |  Branch (6488:5): [True: 0, False: 29.4k]
  ------------------
 6489|     38|    case ARM::VHADDsv8i8:
  ------------------
  |  Branch (6489:5): [True: 0, False: 29.4k]
  ------------------
 6490|     38|    case ARM::VHADDuv16i8:
  ------------------
  |  Branch (6490:5): [True: 0, False: 29.4k]
  ------------------
 6491|     38|    case ARM::VHADDuv2i32:
  ------------------
  |  Branch (6491:5): [True: 0, False: 29.4k]
  ------------------
 6492|     38|    case ARM::VHADDuv4i16:
  ------------------
  |  Branch (6492:5): [True: 0, False: 29.4k]
  ------------------
 6493|     38|    case ARM::VHADDuv4i32:
  ------------------
  |  Branch (6493:5): [True: 0, False: 29.4k]
  ------------------
 6494|     38|    case ARM::VHADDuv8i16:
  ------------------
  |  Branch (6494:5): [True: 0, False: 29.4k]
  ------------------
 6495|     38|    case ARM::VHADDuv8i8:
  ------------------
  |  Branch (6495:5): [True: 0, False: 29.4k]
  ------------------
 6496|     38|    case ARM::VHSUBsv16i8:
  ------------------
  |  Branch (6496:5): [True: 0, False: 29.4k]
  ------------------
 6497|     38|    case ARM::VHSUBsv2i32:
  ------------------
  |  Branch (6497:5): [True: 0, False: 29.4k]
  ------------------
 6498|     38|    case ARM::VHSUBsv4i16:
  ------------------
  |  Branch (6498:5): [True: 0, False: 29.4k]
  ------------------
 6499|     38|    case ARM::VHSUBsv4i32:
  ------------------
  |  Branch (6499:5): [True: 0, False: 29.4k]
  ------------------
 6500|     38|    case ARM::VHSUBsv8i16:
  ------------------
  |  Branch (6500:5): [True: 0, False: 29.4k]
  ------------------
 6501|     38|    case ARM::VHSUBsv8i8:
  ------------------
  |  Branch (6501:5): [True: 0, False: 29.4k]
  ------------------
 6502|     38|    case ARM::VHSUBuv16i8:
  ------------------
  |  Branch (6502:5): [True: 0, False: 29.4k]
  ------------------
 6503|     38|    case ARM::VHSUBuv2i32:
  ------------------
  |  Branch (6503:5): [True: 0, False: 29.4k]
  ------------------
 6504|     38|    case ARM::VHSUBuv4i16:
  ------------------
  |  Branch (6504:5): [True: 0, False: 29.4k]
  ------------------
 6505|     38|    case ARM::VHSUBuv4i32:
  ------------------
  |  Branch (6505:5): [True: 0, False: 29.4k]
  ------------------
 6506|     38|    case ARM::VHSUBuv8i16:
  ------------------
  |  Branch (6506:5): [True: 0, False: 29.4k]
  ------------------
 6507|     38|    case ARM::VHSUBuv8i8:
  ------------------
  |  Branch (6507:5): [True: 0, False: 29.4k]
  ------------------
 6508|     38|    case ARM::VMAXfd:
  ------------------
  |  Branch (6508:5): [True: 0, False: 29.4k]
  ------------------
 6509|     38|    case ARM::VMAXfq:
  ------------------
  |  Branch (6509:5): [True: 0, False: 29.4k]
  ------------------
 6510|     38|    case ARM::VMAXhd:
  ------------------
  |  Branch (6510:5): [True: 0, False: 29.4k]
  ------------------
 6511|     38|    case ARM::VMAXhq:
  ------------------
  |  Branch (6511:5): [True: 0, False: 29.4k]
  ------------------
 6512|     38|    case ARM::VMAXsv16i8:
  ------------------
  |  Branch (6512:5): [True: 0, False: 29.4k]
  ------------------
 6513|     38|    case ARM::VMAXsv2i32:
  ------------------
  |  Branch (6513:5): [True: 0, False: 29.4k]
  ------------------
 6514|     38|    case ARM::VMAXsv4i16:
  ------------------
  |  Branch (6514:5): [True: 0, False: 29.4k]
  ------------------
 6515|     38|    case ARM::VMAXsv4i32:
  ------------------
  |  Branch (6515:5): [True: 0, False: 29.4k]
  ------------------
 6516|     38|    case ARM::VMAXsv8i16:
  ------------------
  |  Branch (6516:5): [True: 0, False: 29.4k]
  ------------------
 6517|     38|    case ARM::VMAXsv8i8:
  ------------------
  |  Branch (6517:5): [True: 0, False: 29.4k]
  ------------------
 6518|     38|    case ARM::VMAXuv16i8:
  ------------------
  |  Branch (6518:5): [True: 0, False: 29.4k]
  ------------------
 6519|     38|    case ARM::VMAXuv2i32:
  ------------------
  |  Branch (6519:5): [True: 0, False: 29.4k]
  ------------------
 6520|     38|    case ARM::VMAXuv4i16:
  ------------------
  |  Branch (6520:5): [True: 0, False: 29.4k]
  ------------------
 6521|     38|    case ARM::VMAXuv4i32:
  ------------------
  |  Branch (6521:5): [True: 0, False: 29.4k]
  ------------------
 6522|     38|    case ARM::VMAXuv8i16:
  ------------------
  |  Branch (6522:5): [True: 0, False: 29.4k]
  ------------------
 6523|     38|    case ARM::VMAXuv8i8:
  ------------------
  |  Branch (6523:5): [True: 0, False: 29.4k]
  ------------------
 6524|     38|    case ARM::VMINfd:
  ------------------
  |  Branch (6524:5): [True: 0, False: 29.4k]
  ------------------
 6525|     38|    case ARM::VMINfq:
  ------------------
  |  Branch (6525:5): [True: 0, False: 29.4k]
  ------------------
 6526|     38|    case ARM::VMINhd:
  ------------------
  |  Branch (6526:5): [True: 0, False: 29.4k]
  ------------------
 6527|     38|    case ARM::VMINhq:
  ------------------
  |  Branch (6527:5): [True: 0, False: 29.4k]
  ------------------
 6528|     38|    case ARM::VMINsv16i8:
  ------------------
  |  Branch (6528:5): [True: 0, False: 29.4k]
  ------------------
 6529|     38|    case ARM::VMINsv2i32:
  ------------------
  |  Branch (6529:5): [True: 0, False: 29.4k]
  ------------------
 6530|     38|    case ARM::VMINsv4i16:
  ------------------
  |  Branch (6530:5): [True: 0, False: 29.4k]
  ------------------
 6531|     38|    case ARM::VMINsv4i32:
  ------------------
  |  Branch (6531:5): [True: 0, False: 29.4k]
  ------------------
 6532|     38|    case ARM::VMINsv8i16:
  ------------------
  |  Branch (6532:5): [True: 0, False: 29.4k]
  ------------------
 6533|     38|    case ARM::VMINsv8i8:
  ------------------
  |  Branch (6533:5): [True: 0, False: 29.4k]
  ------------------
 6534|     38|    case ARM::VMINuv16i8:
  ------------------
  |  Branch (6534:5): [True: 0, False: 29.4k]
  ------------------
 6535|     38|    case ARM::VMINuv2i32:
  ------------------
  |  Branch (6535:5): [True: 0, False: 29.4k]
  ------------------
 6536|     38|    case ARM::VMINuv4i16:
  ------------------
  |  Branch (6536:5): [True: 0, False: 29.4k]
  ------------------
 6537|     38|    case ARM::VMINuv4i32:
  ------------------
  |  Branch (6537:5): [True: 0, False: 29.4k]
  ------------------
 6538|     38|    case ARM::VMINuv8i16:
  ------------------
  |  Branch (6538:5): [True: 0, False: 29.4k]
  ------------------
 6539|     38|    case ARM::VMINuv8i8:
  ------------------
  |  Branch (6539:5): [True: 0, False: 29.4k]
  ------------------
 6540|     38|    case ARM::VMULLp64:
  ------------------
  |  Branch (6540:5): [True: 0, False: 29.4k]
  ------------------
 6541|     38|    case ARM::VMULLp8:
  ------------------
  |  Branch (6541:5): [True: 0, False: 29.4k]
  ------------------
 6542|     38|    case ARM::VMULLsv2i64:
  ------------------
  |  Branch (6542:5): [True: 0, False: 29.4k]
  ------------------
 6543|     38|    case ARM::VMULLsv4i32:
  ------------------
  |  Branch (6543:5): [True: 0, False: 29.4k]
  ------------------
 6544|     38|    case ARM::VMULLsv8i16:
  ------------------
  |  Branch (6544:5): [True: 0, False: 29.4k]
  ------------------
 6545|     38|    case ARM::VMULLuv2i64:
  ------------------
  |  Branch (6545:5): [True: 0, False: 29.4k]
  ------------------
 6546|     38|    case ARM::VMULLuv4i32:
  ------------------
  |  Branch (6546:5): [True: 0, False: 29.4k]
  ------------------
 6547|     38|    case ARM::VMULLuv8i16:
  ------------------
  |  Branch (6547:5): [True: 0, False: 29.4k]
  ------------------
 6548|     38|    case ARM::VMULfd:
  ------------------
  |  Branch (6548:5): [True: 0, False: 29.4k]
  ------------------
 6549|     38|    case ARM::VMULfq:
  ------------------
  |  Branch (6549:5): [True: 0, False: 29.4k]
  ------------------
 6550|     38|    case ARM::VMULhd:
  ------------------
  |  Branch (6550:5): [True: 0, False: 29.4k]
  ------------------
 6551|     38|    case ARM::VMULhq:
  ------------------
  |  Branch (6551:5): [True: 0, False: 29.4k]
  ------------------
 6552|     39|    case ARM::VMULpd:
  ------------------
  |  Branch (6552:5): [True: 1, False: 29.4k]
  ------------------
 6553|     39|    case ARM::VMULpq:
  ------------------
  |  Branch (6553:5): [True: 0, False: 29.4k]
  ------------------
 6554|     39|    case ARM::VMULv16i8:
  ------------------
  |  Branch (6554:5): [True: 0, False: 29.4k]
  ------------------
 6555|     40|    case ARM::VMULv2i32:
  ------------------
  |  Branch (6555:5): [True: 1, False: 29.4k]
  ------------------
 6556|     41|    case ARM::VMULv4i16:
  ------------------
  |  Branch (6556:5): [True: 1, False: 29.4k]
  ------------------
 6557|     41|    case ARM::VMULv4i32:
  ------------------
  |  Branch (6557:5): [True: 0, False: 29.4k]
  ------------------
 6558|     41|    case ARM::VMULv8i16:
  ------------------
  |  Branch (6558:5): [True: 0, False: 29.4k]
  ------------------
 6559|     42|    case ARM::VMULv8i8:
  ------------------
  |  Branch (6559:5): [True: 1, False: 29.4k]
  ------------------
 6560|     42|    case ARM::VORNd:
  ------------------
  |  Branch (6560:5): [True: 0, False: 29.4k]
  ------------------
 6561|     42|    case ARM::VORNq:
  ------------------
  |  Branch (6561:5): [True: 0, False: 29.4k]
  ------------------
 6562|     62|    case ARM::VORRd:
  ------------------
  |  Branch (6562:5): [True: 20, False: 29.4k]
  ------------------
 6563|     72|    case ARM::VORRq:
  ------------------
  |  Branch (6563:5): [True: 10, False: 29.4k]
  ------------------
 6564|     72|    case ARM::VPADDf:
  ------------------
  |  Branch (6564:5): [True: 0, False: 29.4k]
  ------------------
 6565|     72|    case ARM::VPADDh:
  ------------------
  |  Branch (6565:5): [True: 0, False: 29.4k]
  ------------------
 6566|     72|    case ARM::VPADDi16:
  ------------------
  |  Branch (6566:5): [True: 0, False: 29.4k]
  ------------------
 6567|     72|    case ARM::VPADDi32:
  ------------------
  |  Branch (6567:5): [True: 0, False: 29.4k]
  ------------------
 6568|     72|    case ARM::VPADDi8:
  ------------------
  |  Branch (6568:5): [True: 0, False: 29.4k]
  ------------------
 6569|     72|    case ARM::VPMAXf:
  ------------------
  |  Branch (6569:5): [True: 0, False: 29.4k]
  ------------------
 6570|     72|    case ARM::VPMAXh:
  ------------------
  |  Branch (6570:5): [True: 0, False: 29.4k]
  ------------------
 6571|     72|    case ARM::VPMAXs16:
  ------------------
  |  Branch (6571:5): [True: 0, False: 29.4k]
  ------------------
 6572|     72|    case ARM::VPMAXs32:
  ------------------
  |  Branch (6572:5): [True: 0, False: 29.4k]
  ------------------
 6573|     72|    case ARM::VPMAXs8:
  ------------------
  |  Branch (6573:5): [True: 0, False: 29.4k]
  ------------------
 6574|     72|    case ARM::VPMAXu16:
  ------------------
  |  Branch (6574:5): [True: 0, False: 29.4k]
  ------------------
 6575|     72|    case ARM::VPMAXu32:
  ------------------
  |  Branch (6575:5): [True: 0, False: 29.4k]
  ------------------
 6576|     72|    case ARM::VPMAXu8:
  ------------------
  |  Branch (6576:5): [True: 0, False: 29.4k]
  ------------------
 6577|     72|    case ARM::VPMINf:
  ------------------
  |  Branch (6577:5): [True: 0, False: 29.4k]
  ------------------
 6578|     72|    case ARM::VPMINh:
  ------------------
  |  Branch (6578:5): [True: 0, False: 29.4k]
  ------------------
 6579|     72|    case ARM::VPMINs16:
  ------------------
  |  Branch (6579:5): [True: 0, False: 29.4k]
  ------------------
 6580|     72|    case ARM::VPMINs32:
  ------------------
  |  Branch (6580:5): [True: 0, False: 29.4k]
  ------------------
 6581|     72|    case ARM::VPMINs8:
  ------------------
  |  Branch (6581:5): [True: 0, False: 29.4k]
  ------------------
 6582|     72|    case ARM::VPMINu16:
  ------------------
  |  Branch (6582:5): [True: 0, False: 29.4k]
  ------------------
 6583|     72|    case ARM::VPMINu32:
  ------------------
  |  Branch (6583:5): [True: 0, False: 29.4k]
  ------------------
 6584|     72|    case ARM::VPMINu8:
  ------------------
  |  Branch (6584:5): [True: 0, False: 29.4k]
  ------------------
 6585|     72|    case ARM::VQADDsv16i8:
  ------------------
  |  Branch (6585:5): [True: 0, False: 29.4k]
  ------------------
 6586|     72|    case ARM::VQADDsv1i64:
  ------------------
  |  Branch (6586:5): [True: 0, False: 29.4k]
  ------------------
 6587|     72|    case ARM::VQADDsv2i32:
  ------------------
  |  Branch (6587:5): [True: 0, False: 29.4k]
  ------------------
 6588|     72|    case ARM::VQADDsv2i64:
  ------------------
  |  Branch (6588:5): [True: 0, False: 29.4k]
  ------------------
 6589|     72|    case ARM::VQADDsv4i16:
  ------------------
  |  Branch (6589:5): [True: 0, False: 29.4k]
  ------------------
 6590|     72|    case ARM::VQADDsv4i32:
  ------------------
  |  Branch (6590:5): [True: 0, False: 29.4k]
  ------------------
 6591|     72|    case ARM::VQADDsv8i16:
  ------------------
  |  Branch (6591:5): [True: 0, False: 29.4k]
  ------------------
 6592|     72|    case ARM::VQADDsv8i8:
  ------------------
  |  Branch (6592:5): [True: 0, False: 29.4k]
  ------------------
 6593|     72|    case ARM::VQADDuv16i8:
  ------------------
  |  Branch (6593:5): [True: 0, False: 29.4k]
  ------------------
 6594|     72|    case ARM::VQADDuv1i64:
  ------------------
  |  Branch (6594:5): [True: 0, False: 29.4k]
  ------------------
 6595|     72|    case ARM::VQADDuv2i32:
  ------------------
  |  Branch (6595:5): [True: 0, False: 29.4k]
  ------------------
 6596|     72|    case ARM::VQADDuv2i64:
  ------------------
  |  Branch (6596:5): [True: 0, False: 29.4k]
  ------------------
 6597|     72|    case ARM::VQADDuv4i16:
  ------------------
  |  Branch (6597:5): [True: 0, False: 29.4k]
  ------------------
 6598|     72|    case ARM::VQADDuv4i32:
  ------------------
  |  Branch (6598:5): [True: 0, False: 29.4k]
  ------------------
 6599|     72|    case ARM::VQADDuv8i16:
  ------------------
  |  Branch (6599:5): [True: 0, False: 29.4k]
  ------------------
 6600|     72|    case ARM::VQADDuv8i8:
  ------------------
  |  Branch (6600:5): [True: 0, False: 29.4k]
  ------------------
 6601|     72|    case ARM::VQDMULHv2i32:
  ------------------
  |  Branch (6601:5): [True: 0, False: 29.4k]
  ------------------
 6602|     72|    case ARM::VQDMULHv4i16:
  ------------------
  |  Branch (6602:5): [True: 0, False: 29.4k]
  ------------------
 6603|     72|    case ARM::VQDMULHv4i32:
  ------------------
  |  Branch (6603:5): [True: 0, False: 29.4k]
  ------------------
 6604|     72|    case ARM::VQDMULHv8i16:
  ------------------
  |  Branch (6604:5): [True: 0, False: 29.4k]
  ------------------
 6605|     72|    case ARM::VQDMULLv2i64:
  ------------------
  |  Branch (6605:5): [True: 0, False: 29.4k]
  ------------------
 6606|     72|    case ARM::VQDMULLv4i32:
  ------------------
  |  Branch (6606:5): [True: 0, False: 29.4k]
  ------------------
 6607|     72|    case ARM::VQRDMULHv2i32:
  ------------------
  |  Branch (6607:5): [True: 0, False: 29.4k]
  ------------------
 6608|     72|    case ARM::VQRDMULHv4i16:
  ------------------
  |  Branch (6608:5): [True: 0, False: 29.4k]
  ------------------
 6609|     72|    case ARM::VQRDMULHv4i32:
  ------------------
  |  Branch (6609:5): [True: 0, False: 29.4k]
  ------------------
 6610|     72|    case ARM::VQRDMULHv8i16:
  ------------------
  |  Branch (6610:5): [True: 0, False: 29.4k]
  ------------------
 6611|     72|    case ARM::VQSUBsv16i8:
  ------------------
  |  Branch (6611:5): [True: 0, False: 29.4k]
  ------------------
 6612|     72|    case ARM::VQSUBsv1i64:
  ------------------
  |  Branch (6612:5): [True: 0, False: 29.4k]
  ------------------
 6613|     72|    case ARM::VQSUBsv2i32:
  ------------------
  |  Branch (6613:5): [True: 0, False: 29.4k]
  ------------------
 6614|     72|    case ARM::VQSUBsv2i64:
  ------------------
  |  Branch (6614:5): [True: 0, False: 29.4k]
  ------------------
 6615|     72|    case ARM::VQSUBsv4i16:
  ------------------
  |  Branch (6615:5): [True: 0, False: 29.4k]
  ------------------
 6616|     72|    case ARM::VQSUBsv4i32:
  ------------------
  |  Branch (6616:5): [True: 0, False: 29.4k]
  ------------------
 6617|     72|    case ARM::VQSUBsv8i16:
  ------------------
  |  Branch (6617:5): [True: 0, False: 29.4k]
  ------------------
 6618|     72|    case ARM::VQSUBsv8i8:
  ------------------
  |  Branch (6618:5): [True: 0, False: 29.4k]
  ------------------
 6619|     72|    case ARM::VQSUBuv16i8:
  ------------------
  |  Branch (6619:5): [True: 0, False: 29.4k]
  ------------------
 6620|     72|    case ARM::VQSUBuv1i64:
  ------------------
  |  Branch (6620:5): [True: 0, False: 29.4k]
  ------------------
 6621|     72|    case ARM::VQSUBuv2i32:
  ------------------
  |  Branch (6621:5): [True: 0, False: 29.4k]
  ------------------
 6622|     72|    case ARM::VQSUBuv2i64:
  ------------------
  |  Branch (6622:5): [True: 0, False: 29.4k]
  ------------------
 6623|     72|    case ARM::VQSUBuv4i16:
  ------------------
  |  Branch (6623:5): [True: 0, False: 29.4k]
  ------------------
 6624|     72|    case ARM::VQSUBuv4i32:
  ------------------
  |  Branch (6624:5): [True: 0, False: 29.4k]
  ------------------
 6625|     72|    case ARM::VQSUBuv8i16:
  ------------------
  |  Branch (6625:5): [True: 0, False: 29.4k]
  ------------------
 6626|     72|    case ARM::VQSUBuv8i8:
  ------------------
  |  Branch (6626:5): [True: 0, False: 29.4k]
  ------------------
 6627|     72|    case ARM::VRADDHNv2i32:
  ------------------
  |  Branch (6627:5): [True: 0, False: 29.4k]
  ------------------
 6628|     72|    case ARM::VRADDHNv4i16:
  ------------------
  |  Branch (6628:5): [True: 0, False: 29.4k]
  ------------------
 6629|     72|    case ARM::VRADDHNv8i8:
  ------------------
  |  Branch (6629:5): [True: 0, False: 29.4k]
  ------------------
 6630|     72|    case ARM::VRECPSfd:
  ------------------
  |  Branch (6630:5): [True: 0, False: 29.4k]
  ------------------
 6631|     72|    case ARM::VRECPSfq:
  ------------------
  |  Branch (6631:5): [True: 0, False: 29.4k]
  ------------------
 6632|     72|    case ARM::VRECPShd:
  ------------------
  |  Branch (6632:5): [True: 0, False: 29.4k]
  ------------------
 6633|     72|    case ARM::VRECPShq:
  ------------------
  |  Branch (6633:5): [True: 0, False: 29.4k]
  ------------------
 6634|     72|    case ARM::VRHADDsv16i8:
  ------------------
  |  Branch (6634:5): [True: 0, False: 29.4k]
  ------------------
 6635|     72|    case ARM::VRHADDsv2i32:
  ------------------
  |  Branch (6635:5): [True: 0, False: 29.4k]
  ------------------
 6636|     72|    case ARM::VRHADDsv4i16:
  ------------------
  |  Branch (6636:5): [True: 0, False: 29.4k]
  ------------------
 6637|     72|    case ARM::VRHADDsv4i32:
  ------------------
  |  Branch (6637:5): [True: 0, False: 29.4k]
  ------------------
 6638|     72|    case ARM::VRHADDsv8i16:
  ------------------
  |  Branch (6638:5): [True: 0, False: 29.4k]
  ------------------
 6639|     72|    case ARM::VRHADDsv8i8:
  ------------------
  |  Branch (6639:5): [True: 0, False: 29.4k]
  ------------------
 6640|     72|    case ARM::VRHADDuv16i8:
  ------------------
  |  Branch (6640:5): [True: 0, False: 29.4k]
  ------------------
 6641|     72|    case ARM::VRHADDuv2i32:
  ------------------
  |  Branch (6641:5): [True: 0, False: 29.4k]
  ------------------
 6642|     72|    case ARM::VRHADDuv4i16:
  ------------------
  |  Branch (6642:5): [True: 0, False: 29.4k]
  ------------------
 6643|     72|    case ARM::VRHADDuv4i32:
  ------------------
  |  Branch (6643:5): [True: 0, False: 29.4k]
  ------------------
 6644|     72|    case ARM::VRHADDuv8i16:
  ------------------
  |  Branch (6644:5): [True: 0, False: 29.4k]
  ------------------
 6645|     72|    case ARM::VRHADDuv8i8:
  ------------------
  |  Branch (6645:5): [True: 0, False: 29.4k]
  ------------------
 6646|     72|    case ARM::VRSQRTSfd:
  ------------------
  |  Branch (6646:5): [True: 0, False: 29.4k]
  ------------------
 6647|     72|    case ARM::VRSQRTSfq:
  ------------------
  |  Branch (6647:5): [True: 0, False: 29.4k]
  ------------------
 6648|     72|    case ARM::VRSQRTShd:
  ------------------
  |  Branch (6648:5): [True: 0, False: 29.4k]
  ------------------
 6649|     72|    case ARM::VRSQRTShq:
  ------------------
  |  Branch (6649:5): [True: 0, False: 29.4k]
  ------------------
 6650|     72|    case ARM::VRSUBHNv2i32:
  ------------------
  |  Branch (6650:5): [True: 0, False: 29.4k]
  ------------------
 6651|     72|    case ARM::VRSUBHNv4i16:
  ------------------
  |  Branch (6651:5): [True: 0, False: 29.4k]
  ------------------
 6652|     72|    case ARM::VRSUBHNv8i8:
  ------------------
  |  Branch (6652:5): [True: 0, False: 29.4k]
  ------------------
 6653|     72|    case ARM::VSUBHNv2i32:
  ------------------
  |  Branch (6653:5): [True: 0, False: 29.4k]
  ------------------
 6654|     72|    case ARM::VSUBHNv4i16:
  ------------------
  |  Branch (6654:5): [True: 0, False: 29.4k]
  ------------------
 6655|     72|    case ARM::VSUBHNv8i8:
  ------------------
  |  Branch (6655:5): [True: 0, False: 29.4k]
  ------------------
 6656|     72|    case ARM::VSUBLsv2i64:
  ------------------
  |  Branch (6656:5): [True: 0, False: 29.4k]
  ------------------
 6657|     72|    case ARM::VSUBLsv4i32:
  ------------------
  |  Branch (6657:5): [True: 0, False: 29.4k]
  ------------------
 6658|     72|    case ARM::VSUBLsv8i16:
  ------------------
  |  Branch (6658:5): [True: 0, False: 29.4k]
  ------------------
 6659|     72|    case ARM::VSUBLuv2i64:
  ------------------
  |  Branch (6659:5): [True: 0, False: 29.4k]
  ------------------
 6660|     72|    case ARM::VSUBLuv4i32:
  ------------------
  |  Branch (6660:5): [True: 0, False: 29.4k]
  ------------------
 6661|     72|    case ARM::VSUBLuv8i16:
  ------------------
  |  Branch (6661:5): [True: 0, False: 29.4k]
  ------------------
 6662|     72|    case ARM::VSUBWsv2i64:
  ------------------
  |  Branch (6662:5): [True: 0, False: 29.4k]
  ------------------
 6663|     72|    case ARM::VSUBWsv4i32:
  ------------------
  |  Branch (6663:5): [True: 0, False: 29.4k]
  ------------------
 6664|     72|    case ARM::VSUBWsv8i16:
  ------------------
  |  Branch (6664:5): [True: 0, False: 29.4k]
  ------------------
 6665|     72|    case ARM::VSUBWuv2i64:
  ------------------
  |  Branch (6665:5): [True: 0, False: 29.4k]
  ------------------
 6666|     72|    case ARM::VSUBWuv4i32:
  ------------------
  |  Branch (6666:5): [True: 0, False: 29.4k]
  ------------------
 6667|     72|    case ARM::VSUBWuv8i16:
  ------------------
  |  Branch (6667:5): [True: 0, False: 29.4k]
  ------------------
 6668|     73|    case ARM::VSUBfd:
  ------------------
  |  Branch (6668:5): [True: 1, False: 29.4k]
  ------------------
 6669|     73|    case ARM::VSUBfq:
  ------------------
  |  Branch (6669:5): [True: 0, False: 29.4k]
  ------------------
 6670|     73|    case ARM::VSUBhd:
  ------------------
  |  Branch (6670:5): [True: 0, False: 29.4k]
  ------------------
 6671|     73|    case ARM::VSUBhq:
  ------------------
  |  Branch (6671:5): [True: 0, False: 29.4k]
  ------------------
 6672|     73|    case ARM::VSUBv16i8:
  ------------------
  |  Branch (6672:5): [True: 0, False: 29.4k]
  ------------------
 6673|     74|    case ARM::VSUBv1i64:
  ------------------
  |  Branch (6673:5): [True: 1, False: 29.4k]
  ------------------
 6674|     74|    case ARM::VSUBv2i32:
  ------------------
  |  Branch (6674:5): [True: 0, False: 29.4k]
  ------------------
 6675|     74|    case ARM::VSUBv2i64:
  ------------------
  |  Branch (6675:5): [True: 0, False: 29.4k]
  ------------------
 6676|     74|    case ARM::VSUBv4i16:
  ------------------
  |  Branch (6676:5): [True: 0, False: 29.4k]
  ------------------
 6677|     75|    case ARM::VSUBv4i32:
  ------------------
  |  Branch (6677:5): [True: 1, False: 29.4k]
  ------------------
 6678|     76|    case ARM::VSUBv8i16:
  ------------------
  |  Branch (6678:5): [True: 1, False: 29.4k]
  ------------------
 6679|     76|    case ARM::VSUBv8i8:
  ------------------
  |  Branch (6679:5): [True: 0, False: 29.4k]
  ------------------
 6680|     76|    case ARM::VTBL1:
  ------------------
  |  Branch (6680:5): [True: 0, False: 29.4k]
  ------------------
 6681|     76|    case ARM::VTBL2:
  ------------------
  |  Branch (6681:5): [True: 0, False: 29.4k]
  ------------------
 6682|     76|    case ARM::VTBL3:
  ------------------
  |  Branch (6682:5): [True: 0, False: 29.4k]
  ------------------
 6683|     76|    case ARM::VTBL4:
  ------------------
  |  Branch (6683:5): [True: 0, False: 29.4k]
  ------------------
 6684|     76|    case ARM::VTSTv16i8:
  ------------------
  |  Branch (6684:5): [True: 0, False: 29.4k]
  ------------------
 6685|     76|    case ARM::VTSTv2i32:
  ------------------
  |  Branch (6685:5): [True: 0, False: 29.4k]
  ------------------
 6686|     76|    case ARM::VTSTv4i16:
  ------------------
  |  Branch (6686:5): [True: 0, False: 29.4k]
  ------------------
 6687|     76|    case ARM::VTSTv4i32:
  ------------------
  |  Branch (6687:5): [True: 0, False: 29.4k]
  ------------------
 6688|     76|    case ARM::VTSTv8i16:
  ------------------
  |  Branch (6688:5): [True: 0, False: 29.4k]
  ------------------
 6689|     76|    case ARM::VTSTv8i8: {
  ------------------
  |  Branch (6689:5): [True: 0, False: 29.4k]
  ------------------
 6690|       |      // op: Vd
 6691|     76|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6692|     76|      Value |= (op & UINT64_C(16)) << 18;
 6693|     76|      Value |= (op & UINT64_C(15)) << 12;
 6694|       |      // op: Vn
 6695|     76|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6696|     76|      Value |= (op & UINT64_C(15)) << 16;
 6697|     76|      Value |= (op & UINT64_C(16)) << 3;
 6698|       |      // op: Vm
 6699|     76|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6700|     76|      Value |= (op & UINT64_C(16)) << 1;
 6701|     76|      Value |= op & UINT64_C(15);
 6702|     76|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6703|     76|      break;
 6704|     76|    }
 6705|      0|    case ARM::VMAXNMNDf:
  ------------------
  |  Branch (6705:5): [True: 0, False: 29.4k]
  ------------------
 6706|      0|    case ARM::VMAXNMNDh:
  ------------------
  |  Branch (6706:5): [True: 0, False: 29.4k]
  ------------------
 6707|      0|    case ARM::VMAXNMNQf:
  ------------------
  |  Branch (6707:5): [True: 0, False: 29.4k]
  ------------------
 6708|      0|    case ARM::VMAXNMNQh:
  ------------------
  |  Branch (6708:5): [True: 0, False: 29.4k]
  ------------------
 6709|      0|    case ARM::VMINNMNDf:
  ------------------
  |  Branch (6709:5): [True: 0, False: 29.4k]
  ------------------
 6710|      0|    case ARM::VMINNMNDh:
  ------------------
  |  Branch (6710:5): [True: 0, False: 29.4k]
  ------------------
 6711|      0|    case ARM::VMINNMNQf:
  ------------------
  |  Branch (6711:5): [True: 0, False: 29.4k]
  ------------------
 6712|      0|    case ARM::VMINNMNQh: {
  ------------------
  |  Branch (6712:5): [True: 0, False: 29.4k]
  ------------------
 6713|       |      // op: Vd
 6714|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6715|      0|      Value |= (op & UINT64_C(16)) << 18;
 6716|      0|      Value |= (op & UINT64_C(15)) << 12;
 6717|       |      // op: Vn
 6718|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6719|      0|      Value |= (op & UINT64_C(15)) << 16;
 6720|      0|      Value |= (op & UINT64_C(16)) << 3;
 6721|       |      // op: Vm
 6722|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6723|      0|      Value |= (op & UINT64_C(16)) << 1;
 6724|      0|      Value |= op & UINT64_C(15);
 6725|      0|      Value = NEONThumb2V8PostEncoder(MI, Value, STI);
 6726|      0|      break;
 6727|      0|    }
 6728|      0|    case ARM::VMULLslsv2i32:
  ------------------
  |  Branch (6728:5): [True: 0, False: 29.4k]
  ------------------
 6729|      0|    case ARM::VMULLsluv2i32:
  ------------------
  |  Branch (6729:5): [True: 0, False: 29.4k]
  ------------------
 6730|      0|    case ARM::VMULslfd:
  ------------------
  |  Branch (6730:5): [True: 0, False: 29.4k]
  ------------------
 6731|      0|    case ARM::VMULslfq:
  ------------------
  |  Branch (6731:5): [True: 0, False: 29.4k]
  ------------------
 6732|      0|    case ARM::VMULslv2i32:
  ------------------
  |  Branch (6732:5): [True: 0, False: 29.4k]
  ------------------
 6733|      0|    case ARM::VMULslv4i32:
  ------------------
  |  Branch (6733:5): [True: 0, False: 29.4k]
  ------------------
 6734|      0|    case ARM::VQDMULHslv2i32:
  ------------------
  |  Branch (6734:5): [True: 0, False: 29.4k]
  ------------------
 6735|      0|    case ARM::VQDMULHslv4i32:
  ------------------
  |  Branch (6735:5): [True: 0, False: 29.4k]
  ------------------
 6736|      0|    case ARM::VQDMULLslv2i32:
  ------------------
  |  Branch (6736:5): [True: 0, False: 29.4k]
  ------------------
 6737|      0|    case ARM::VQRDMULHslv2i32:
  ------------------
  |  Branch (6737:5): [True: 0, False: 29.4k]
  ------------------
 6738|      0|    case ARM::VQRDMULHslv4i32: {
  ------------------
  |  Branch (6738:5): [True: 0, False: 29.4k]
  ------------------
 6739|       |      // op: Vd
 6740|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6741|      0|      Value |= (op & UINT64_C(16)) << 18;
 6742|      0|      Value |= (op & UINT64_C(15)) << 12;
 6743|       |      // op: Vn
 6744|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6745|      0|      Value |= (op & UINT64_C(15)) << 16;
 6746|      0|      Value |= (op & UINT64_C(16)) << 3;
 6747|       |      // op: Vm
 6748|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6749|      0|      Value |= op & UINT64_C(15);
 6750|       |      // op: lane
 6751|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6752|      0|      Value |= (op & UINT64_C(1)) << 5;
 6753|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6754|      0|      break;
 6755|      0|    }
 6756|      0|    case ARM::VMULLslsv4i16:
  ------------------
  |  Branch (6756:5): [True: 0, False: 29.4k]
  ------------------
 6757|      0|    case ARM::VMULLsluv4i16:
  ------------------
  |  Branch (6757:5): [True: 0, False: 29.4k]
  ------------------
 6758|      0|    case ARM::VMULslhd:
  ------------------
  |  Branch (6758:5): [True: 0, False: 29.4k]
  ------------------
 6759|      0|    case ARM::VMULslhq:
  ------------------
  |  Branch (6759:5): [True: 0, False: 29.4k]
  ------------------
 6760|      0|    case ARM::VMULslv4i16:
  ------------------
  |  Branch (6760:5): [True: 0, False: 29.4k]
  ------------------
 6761|      0|    case ARM::VMULslv8i16:
  ------------------
  |  Branch (6761:5): [True: 0, False: 29.4k]
  ------------------
 6762|      0|    case ARM::VQDMULHslv4i16:
  ------------------
  |  Branch (6762:5): [True: 0, False: 29.4k]
  ------------------
 6763|      0|    case ARM::VQDMULHslv8i16:
  ------------------
  |  Branch (6763:5): [True: 0, False: 29.4k]
  ------------------
 6764|      0|    case ARM::VQDMULLslv4i16:
  ------------------
  |  Branch (6764:5): [True: 0, False: 29.4k]
  ------------------
 6765|      0|    case ARM::VQRDMULHslv4i16:
  ------------------
  |  Branch (6765:5): [True: 0, False: 29.4k]
  ------------------
 6766|      0|    case ARM::VQRDMULHslv8i16: {
  ------------------
  |  Branch (6766:5): [True: 0, False: 29.4k]
  ------------------
 6767|       |      // op: Vd
 6768|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6769|      0|      Value |= (op & UINT64_C(16)) << 18;
 6770|      0|      Value |= (op & UINT64_C(15)) << 12;
 6771|       |      // op: Vn
 6772|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6773|      0|      Value |= (op & UINT64_C(15)) << 16;
 6774|      0|      Value |= (op & UINT64_C(16)) << 3;
 6775|       |      // op: Vm
 6776|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6777|      0|      Value |= op & UINT64_C(7);
 6778|       |      // op: lane
 6779|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6780|      0|      Value |= (op & UINT64_C(2)) << 4;
 6781|      0|      Value |= (op & UINT64_C(1)) << 3;
 6782|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6783|      0|      break;
 6784|      0|    }
 6785|      0|    case ARM::VQRSHLsv16i8:
  ------------------
  |  Branch (6785:5): [True: 0, False: 29.4k]
  ------------------
 6786|      0|    case ARM::VQRSHLsv1i64:
  ------------------
  |  Branch (6786:5): [True: 0, False: 29.4k]
  ------------------
 6787|      0|    case ARM::VQRSHLsv2i32:
  ------------------
  |  Branch (6787:5): [True: 0, False: 29.4k]
  ------------------
 6788|      0|    case ARM::VQRSHLsv2i64:
  ------------------
  |  Branch (6788:5): [True: 0, False: 29.4k]
  ------------------
 6789|      0|    case ARM::VQRSHLsv4i16:
  ------------------
  |  Branch (6789:5): [True: 0, False: 29.4k]
  ------------------
 6790|      0|    case ARM::VQRSHLsv4i32:
  ------------------
  |  Branch (6790:5): [True: 0, False: 29.4k]
  ------------------
 6791|      0|    case ARM::VQRSHLsv8i16:
  ------------------
  |  Branch (6791:5): [True: 0, False: 29.4k]
  ------------------
 6792|      0|    case ARM::VQRSHLsv8i8:
  ------------------
  |  Branch (6792:5): [True: 0, False: 29.4k]
  ------------------
 6793|      0|    case ARM::VQRSHLuv16i8:
  ------------------
  |  Branch (6793:5): [True: 0, False: 29.4k]
  ------------------
 6794|      0|    case ARM::VQRSHLuv1i64:
  ------------------
  |  Branch (6794:5): [True: 0, False: 29.4k]
  ------------------
 6795|      0|    case ARM::VQRSHLuv2i32:
  ------------------
  |  Branch (6795:5): [True: 0, False: 29.4k]
  ------------------
 6796|      0|    case ARM::VQRSHLuv2i64:
  ------------------
  |  Branch (6796:5): [True: 0, False: 29.4k]
  ------------------
 6797|      0|    case ARM::VQRSHLuv4i16:
  ------------------
  |  Branch (6797:5): [True: 0, False: 29.4k]
  ------------------
 6798|      0|    case ARM::VQRSHLuv4i32:
  ------------------
  |  Branch (6798:5): [True: 0, False: 29.4k]
  ------------------
 6799|      0|    case ARM::VQRSHLuv8i16:
  ------------------
  |  Branch (6799:5): [True: 0, False: 29.4k]
  ------------------
 6800|      0|    case ARM::VQRSHLuv8i8:
  ------------------
  |  Branch (6800:5): [True: 0, False: 29.4k]
  ------------------
 6801|      1|    case ARM::VQSHLsv16i8:
  ------------------
  |  Branch (6801:5): [True: 1, False: 29.4k]
  ------------------
 6802|      2|    case ARM::VQSHLsv1i64:
  ------------------
  |  Branch (6802:5): [True: 1, False: 29.4k]
  ------------------
 6803|      3|    case ARM::VQSHLsv2i32:
  ------------------
  |  Branch (6803:5): [True: 1, False: 29.4k]
  ------------------
 6804|      6|    case ARM::VQSHLsv2i64:
  ------------------
  |  Branch (6804:5): [True: 3, False: 29.4k]
  ------------------
 6805|      7|    case ARM::VQSHLsv4i16:
  ------------------
  |  Branch (6805:5): [True: 1, False: 29.4k]
  ------------------
 6806|     10|    case ARM::VQSHLsv4i32:
  ------------------
  |  Branch (6806:5): [True: 3, False: 29.4k]
  ------------------
 6807|     13|    case ARM::VQSHLsv8i16:
  ------------------
  |  Branch (6807:5): [True: 3, False: 29.4k]
  ------------------
 6808|     14|    case ARM::VQSHLsv8i8:
  ------------------
  |  Branch (6808:5): [True: 1, False: 29.4k]
  ------------------
 6809|     15|    case ARM::VQSHLuv16i8:
  ------------------
  |  Branch (6809:5): [True: 1, False: 29.4k]
  ------------------
 6810|     16|    case ARM::VQSHLuv1i64:
  ------------------
  |  Branch (6810:5): [True: 1, False: 29.4k]
  ------------------
 6811|     17|    case ARM::VQSHLuv2i32:
  ------------------
  |  Branch (6811:5): [True: 1, False: 29.4k]
  ------------------
 6812|     19|    case ARM::VQSHLuv2i64:
  ------------------
  |  Branch (6812:5): [True: 2, False: 29.4k]
  ------------------
 6813|     20|    case ARM::VQSHLuv4i16:
  ------------------
  |  Branch (6813:5): [True: 1, False: 29.4k]
  ------------------
 6814|     23|    case ARM::VQSHLuv4i32:
  ------------------
  |  Branch (6814:5): [True: 3, False: 29.4k]
  ------------------
 6815|     24|    case ARM::VQSHLuv8i16:
  ------------------
  |  Branch (6815:5): [True: 1, False: 29.4k]
  ------------------
 6816|     25|    case ARM::VQSHLuv8i8:
  ------------------
  |  Branch (6816:5): [True: 1, False: 29.4k]
  ------------------
 6817|     26|    case ARM::VRSHLsv16i8:
  ------------------
  |  Branch (6817:5): [True: 1, False: 29.4k]
  ------------------
 6818|     27|    case ARM::VRSHLsv1i64:
  ------------------
  |  Branch (6818:5): [True: 1, False: 29.4k]
  ------------------
 6819|     28|    case ARM::VRSHLsv2i32:
  ------------------
  |  Branch (6819:5): [True: 1, False: 29.4k]
  ------------------
 6820|     29|    case ARM::VRSHLsv2i64:
  ------------------
  |  Branch (6820:5): [True: 1, False: 29.4k]
  ------------------
 6821|     29|    case ARM::VRSHLsv4i16:
  ------------------
  |  Branch (6821:5): [True: 0, False: 29.4k]
  ------------------
 6822|     30|    case ARM::VRSHLsv4i32:
  ------------------
  |  Branch (6822:5): [True: 1, False: 29.4k]
  ------------------
 6823|     31|    case ARM::VRSHLsv8i16:
  ------------------
  |  Branch (6823:5): [True: 1, False: 29.4k]
  ------------------
 6824|     32|    case ARM::VRSHLsv8i8:
  ------------------
  |  Branch (6824:5): [True: 1, False: 29.4k]
  ------------------
 6825|     32|    case ARM::VRSHLuv16i8:
  ------------------
  |  Branch (6825:5): [True: 0, False: 29.4k]
  ------------------
 6826|     33|    case ARM::VRSHLuv1i64:
  ------------------
  |  Branch (6826:5): [True: 1, False: 29.4k]
  ------------------
 6827|     34|    case ARM::VRSHLuv2i32:
  ------------------
  |  Branch (6827:5): [True: 1, False: 29.4k]
  ------------------
 6828|     37|    case ARM::VRSHLuv2i64:
  ------------------
  |  Branch (6828:5): [True: 3, False: 29.4k]
  ------------------
 6829|     38|    case ARM::VRSHLuv4i16:
  ------------------
  |  Branch (6829:5): [True: 1, False: 29.4k]
  ------------------
 6830|     41|    case ARM::VRSHLuv4i32:
  ------------------
  |  Branch (6830:5): [True: 3, False: 29.4k]
  ------------------
 6831|     41|    case ARM::VRSHLuv8i16:
  ------------------
  |  Branch (6831:5): [True: 0, False: 29.4k]
  ------------------
 6832|     42|    case ARM::VRSHLuv8i8:
  ------------------
  |  Branch (6832:5): [True: 1, False: 29.4k]
  ------------------
 6833|     43|    case ARM::VSHLsv16i8:
  ------------------
  |  Branch (6833:5): [True: 1, False: 29.4k]
  ------------------
 6834|     46|    case ARM::VSHLsv1i64:
  ------------------
  |  Branch (6834:5): [True: 3, False: 29.4k]
  ------------------
 6835|     47|    case ARM::VSHLsv2i32:
  ------------------
  |  Branch (6835:5): [True: 1, False: 29.4k]
  ------------------
 6836|     51|    case ARM::VSHLsv2i64:
  ------------------
  |  Branch (6836:5): [True: 4, False: 29.4k]
  ------------------
 6837|     52|    case ARM::VSHLsv4i16:
  ------------------
  |  Branch (6837:5): [True: 1, False: 29.4k]
  ------------------
 6838|     53|    case ARM::VSHLsv4i32:
  ------------------
  |  Branch (6838:5): [True: 1, False: 29.4k]
  ------------------
 6839|     54|    case ARM::VSHLsv8i16:
  ------------------
  |  Branch (6839:5): [True: 1, False: 29.4k]
  ------------------
 6840|     55|    case ARM::VSHLsv8i8:
  ------------------
  |  Branch (6840:5): [True: 1, False: 29.4k]
  ------------------
 6841|     56|    case ARM::VSHLuv16i8:
  ------------------
  |  Branch (6841:5): [True: 1, False: 29.4k]
  ------------------
 6842|     59|    case ARM::VSHLuv1i64:
  ------------------
  |  Branch (6842:5): [True: 3, False: 29.4k]
  ------------------
 6843|     60|    case ARM::VSHLuv2i32:
  ------------------
  |  Branch (6843:5): [True: 1, False: 29.4k]
  ------------------
 6844|     61|    case ARM::VSHLuv2i64:
  ------------------
  |  Branch (6844:5): [True: 1, False: 29.4k]
  ------------------
 6845|     62|    case ARM::VSHLuv4i16:
  ------------------
  |  Branch (6845:5): [True: 1, False: 29.4k]
  ------------------
 6846|     63|    case ARM::VSHLuv4i32:
  ------------------
  |  Branch (6846:5): [True: 1, False: 29.4k]
  ------------------
 6847|     64|    case ARM::VSHLuv8i16:
  ------------------
  |  Branch (6847:5): [True: 1, False: 29.4k]
  ------------------
 6848|     65|    case ARM::VSHLuv8i8: {
  ------------------
  |  Branch (6848:5): [True: 1, False: 29.4k]
  ------------------
 6849|       |      // op: Vd
 6850|     65|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6851|     65|      Value |= (op & UINT64_C(16)) << 18;
 6852|     65|      Value |= (op & UINT64_C(15)) << 12;
 6853|       |      // op: Vn
 6854|     65|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6855|     65|      Value |= (op & UINT64_C(15)) << 16;
 6856|     65|      Value |= (op & UINT64_C(16)) << 3;
 6857|       |      // op: Vm
 6858|     65|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 6859|     65|      Value |= (op & UINT64_C(16)) << 1;
 6860|     65|      Value |= op & UINT64_C(15);
 6861|     65|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6862|     65|      break;
 6863|     64|    }
 6864|      0|    case ARM::SHA1C:
  ------------------
  |  Branch (6864:5): [True: 0, False: 29.4k]
  ------------------
 6865|      0|    case ARM::SHA1M:
  ------------------
  |  Branch (6865:5): [True: 0, False: 29.4k]
  ------------------
 6866|      0|    case ARM::SHA1P:
  ------------------
  |  Branch (6866:5): [True: 0, False: 29.4k]
  ------------------
 6867|      0|    case ARM::SHA1SU0:
  ------------------
  |  Branch (6867:5): [True: 0, False: 29.4k]
  ------------------
 6868|      0|    case ARM::SHA256H:
  ------------------
  |  Branch (6868:5): [True: 0, False: 29.4k]
  ------------------
 6869|      0|    case ARM::SHA256H2:
  ------------------
  |  Branch (6869:5): [True: 0, False: 29.4k]
  ------------------
 6870|      0|    case ARM::SHA256SU1:
  ------------------
  |  Branch (6870:5): [True: 0, False: 29.4k]
  ------------------
 6871|      0|    case ARM::VABALsv2i64:
  ------------------
  |  Branch (6871:5): [True: 0, False: 29.4k]
  ------------------
 6872|      0|    case ARM::VABALsv4i32:
  ------------------
  |  Branch (6872:5): [True: 0, False: 29.4k]
  ------------------
 6873|      0|    case ARM::VABALsv8i16:
  ------------------
  |  Branch (6873:5): [True: 0, False: 29.4k]
  ------------------
 6874|      0|    case ARM::VABALuv2i64:
  ------------------
  |  Branch (6874:5): [True: 0, False: 29.4k]
  ------------------
 6875|      0|    case ARM::VABALuv4i32:
  ------------------
  |  Branch (6875:5): [True: 0, False: 29.4k]
  ------------------
 6876|      0|    case ARM::VABALuv8i16:
  ------------------
  |  Branch (6876:5): [True: 0, False: 29.4k]
  ------------------
 6877|      0|    case ARM::VABAsv16i8:
  ------------------
  |  Branch (6877:5): [True: 0, False: 29.4k]
  ------------------
 6878|      0|    case ARM::VABAsv2i32:
  ------------------
  |  Branch (6878:5): [True: 0, False: 29.4k]
  ------------------
 6879|      0|    case ARM::VABAsv4i16:
  ------------------
  |  Branch (6879:5): [True: 0, False: 29.4k]
  ------------------
 6880|      0|    case ARM::VABAsv4i32:
  ------------------
  |  Branch (6880:5): [True: 0, False: 29.4k]
  ------------------
 6881|      0|    case ARM::VABAsv8i16:
  ------------------
  |  Branch (6881:5): [True: 0, False: 29.4k]
  ------------------
 6882|      0|    case ARM::VABAsv8i8:
  ------------------
  |  Branch (6882:5): [True: 0, False: 29.4k]
  ------------------
 6883|      0|    case ARM::VABAuv16i8:
  ------------------
  |  Branch (6883:5): [True: 0, False: 29.4k]
  ------------------
 6884|      0|    case ARM::VABAuv2i32:
  ------------------
  |  Branch (6884:5): [True: 0, False: 29.4k]
  ------------------
 6885|      0|    case ARM::VABAuv4i16:
  ------------------
  |  Branch (6885:5): [True: 0, False: 29.4k]
  ------------------
 6886|      0|    case ARM::VABAuv4i32:
  ------------------
  |  Branch (6886:5): [True: 0, False: 29.4k]
  ------------------
 6887|      0|    case ARM::VABAuv8i16:
  ------------------
  |  Branch (6887:5): [True: 0, False: 29.4k]
  ------------------
 6888|      0|    case ARM::VABAuv8i8:
  ------------------
  |  Branch (6888:5): [True: 0, False: 29.4k]
  ------------------
 6889|      0|    case ARM::VBIFd:
  ------------------
  |  Branch (6889:5): [True: 0, False: 29.4k]
  ------------------
 6890|      0|    case ARM::VBIFq:
  ------------------
  |  Branch (6890:5): [True: 0, False: 29.4k]
  ------------------
 6891|      0|    case ARM::VBITd:
  ------------------
  |  Branch (6891:5): [True: 0, False: 29.4k]
  ------------------
 6892|      0|    case ARM::VBITq:
  ------------------
  |  Branch (6892:5): [True: 0, False: 29.4k]
  ------------------
 6893|      0|    case ARM::VBSLd:
  ------------------
  |  Branch (6893:5): [True: 0, False: 29.4k]
  ------------------
 6894|      0|    case ARM::VBSLq:
  ------------------
  |  Branch (6894:5): [True: 0, False: 29.4k]
  ------------------
 6895|      0|    case ARM::VFMAfd:
  ------------------
  |  Branch (6895:5): [True: 0, False: 29.4k]
  ------------------
 6896|      0|    case ARM::VFMAfq:
  ------------------
  |  Branch (6896:5): [True: 0, False: 29.4k]
  ------------------
 6897|      0|    case ARM::VFMAhd:
  ------------------
  |  Branch (6897:5): [True: 0, False: 29.4k]
  ------------------
 6898|      0|    case ARM::VFMAhq:
  ------------------
  |  Branch (6898:5): [True: 0, False: 29.4k]
  ------------------
 6899|      0|    case ARM::VFMSfd:
  ------------------
  |  Branch (6899:5): [True: 0, False: 29.4k]
  ------------------
 6900|      0|    case ARM::VFMSfq:
  ------------------
  |  Branch (6900:5): [True: 0, False: 29.4k]
  ------------------
 6901|      0|    case ARM::VFMShd:
  ------------------
  |  Branch (6901:5): [True: 0, False: 29.4k]
  ------------------
 6902|      0|    case ARM::VFMShq:
  ------------------
  |  Branch (6902:5): [True: 0, False: 29.4k]
  ------------------
 6903|      0|    case ARM::VMLALsv2i64:
  ------------------
  |  Branch (6903:5): [True: 0, False: 29.4k]
  ------------------
 6904|      0|    case ARM::VMLALsv4i32:
  ------------------
  |  Branch (6904:5): [True: 0, False: 29.4k]
  ------------------
 6905|      0|    case ARM::VMLALsv8i16:
  ------------------
  |  Branch (6905:5): [True: 0, False: 29.4k]
  ------------------
 6906|      0|    case ARM::VMLALuv2i64:
  ------------------
  |  Branch (6906:5): [True: 0, False: 29.4k]
  ------------------
 6907|      0|    case ARM::VMLALuv4i32:
  ------------------
  |  Branch (6907:5): [True: 0, False: 29.4k]
  ------------------
 6908|      0|    case ARM::VMLALuv8i16:
  ------------------
  |  Branch (6908:5): [True: 0, False: 29.4k]
  ------------------
 6909|      0|    case ARM::VMLAfd:
  ------------------
  |  Branch (6909:5): [True: 0, False: 29.4k]
  ------------------
 6910|      0|    case ARM::VMLAfq:
  ------------------
  |  Branch (6910:5): [True: 0, False: 29.4k]
  ------------------
 6911|      0|    case ARM::VMLAhd:
  ------------------
  |  Branch (6911:5): [True: 0, False: 29.4k]
  ------------------
 6912|      0|    case ARM::VMLAhq:
  ------------------
  |  Branch (6912:5): [True: 0, False: 29.4k]
  ------------------
 6913|      0|    case ARM::VMLAv16i8:
  ------------------
  |  Branch (6913:5): [True: 0, False: 29.4k]
  ------------------
 6914|      0|    case ARM::VMLAv2i32:
  ------------------
  |  Branch (6914:5): [True: 0, False: 29.4k]
  ------------------
 6915|      0|    case ARM::VMLAv4i16:
  ------------------
  |  Branch (6915:5): [True: 0, False: 29.4k]
  ------------------
 6916|      0|    case ARM::VMLAv4i32:
  ------------------
  |  Branch (6916:5): [True: 0, False: 29.4k]
  ------------------
 6917|      0|    case ARM::VMLAv8i16:
  ------------------
  |  Branch (6917:5): [True: 0, False: 29.4k]
  ------------------
 6918|      0|    case ARM::VMLAv8i8:
  ------------------
  |  Branch (6918:5): [True: 0, False: 29.4k]
  ------------------
 6919|      0|    case ARM::VMLSLsv2i64:
  ------------------
  |  Branch (6919:5): [True: 0, False: 29.4k]
  ------------------
 6920|      0|    case ARM::VMLSLsv4i32:
  ------------------
  |  Branch (6920:5): [True: 0, False: 29.4k]
  ------------------
 6921|      0|    case ARM::VMLSLsv8i16:
  ------------------
  |  Branch (6921:5): [True: 0, False: 29.4k]
  ------------------
 6922|      0|    case ARM::VMLSLuv2i64:
  ------------------
  |  Branch (6922:5): [True: 0, False: 29.4k]
  ------------------
 6923|      0|    case ARM::VMLSLuv4i32:
  ------------------
  |  Branch (6923:5): [True: 0, False: 29.4k]
  ------------------
 6924|      0|    case ARM::VMLSLuv8i16:
  ------------------
  |  Branch (6924:5): [True: 0, False: 29.4k]
  ------------------
 6925|      0|    case ARM::VMLSfd:
  ------------------
  |  Branch (6925:5): [True: 0, False: 29.4k]
  ------------------
 6926|      0|    case ARM::VMLSfq:
  ------------------
  |  Branch (6926:5): [True: 0, False: 29.4k]
  ------------------
 6927|      0|    case ARM::VMLShd:
  ------------------
  |  Branch (6927:5): [True: 0, False: 29.4k]
  ------------------
 6928|      0|    case ARM::VMLShq:
  ------------------
  |  Branch (6928:5): [True: 0, False: 29.4k]
  ------------------
 6929|      0|    case ARM::VMLSv16i8:
  ------------------
  |  Branch (6929:5): [True: 0, False: 29.4k]
  ------------------
 6930|      0|    case ARM::VMLSv2i32:
  ------------------
  |  Branch (6930:5): [True: 0, False: 29.4k]
  ------------------
 6931|      0|    case ARM::VMLSv4i16:
  ------------------
  |  Branch (6931:5): [True: 0, False: 29.4k]
  ------------------
 6932|      0|    case ARM::VMLSv4i32:
  ------------------
  |  Branch (6932:5): [True: 0, False: 29.4k]
  ------------------
 6933|      0|    case ARM::VMLSv8i16:
  ------------------
  |  Branch (6933:5): [True: 0, False: 29.4k]
  ------------------
 6934|      0|    case ARM::VMLSv8i8:
  ------------------
  |  Branch (6934:5): [True: 0, False: 29.4k]
  ------------------
 6935|      0|    case ARM::VQDMLALv2i64:
  ------------------
  |  Branch (6935:5): [True: 0, False: 29.4k]
  ------------------
 6936|      0|    case ARM::VQDMLALv4i32:
  ------------------
  |  Branch (6936:5): [True: 0, False: 29.4k]
  ------------------
 6937|      0|    case ARM::VQDMLSLv2i64:
  ------------------
  |  Branch (6937:5): [True: 0, False: 29.4k]
  ------------------
 6938|      0|    case ARM::VQDMLSLv4i32:
  ------------------
  |  Branch (6938:5): [True: 0, False: 29.4k]
  ------------------
 6939|      0|    case ARM::VQRDMLAHv2i32:
  ------------------
  |  Branch (6939:5): [True: 0, False: 29.4k]
  ------------------
 6940|      0|    case ARM::VQRDMLAHv4i16:
  ------------------
  |  Branch (6940:5): [True: 0, False: 29.4k]
  ------------------
 6941|      0|    case ARM::VQRDMLAHv4i32:
  ------------------
  |  Branch (6941:5): [True: 0, False: 29.4k]
  ------------------
 6942|      0|    case ARM::VQRDMLAHv8i16:
  ------------------
  |  Branch (6942:5): [True: 0, False: 29.4k]
  ------------------
 6943|      0|    case ARM::VQRDMLSHv2i32:
  ------------------
  |  Branch (6943:5): [True: 0, False: 29.4k]
  ------------------
 6944|      0|    case ARM::VQRDMLSHv4i16:
  ------------------
  |  Branch (6944:5): [True: 0, False: 29.4k]
  ------------------
 6945|      0|    case ARM::VQRDMLSHv4i32:
  ------------------
  |  Branch (6945:5): [True: 0, False: 29.4k]
  ------------------
 6946|      0|    case ARM::VQRDMLSHv8i16:
  ------------------
  |  Branch (6946:5): [True: 0, False: 29.4k]
  ------------------
 6947|      0|    case ARM::VTBX1:
  ------------------
  |  Branch (6947:5): [True: 0, False: 29.4k]
  ------------------
 6948|      0|    case ARM::VTBX2:
  ------------------
  |  Branch (6948:5): [True: 0, False: 29.4k]
  ------------------
 6949|      0|    case ARM::VTBX3:
  ------------------
  |  Branch (6949:5): [True: 0, False: 29.4k]
  ------------------
 6950|      0|    case ARM::VTBX4: {
  ------------------
  |  Branch (6950:5): [True: 0, False: 29.4k]
  ------------------
 6951|       |      // op: Vd
 6952|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6953|      0|      Value |= (op & UINT64_C(16)) << 18;
 6954|      0|      Value |= (op & UINT64_C(15)) << 12;
 6955|       |      // op: Vn
 6956|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6957|      0|      Value |= (op & UINT64_C(15)) << 16;
 6958|      0|      Value |= (op & UINT64_C(16)) << 3;
 6959|       |      // op: Vm
 6960|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6961|      0|      Value |= (op & UINT64_C(16)) << 1;
 6962|      0|      Value |= op & UINT64_C(15);
 6963|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6964|      0|      break;
 6965|      0|    }
 6966|      0|    case ARM::VMLALslsv2i32:
  ------------------
  |  Branch (6966:5): [True: 0, False: 29.4k]
  ------------------
 6967|      0|    case ARM::VMLALsluv2i32:
  ------------------
  |  Branch (6967:5): [True: 0, False: 29.4k]
  ------------------
 6968|      0|    case ARM::VMLAslfd:
  ------------------
  |  Branch (6968:5): [True: 0, False: 29.4k]
  ------------------
 6969|      0|    case ARM::VMLAslfq:
  ------------------
  |  Branch (6969:5): [True: 0, False: 29.4k]
  ------------------
 6970|      0|    case ARM::VMLAslv2i32:
  ------------------
  |  Branch (6970:5): [True: 0, False: 29.4k]
  ------------------
 6971|      0|    case ARM::VMLAslv4i32:
  ------------------
  |  Branch (6971:5): [True: 0, False: 29.4k]
  ------------------
 6972|      0|    case ARM::VMLSLslsv2i32:
  ------------------
  |  Branch (6972:5): [True: 0, False: 29.4k]
  ------------------
 6973|      0|    case ARM::VMLSLsluv2i32:
  ------------------
  |  Branch (6973:5): [True: 0, False: 29.4k]
  ------------------
 6974|      0|    case ARM::VMLSslfd:
  ------------------
  |  Branch (6974:5): [True: 0, False: 29.4k]
  ------------------
 6975|      0|    case ARM::VMLSslfq:
  ------------------
  |  Branch (6975:5): [True: 0, False: 29.4k]
  ------------------
 6976|      0|    case ARM::VMLSslv2i32:
  ------------------
  |  Branch (6976:5): [True: 0, False: 29.4k]
  ------------------
 6977|      0|    case ARM::VMLSslv4i32:
  ------------------
  |  Branch (6977:5): [True: 0, False: 29.4k]
  ------------------
 6978|      0|    case ARM::VQDMLALslv2i32:
  ------------------
  |  Branch (6978:5): [True: 0, False: 29.4k]
  ------------------
 6979|      0|    case ARM::VQDMLSLslv2i32:
  ------------------
  |  Branch (6979:5): [True: 0, False: 29.4k]
  ------------------
 6980|      0|    case ARM::VQRDMLAHslv2i32:
  ------------------
  |  Branch (6980:5): [True: 0, False: 29.4k]
  ------------------
 6981|      0|    case ARM::VQRDMLAHslv4i32:
  ------------------
  |  Branch (6981:5): [True: 0, False: 29.4k]
  ------------------
 6982|      0|    case ARM::VQRDMLSHslv2i32:
  ------------------
  |  Branch (6982:5): [True: 0, False: 29.4k]
  ------------------
 6983|      0|    case ARM::VQRDMLSHslv4i32: {
  ------------------
  |  Branch (6983:5): [True: 0, False: 29.4k]
  ------------------
 6984|       |      // op: Vd
 6985|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 6986|      0|      Value |= (op & UINT64_C(16)) << 18;
 6987|      0|      Value |= (op & UINT64_C(15)) << 12;
 6988|       |      // op: Vn
 6989|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 6990|      0|      Value |= (op & UINT64_C(15)) << 16;
 6991|      0|      Value |= (op & UINT64_C(16)) << 3;
 6992|       |      // op: Vm
 6993|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 6994|      0|      Value |= op & UINT64_C(15);
 6995|       |      // op: lane
 6996|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 6997|      0|      Value |= (op & UINT64_C(1)) << 5;
 6998|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 6999|      0|      break;
 7000|      0|    }
 7001|      0|    case ARM::VMLALslsv4i16:
  ------------------
  |  Branch (7001:5): [True: 0, False: 29.4k]
  ------------------
 7002|      0|    case ARM::VMLALsluv4i16:
  ------------------
  |  Branch (7002:5): [True: 0, False: 29.4k]
  ------------------
 7003|      0|    case ARM::VMLAslhd:
  ------------------
  |  Branch (7003:5): [True: 0, False: 29.4k]
  ------------------
 7004|      0|    case ARM::VMLAslhq:
  ------------------
  |  Branch (7004:5): [True: 0, False: 29.4k]
  ------------------
 7005|      0|    case ARM::VMLAslv4i16:
  ------------------
  |  Branch (7005:5): [True: 0, False: 29.4k]
  ------------------
 7006|      0|    case ARM::VMLAslv8i16:
  ------------------
  |  Branch (7006:5): [True: 0, False: 29.4k]
  ------------------
 7007|      0|    case ARM::VMLSLslsv4i16:
  ------------------
  |  Branch (7007:5): [True: 0, False: 29.4k]
  ------------------
 7008|      0|    case ARM::VMLSLsluv4i16:
  ------------------
  |  Branch (7008:5): [True: 0, False: 29.4k]
  ------------------
 7009|      0|    case ARM::VMLSslhd:
  ------------------
  |  Branch (7009:5): [True: 0, False: 29.4k]
  ------------------
 7010|      0|    case ARM::VMLSslhq:
  ------------------
  |  Branch (7010:5): [True: 0, False: 29.4k]
  ------------------
 7011|      0|    case ARM::VMLSslv4i16:
  ------------------
  |  Branch (7011:5): [True: 0, False: 29.4k]
  ------------------
 7012|      0|    case ARM::VMLSslv8i16:
  ------------------
  |  Branch (7012:5): [True: 0, False: 29.4k]
  ------------------
 7013|      0|    case ARM::VQDMLALslv4i16:
  ------------------
  |  Branch (7013:5): [True: 0, False: 29.4k]
  ------------------
 7014|      0|    case ARM::VQDMLSLslv4i16:
  ------------------
  |  Branch (7014:5): [True: 0, False: 29.4k]
  ------------------
 7015|      0|    case ARM::VQRDMLAHslv4i16:
  ------------------
  |  Branch (7015:5): [True: 0, False: 29.4k]
  ------------------
 7016|      0|    case ARM::VQRDMLAHslv8i16:
  ------------------
  |  Branch (7016:5): [True: 0, False: 29.4k]
  ------------------
 7017|      0|    case ARM::VQRDMLSHslv4i16:
  ------------------
  |  Branch (7017:5): [True: 0, False: 29.4k]
  ------------------
 7018|      0|    case ARM::VQRDMLSHslv8i16: {
  ------------------
  |  Branch (7018:5): [True: 0, False: 29.4k]
  ------------------
 7019|       |      // op: Vd
 7020|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7021|      0|      Value |= (op & UINT64_C(16)) << 18;
 7022|      0|      Value |= (op & UINT64_C(15)) << 12;
 7023|       |      // op: Vn
 7024|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7025|      0|      Value |= (op & UINT64_C(15)) << 16;
 7026|      0|      Value |= (op & UINT64_C(16)) << 3;
 7027|       |      // op: Vm
 7028|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7029|      0|      Value |= op & UINT64_C(7);
 7030|       |      // op: lane
 7031|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7032|      0|      Value |= (op & UINT64_C(2)) << 4;
 7033|      0|      Value |= (op & UINT64_C(1)) << 3;
 7034|      0|      Value = NEONThumb2DataIPostEncoder(MI, Value, STI);
 7035|      0|      break;
 7036|      0|    }
 7037|      0|    case ARM::VST1LNd8: {
  ------------------
  |  Branch (7037:5): [True: 0, False: 29.4k]
  ------------------
 7038|       |      // op: Vd
 7039|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7040|      0|      Value |= (op & UINT64_C(16)) << 18;
 7041|      0|      Value |= (op & UINT64_C(15)) << 12;
 7042|       |      // op: Rn
 7043|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7044|      0|      Value |= (op & UINT64_C(15)) << 16;
 7045|       |      // op: lane
 7046|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7047|      0|      Value |= (op & UINT64_C(7)) << 5;
 7048|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7049|      0|      break;
 7050|      0|    }
 7051|      0|    case ARM::VST3LNd32:
  ------------------
  |  Branch (7051:5): [True: 0, False: 29.4k]
  ------------------
 7052|      0|    case ARM::VST3LNq32: {
  ------------------
  |  Branch (7052:5): [True: 0, False: 29.4k]
  ------------------
 7053|       |      // op: Vd
 7054|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7055|      0|      Value |= (op & UINT64_C(16)) << 18;
 7056|      0|      Value |= (op & UINT64_C(15)) << 12;
 7057|       |      // op: Rn
 7058|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7059|      0|      Value |= (op & UINT64_C(15)) << 16;
 7060|       |      // op: lane
 7061|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 7062|      0|      Value |= (op & UINT64_C(1)) << 7;
 7063|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7064|      0|      break;
 7065|      0|    }
 7066|      0|    case ARM::VST3LNd16:
  ------------------
  |  Branch (7066:5): [True: 0, False: 29.4k]
  ------------------
 7067|      0|    case ARM::VST3LNq16: {
  ------------------
  |  Branch (7067:5): [True: 0, False: 29.4k]
  ------------------
 7068|       |      // op: Vd
 7069|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7070|      0|      Value |= (op & UINT64_C(16)) << 18;
 7071|      0|      Value |= (op & UINT64_C(15)) << 12;
 7072|       |      // op: Rn
 7073|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7074|      0|      Value |= (op & UINT64_C(15)) << 16;
 7075|       |      // op: lane
 7076|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 7077|      0|      Value |= (op & UINT64_C(3)) << 6;
 7078|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7079|      0|      break;
 7080|      0|    }
 7081|      0|    case ARM::VST3LNd8: {
  ------------------
  |  Branch (7081:5): [True: 0, False: 29.4k]
  ------------------
 7082|       |      // op: Vd
 7083|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7084|      0|      Value |= (op & UINT64_C(16)) << 18;
 7085|      0|      Value |= (op & UINT64_C(15)) << 12;
 7086|       |      // op: Rn
 7087|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7088|      0|      Value |= (op & UINT64_C(15)) << 16;
 7089|       |      // op: lane
 7090|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 7091|      0|      Value |= (op & UINT64_C(7)) << 5;
 7092|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7093|      0|      break;
 7094|      0|    }
 7095|      0|    case ARM::VST1LNd16: {
  ------------------
  |  Branch (7095:5): [True: 0, False: 29.4k]
  ------------------
 7096|       |      // op: Vd
 7097|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7098|      0|      Value |= (op & UINT64_C(16)) << 18;
 7099|      0|      Value |= (op & UINT64_C(15)) << 12;
 7100|       |      // op: Rn
 7101|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7102|      0|      Value |= (op & UINT64_C(15)) << 16;
 7103|      0|      Value |= op & UINT64_C(16);
 7104|       |      // op: lane
 7105|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7106|      0|      Value |= (op & UINT64_C(3)) << 6;
 7107|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7108|      0|      break;
 7109|      0|    }
 7110|      0|    case ARM::VST2LNd32:
  ------------------
  |  Branch (7110:5): [True: 0, False: 29.4k]
  ------------------
 7111|      0|    case ARM::VST2LNq32: {
  ------------------
  |  Branch (7111:5): [True: 0, False: 29.4k]
  ------------------
 7112|       |      // op: Vd
 7113|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7114|      0|      Value |= (op & UINT64_C(16)) << 18;
 7115|      0|      Value |= (op & UINT64_C(15)) << 12;
 7116|       |      // op: Rn
 7117|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7118|      0|      Value |= (op & UINT64_C(15)) << 16;
 7119|      0|      Value |= op & UINT64_C(16);
 7120|       |      // op: lane
 7121|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7122|      0|      Value |= (op & UINT64_C(1)) << 7;
 7123|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7124|      0|      break;
 7125|      0|    }
 7126|      0|    case ARM::VST2LNd16:
  ------------------
  |  Branch (7126:5): [True: 0, False: 29.4k]
  ------------------
 7127|      0|    case ARM::VST2LNq16: {
  ------------------
  |  Branch (7127:5): [True: 0, False: 29.4k]
  ------------------
 7128|       |      // op: Vd
 7129|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7130|      0|      Value |= (op & UINT64_C(16)) << 18;
 7131|      0|      Value |= (op & UINT64_C(15)) << 12;
 7132|       |      // op: Rn
 7133|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7134|      0|      Value |= (op & UINT64_C(15)) << 16;
 7135|      0|      Value |= op & UINT64_C(16);
 7136|       |      // op: lane
 7137|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7138|      0|      Value |= (op & UINT64_C(3)) << 6;
 7139|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7140|      0|      break;
 7141|      0|    }
 7142|      0|    case ARM::VST2LNd8: {
  ------------------
  |  Branch (7142:5): [True: 0, False: 29.4k]
  ------------------
 7143|       |      // op: Vd
 7144|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7145|      0|      Value |= (op & UINT64_C(16)) << 18;
 7146|      0|      Value |= (op & UINT64_C(15)) << 12;
 7147|       |      // op: Rn
 7148|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7149|      0|      Value |= (op & UINT64_C(15)) << 16;
 7150|      0|      Value |= op & UINT64_C(16);
 7151|       |      // op: lane
 7152|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7153|      0|      Value |= (op & UINT64_C(7)) << 5;
 7154|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7155|      0|      break;
 7156|      0|    }
 7157|      0|    case ARM::VST4LNd16:
  ------------------
  |  Branch (7157:5): [True: 0, False: 29.4k]
  ------------------
 7158|      0|    case ARM::VST4LNq16: {
  ------------------
  |  Branch (7158:5): [True: 0, False: 29.4k]
  ------------------
 7159|       |      // op: Vd
 7160|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7161|      0|      Value |= (op & UINT64_C(16)) << 18;
 7162|      0|      Value |= (op & UINT64_C(15)) << 12;
 7163|       |      // op: Rn
 7164|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7165|      0|      Value |= (op & UINT64_C(15)) << 16;
 7166|      0|      Value |= op & UINT64_C(16);
 7167|       |      // op: lane
 7168|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 7169|      0|      Value |= (op & UINT64_C(3)) << 6;
 7170|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7171|      0|      break;
 7172|      0|    }
 7173|      0|    case ARM::VST4LNd8: {
  ------------------
  |  Branch (7173:5): [True: 0, False: 29.4k]
  ------------------
 7174|       |      // op: Vd
 7175|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7176|      0|      Value |= (op & UINT64_C(16)) << 18;
 7177|      0|      Value |= (op & UINT64_C(15)) << 12;
 7178|       |      // op: Rn
 7179|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7180|      0|      Value |= (op & UINT64_C(15)) << 16;
 7181|      0|      Value |= op & UINT64_C(16);
 7182|       |      // op: lane
 7183|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 7184|      0|      Value |= (op & UINT64_C(7)) << 5;
 7185|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7186|      0|      break;
 7187|      0|    }
 7188|      0|    case ARM::VST1d16:
  ------------------
  |  Branch (7188:5): [True: 0, False: 29.4k]
  ------------------
 7189|      0|    case ARM::VST1d16T:
  ------------------
  |  Branch (7189:5): [True: 0, False: 29.4k]
  ------------------
 7190|      0|    case ARM::VST1d32:
  ------------------
  |  Branch (7190:5): [True: 0, False: 29.4k]
  ------------------
 7191|      0|    case ARM::VST1d32T:
  ------------------
  |  Branch (7191:5): [True: 0, False: 29.4k]
  ------------------
 7192|      0|    case ARM::VST1d64:
  ------------------
  |  Branch (7192:5): [True: 0, False: 29.4k]
  ------------------
 7193|      0|    case ARM::VST1d64T:
  ------------------
  |  Branch (7193:5): [True: 0, False: 29.4k]
  ------------------
 7194|      0|    case ARM::VST1d8:
  ------------------
  |  Branch (7194:5): [True: 0, False: 29.4k]
  ------------------
 7195|      0|    case ARM::VST1d8T:
  ------------------
  |  Branch (7195:5): [True: 0, False: 29.4k]
  ------------------
 7196|      0|    case ARM::VST3d16:
  ------------------
  |  Branch (7196:5): [True: 0, False: 29.4k]
  ------------------
 7197|      0|    case ARM::VST3d32:
  ------------------
  |  Branch (7197:5): [True: 0, False: 29.4k]
  ------------------
 7198|      0|    case ARM::VST3d8:
  ------------------
  |  Branch (7198:5): [True: 0, False: 29.4k]
  ------------------
 7199|      0|    case ARM::VST3q16:
  ------------------
  |  Branch (7199:5): [True: 0, False: 29.4k]
  ------------------
 7200|      0|    case ARM::VST3q32:
  ------------------
  |  Branch (7200:5): [True: 0, False: 29.4k]
  ------------------
 7201|      0|    case ARM::VST3q8: {
  ------------------
  |  Branch (7201:5): [True: 0, False: 29.4k]
  ------------------
 7202|       |      // op: Vd
 7203|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7204|      0|      Value |= (op & UINT64_C(16)) << 18;
 7205|      0|      Value |= (op & UINT64_C(15)) << 12;
 7206|       |      // op: Rn
 7207|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7208|      0|      Value |= (op & UINT64_C(15)) << 16;
 7209|      0|      Value |= op & UINT64_C(16);
 7210|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7211|      0|      break;
 7212|      0|    }
 7213|      0|    case ARM::VST4LNd32:
  ------------------
  |  Branch (7213:5): [True: 0, False: 29.4k]
  ------------------
 7214|      0|    case ARM::VST4LNq32: {
  ------------------
  |  Branch (7214:5): [True: 0, False: 29.4k]
  ------------------
 7215|       |      // op: Vd
 7216|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7217|      0|      Value |= (op & UINT64_C(16)) << 18;
 7218|      0|      Value |= (op & UINT64_C(15)) << 12;
 7219|       |      // op: Rn
 7220|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7221|      0|      Value |= (op & UINT64_C(15)) << 16;
 7222|      0|      Value |= op & UINT64_C(48);
 7223|       |      // op: lane
 7224|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 7225|      0|      Value |= (op & UINT64_C(1)) << 7;
 7226|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7227|      0|      break;
 7228|      0|    }
 7229|      0|    case ARM::VST1d16Q:
  ------------------
  |  Branch (7229:5): [True: 0, False: 29.4k]
  ------------------
 7230|      0|    case ARM::VST1d32Q:
  ------------------
  |  Branch (7230:5): [True: 0, False: 29.4k]
  ------------------
 7231|      0|    case ARM::VST1d64Q:
  ------------------
  |  Branch (7231:5): [True: 0, False: 29.4k]
  ------------------
 7232|      0|    case ARM::VST1d8Q:
  ------------------
  |  Branch (7232:5): [True: 0, False: 29.4k]
  ------------------
 7233|      0|    case ARM::VST1q16:
  ------------------
  |  Branch (7233:5): [True: 0, False: 29.4k]
  ------------------
 7234|      0|    case ARM::VST1q32:
  ------------------
  |  Branch (7234:5): [True: 0, False: 29.4k]
  ------------------
 7235|      0|    case ARM::VST1q64:
  ------------------
  |  Branch (7235:5): [True: 0, False: 29.4k]
  ------------------
 7236|      0|    case ARM::VST1q8:
  ------------------
  |  Branch (7236:5): [True: 0, False: 29.4k]
  ------------------
 7237|      0|    case ARM::VST2b16:
  ------------------
  |  Branch (7237:5): [True: 0, False: 29.4k]
  ------------------
 7238|      0|    case ARM::VST2b32:
  ------------------
  |  Branch (7238:5): [True: 0, False: 29.4k]
  ------------------
 7239|      0|    case ARM::VST2b8:
  ------------------
  |  Branch (7239:5): [True: 0, False: 29.4k]
  ------------------
 7240|      0|    case ARM::VST2d16:
  ------------------
  |  Branch (7240:5): [True: 0, False: 29.4k]
  ------------------
 7241|      0|    case ARM::VST2d32:
  ------------------
  |  Branch (7241:5): [True: 0, False: 29.4k]
  ------------------
 7242|      0|    case ARM::VST2d8:
  ------------------
  |  Branch (7242:5): [True: 0, False: 29.4k]
  ------------------
 7243|      0|    case ARM::VST2q16:
  ------------------
  |  Branch (7243:5): [True: 0, False: 29.4k]
  ------------------
 7244|      0|    case ARM::VST2q32:
  ------------------
  |  Branch (7244:5): [True: 0, False: 29.4k]
  ------------------
 7245|      0|    case ARM::VST2q8:
  ------------------
  |  Branch (7245:5): [True: 0, False: 29.4k]
  ------------------
 7246|      0|    case ARM::VST4d16:
  ------------------
  |  Branch (7246:5): [True: 0, False: 29.4k]
  ------------------
 7247|      0|    case ARM::VST4d32:
  ------------------
  |  Branch (7247:5): [True: 0, False: 29.4k]
  ------------------
 7248|      0|    case ARM::VST4d8:
  ------------------
  |  Branch (7248:5): [True: 0, False: 29.4k]
  ------------------
 7249|      0|    case ARM::VST4q16:
  ------------------
  |  Branch (7249:5): [True: 0, False: 29.4k]
  ------------------
 7250|      0|    case ARM::VST4q32:
  ------------------
  |  Branch (7250:5): [True: 0, False: 29.4k]
  ------------------
 7251|      0|    case ARM::VST4q8: {
  ------------------
  |  Branch (7251:5): [True: 0, False: 29.4k]
  ------------------
 7252|       |      // op: Vd
 7253|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7254|      0|      Value |= (op & UINT64_C(16)) << 18;
 7255|      0|      Value |= (op & UINT64_C(15)) << 12;
 7256|       |      // op: Rn
 7257|      0|      op = getAddrMode6AddressOpValue(MI, 0, Fixups, STI);
 7258|      0|      Value |= (op & UINT64_C(15)) << 16;
 7259|      0|      Value |= op & UINT64_C(48);
 7260|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7261|      0|      break;
 7262|      0|    }
 7263|      0|    case ARM::VST1LNd32: {
  ------------------
  |  Branch (7263:5): [True: 0, False: 29.4k]
  ------------------
 7264|       |      // op: Vd
 7265|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7266|      0|      Value |= (op & UINT64_C(16)) << 18;
 7267|      0|      Value |= (op & UINT64_C(15)) << 12;
 7268|       |      // op: Rn
 7269|      0|      op = getAddrMode6OneLane32AddressOpValue(MI, 0, Fixups, STI);
 7270|      0|      Value |= (op & UINT64_C(15)) << 16;
 7271|      0|      Value |= op & UINT64_C(48);
 7272|       |      // op: lane
 7273|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7274|      0|      Value |= (op & UINT64_C(1)) << 7;
 7275|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7276|      0|      break;
 7277|      0|    }
 7278|      0|    case ARM::VST1d16wb_fixed:
  ------------------
  |  Branch (7278:5): [True: 0, False: 29.4k]
  ------------------
 7279|      0|    case ARM::VST1d32wb_fixed:
  ------------------
  |  Branch (7279:5): [True: 0, False: 29.4k]
  ------------------
 7280|      0|    case ARM::VST1d64wb_fixed:
  ------------------
  |  Branch (7280:5): [True: 0, False: 29.4k]
  ------------------
 7281|      0|    case ARM::VST1d8wb_fixed: {
  ------------------
  |  Branch (7281:5): [True: 0, False: 29.4k]
  ------------------
 7282|       |      // op: Vd
 7283|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7284|      0|      Value |= (op & UINT64_C(16)) << 18;
 7285|      0|      Value |= (op & UINT64_C(15)) << 12;
 7286|       |      // op: Rn
 7287|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7288|      0|      Value |= (op & UINT64_C(15)) << 16;
 7289|      0|      Value |= op & UINT64_C(16);
 7290|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7291|      0|      break;
 7292|      0|    }
 7293|      0|    case ARM::VST1d16Qwb_fixed:
  ------------------
  |  Branch (7293:5): [True: 0, False: 29.4k]
  ------------------
 7294|      0|    case ARM::VST1d16Twb_fixed:
  ------------------
  |  Branch (7294:5): [True: 0, False: 29.4k]
  ------------------
 7295|      0|    case ARM::VST1d32Qwb_fixed:
  ------------------
  |  Branch (7295:5): [True: 0, False: 29.4k]
  ------------------
 7296|      0|    case ARM::VST1d32Twb_fixed:
  ------------------
  |  Branch (7296:5): [True: 0, False: 29.4k]
  ------------------
 7297|      0|    case ARM::VST1d64Qwb_fixed:
  ------------------
  |  Branch (7297:5): [True: 0, False: 29.4k]
  ------------------
 7298|      0|    case ARM::VST1d64Twb_fixed:
  ------------------
  |  Branch (7298:5): [True: 0, False: 29.4k]
  ------------------
 7299|      0|    case ARM::VST1d8Qwb_fixed:
  ------------------
  |  Branch (7299:5): [True: 0, False: 29.4k]
  ------------------
 7300|      0|    case ARM::VST1d8Twb_fixed:
  ------------------
  |  Branch (7300:5): [True: 0, False: 29.4k]
  ------------------
 7301|      0|    case ARM::VST1q16wb_fixed:
  ------------------
  |  Branch (7301:5): [True: 0, False: 29.4k]
  ------------------
 7302|      0|    case ARM::VST1q32wb_fixed:
  ------------------
  |  Branch (7302:5): [True: 0, False: 29.4k]
  ------------------
 7303|      0|    case ARM::VST1q64wb_fixed:
  ------------------
  |  Branch (7303:5): [True: 0, False: 29.4k]
  ------------------
 7304|      0|    case ARM::VST1q8wb_fixed:
  ------------------
  |  Branch (7304:5): [True: 0, False: 29.4k]
  ------------------
 7305|      0|    case ARM::VST2b16wb_fixed:
  ------------------
  |  Branch (7305:5): [True: 0, False: 29.4k]
  ------------------
 7306|      0|    case ARM::VST2b32wb_fixed:
  ------------------
  |  Branch (7306:5): [True: 0, False: 29.4k]
  ------------------
 7307|      0|    case ARM::VST2b8wb_fixed:
  ------------------
  |  Branch (7307:5): [True: 0, False: 29.4k]
  ------------------
 7308|      0|    case ARM::VST2d16wb_fixed:
  ------------------
  |  Branch (7308:5): [True: 0, False: 29.4k]
  ------------------
 7309|      0|    case ARM::VST2d32wb_fixed:
  ------------------
  |  Branch (7309:5): [True: 0, False: 29.4k]
  ------------------
 7310|      0|    case ARM::VST2d8wb_fixed:
  ------------------
  |  Branch (7310:5): [True: 0, False: 29.4k]
  ------------------
 7311|      0|    case ARM::VST2q16wb_fixed:
  ------------------
  |  Branch (7311:5): [True: 0, False: 29.4k]
  ------------------
 7312|      0|    case ARM::VST2q32wb_fixed:
  ------------------
  |  Branch (7312:5): [True: 0, False: 29.4k]
  ------------------
 7313|      0|    case ARM::VST2q8wb_fixed: {
  ------------------
  |  Branch (7313:5): [True: 0, False: 29.4k]
  ------------------
 7314|       |      // op: Vd
 7315|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7316|      0|      Value |= (op & UINT64_C(16)) << 18;
 7317|      0|      Value |= (op & UINT64_C(15)) << 12;
 7318|       |      // op: Rn
 7319|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7320|      0|      Value |= (op & UINT64_C(15)) << 16;
 7321|      0|      Value |= op & UINT64_C(48);
 7322|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7323|      0|      break;
 7324|      0|    }
 7325|      0|    case ARM::VST1LNd8_UPD: {
  ------------------
  |  Branch (7325:5): [True: 0, False: 29.4k]
  ------------------
 7326|       |      // op: Vd
 7327|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7328|      0|      Value |= (op & UINT64_C(16)) << 18;
 7329|      0|      Value |= (op & UINT64_C(15)) << 12;
 7330|       |      // op: Rn
 7331|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7332|      0|      Value |= (op & UINT64_C(15)) << 16;
 7333|       |      // op: Rm
 7334|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7335|      0|      Value |= op & UINT64_C(15);
 7336|       |      // op: lane
 7337|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 7338|      0|      Value |= (op & UINT64_C(7)) << 5;
 7339|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7340|      0|      break;
 7341|      0|    }
 7342|      0|    case ARM::VST3LNd32_UPD:
  ------------------
  |  Branch (7342:5): [True: 0, False: 29.4k]
  ------------------
 7343|      0|    case ARM::VST3LNq32_UPD: {
  ------------------
  |  Branch (7343:5): [True: 0, False: 29.4k]
  ------------------
 7344|       |      // op: Vd
 7345|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7346|      0|      Value |= (op & UINT64_C(16)) << 18;
 7347|      0|      Value |= (op & UINT64_C(15)) << 12;
 7348|       |      // op: Rn
 7349|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7350|      0|      Value |= (op & UINT64_C(15)) << 16;
 7351|       |      // op: Rm
 7352|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7353|      0|      Value |= op & UINT64_C(15);
 7354|       |      // op: lane
 7355|      0|      op = getMachineOpValue(MI, MI.getOperand(7), Fixups, STI);
 7356|      0|      Value |= (op & UINT64_C(1)) << 7;
 7357|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7358|      0|      break;
 7359|      0|    }
 7360|      0|    case ARM::VST3LNd16_UPD:
  ------------------
  |  Branch (7360:5): [True: 0, False: 29.4k]
  ------------------
 7361|      0|    case ARM::VST3LNq16_UPD: {
  ------------------
  |  Branch (7361:5): [True: 0, False: 29.4k]
  ------------------
 7362|       |      // op: Vd
 7363|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7364|      0|      Value |= (op & UINT64_C(16)) << 18;
 7365|      0|      Value |= (op & UINT64_C(15)) << 12;
 7366|       |      // op: Rn
 7367|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7368|      0|      Value |= (op & UINT64_C(15)) << 16;
 7369|       |      // op: Rm
 7370|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7371|      0|      Value |= op & UINT64_C(15);
 7372|       |      // op: lane
 7373|      0|      op = getMachineOpValue(MI, MI.getOperand(7), Fixups, STI);
 7374|      0|      Value |= (op & UINT64_C(3)) << 6;
 7375|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7376|      0|      break;
 7377|      0|    }
 7378|      0|    case ARM::VST3LNd8_UPD: {
  ------------------
  |  Branch (7378:5): [True: 0, False: 29.4k]
  ------------------
 7379|       |      // op: Vd
 7380|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7381|      0|      Value |= (op & UINT64_C(16)) << 18;
 7382|      0|      Value |= (op & UINT64_C(15)) << 12;
 7383|       |      // op: Rn
 7384|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7385|      0|      Value |= (op & UINT64_C(15)) << 16;
 7386|       |      // op: Rm
 7387|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7388|      0|      Value |= op & UINT64_C(15);
 7389|       |      // op: lane
 7390|      0|      op = getMachineOpValue(MI, MI.getOperand(7), Fixups, STI);
 7391|      0|      Value |= (op & UINT64_C(7)) << 5;
 7392|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7393|      0|      break;
 7394|      0|    }
 7395|      0|    case ARM::VST1LNd16_UPD: {
  ------------------
  |  Branch (7395:5): [True: 0, False: 29.4k]
  ------------------
 7396|       |      // op: Vd
 7397|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7398|      0|      Value |= (op & UINT64_C(16)) << 18;
 7399|      0|      Value |= (op & UINT64_C(15)) << 12;
 7400|       |      // op: Rn
 7401|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7402|      0|      Value |= (op & UINT64_C(15)) << 16;
 7403|      0|      Value |= op & UINT64_C(16);
 7404|       |      // op: Rm
 7405|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7406|      0|      Value |= op & UINT64_C(15);
 7407|       |      // op: lane
 7408|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 7409|      0|      Value |= (op & UINT64_C(3)) << 6;
 7410|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7411|      0|      break;
 7412|      0|    }
 7413|      0|    case ARM::VST2LNd32_UPD:
  ------------------
  |  Branch (7413:5): [True: 0, False: 29.4k]
  ------------------
 7414|      0|    case ARM::VST2LNq32_UPD: {
  ------------------
  |  Branch (7414:5): [True: 0, False: 29.4k]
  ------------------
 7415|       |      // op: Vd
 7416|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7417|      0|      Value |= (op & UINT64_C(16)) << 18;
 7418|      0|      Value |= (op & UINT64_C(15)) << 12;
 7419|       |      // op: Rn
 7420|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7421|      0|      Value |= (op & UINT64_C(15)) << 16;
 7422|      0|      Value |= op & UINT64_C(16);
 7423|       |      // op: Rm
 7424|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7425|      0|      Value |= op & UINT64_C(15);
 7426|       |      // op: lane
 7427|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 7428|      0|      Value |= (op & UINT64_C(1)) << 7;
 7429|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7430|      0|      break;
 7431|      0|    }
 7432|      0|    case ARM::VST2LNd16_UPD:
  ------------------
  |  Branch (7432:5): [True: 0, False: 29.4k]
  ------------------
 7433|      0|    case ARM::VST2LNq16_UPD: {
  ------------------
  |  Branch (7433:5): [True: 0, False: 29.4k]
  ------------------
 7434|       |      // op: Vd
 7435|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7436|      0|      Value |= (op & UINT64_C(16)) << 18;
 7437|      0|      Value |= (op & UINT64_C(15)) << 12;
 7438|       |      // op: Rn
 7439|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7440|      0|      Value |= (op & UINT64_C(15)) << 16;
 7441|      0|      Value |= op & UINT64_C(16);
 7442|       |      // op: Rm
 7443|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7444|      0|      Value |= op & UINT64_C(15);
 7445|       |      // op: lane
 7446|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 7447|      0|      Value |= (op & UINT64_C(3)) << 6;
 7448|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7449|      0|      break;
 7450|      0|    }
 7451|      0|    case ARM::VST2LNd8_UPD: {
  ------------------
  |  Branch (7451:5): [True: 0, False: 29.4k]
  ------------------
 7452|       |      // op: Vd
 7453|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7454|      0|      Value |= (op & UINT64_C(16)) << 18;
 7455|      0|      Value |= (op & UINT64_C(15)) << 12;
 7456|       |      // op: Rn
 7457|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7458|      0|      Value |= (op & UINT64_C(15)) << 16;
 7459|      0|      Value |= op & UINT64_C(16);
 7460|       |      // op: Rm
 7461|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7462|      0|      Value |= op & UINT64_C(15);
 7463|       |      // op: lane
 7464|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
 7465|      0|      Value |= (op & UINT64_C(7)) << 5;
 7466|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7467|      0|      break;
 7468|      0|    }
 7469|      0|    case ARM::VST4LNd16_UPD:
  ------------------
  |  Branch (7469:5): [True: 0, False: 29.4k]
  ------------------
 7470|      0|    case ARM::VST4LNq16_UPD: {
  ------------------
  |  Branch (7470:5): [True: 0, False: 29.4k]
  ------------------
 7471|       |      // op: Vd
 7472|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7473|      0|      Value |= (op & UINT64_C(16)) << 18;
 7474|      0|      Value |= (op & UINT64_C(15)) << 12;
 7475|       |      // op: Rn
 7476|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7477|      0|      Value |= (op & UINT64_C(15)) << 16;
 7478|      0|      Value |= op & UINT64_C(16);
 7479|       |      // op: Rm
 7480|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7481|      0|      Value |= op & UINT64_C(15);
 7482|       |      // op: lane
 7483|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 7484|      0|      Value |= (op & UINT64_C(3)) << 6;
 7485|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7486|      0|      break;
 7487|      0|    }
 7488|      0|    case ARM::VST4LNd8_UPD: {
  ------------------
  |  Branch (7488:5): [True: 0, False: 29.4k]
  ------------------
 7489|       |      // op: Vd
 7490|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7491|      0|      Value |= (op & UINT64_C(16)) << 18;
 7492|      0|      Value |= (op & UINT64_C(15)) << 12;
 7493|       |      // op: Rn
 7494|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7495|      0|      Value |= (op & UINT64_C(15)) << 16;
 7496|      0|      Value |= op & UINT64_C(16);
 7497|       |      // op: Rm
 7498|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7499|      0|      Value |= op & UINT64_C(15);
 7500|       |      // op: lane
 7501|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 7502|      0|      Value |= (op & UINT64_C(7)) << 5;
 7503|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7504|      0|      break;
 7505|      0|    }
 7506|      0|    case ARM::VST3d16_UPD:
  ------------------
  |  Branch (7506:5): [True: 0, False: 29.4k]
  ------------------
 7507|      0|    case ARM::VST3d32_UPD:
  ------------------
  |  Branch (7507:5): [True: 0, False: 29.4k]
  ------------------
 7508|      0|    case ARM::VST3d8_UPD:
  ------------------
  |  Branch (7508:5): [True: 0, False: 29.4k]
  ------------------
 7509|      0|    case ARM::VST3q16_UPD:
  ------------------
  |  Branch (7509:5): [True: 0, False: 29.4k]
  ------------------
 7510|      0|    case ARM::VST3q32_UPD:
  ------------------
  |  Branch (7510:5): [True: 0, False: 29.4k]
  ------------------
 7511|      0|    case ARM::VST3q8_UPD: {
  ------------------
  |  Branch (7511:5): [True: 0, False: 29.4k]
  ------------------
 7512|       |      // op: Vd
 7513|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7514|      0|      Value |= (op & UINT64_C(16)) << 18;
 7515|      0|      Value |= (op & UINT64_C(15)) << 12;
 7516|       |      // op: Rn
 7517|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7518|      0|      Value |= (op & UINT64_C(15)) << 16;
 7519|      0|      Value |= op & UINT64_C(16);
 7520|       |      // op: Rm
 7521|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7522|      0|      Value |= op & UINT64_C(15);
 7523|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7524|      0|      break;
 7525|      0|    }
 7526|      0|    case ARM::VST1d16wb_register:
  ------------------
  |  Branch (7526:5): [True: 0, False: 29.4k]
  ------------------
 7527|      0|    case ARM::VST1d32wb_register:
  ------------------
  |  Branch (7527:5): [True: 0, False: 29.4k]
  ------------------
 7528|      0|    case ARM::VST1d64wb_register:
  ------------------
  |  Branch (7528:5): [True: 0, False: 29.4k]
  ------------------
 7529|      0|    case ARM::VST1d8wb_register: {
  ------------------
  |  Branch (7529:5): [True: 0, False: 29.4k]
  ------------------
 7530|       |      // op: Vd
 7531|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7532|      0|      Value |= (op & UINT64_C(16)) << 18;
 7533|      0|      Value |= (op & UINT64_C(15)) << 12;
 7534|       |      // op: Rn
 7535|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7536|      0|      Value |= (op & UINT64_C(15)) << 16;
 7537|      0|      Value |= op & UINT64_C(16);
 7538|       |      // op: Rm
 7539|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7540|      0|      Value |= op & UINT64_C(15);
 7541|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7542|      0|      break;
 7543|      0|    }
 7544|      0|    case ARM::VST4LNd32_UPD:
  ------------------
  |  Branch (7544:5): [True: 0, False: 29.4k]
  ------------------
 7545|      0|    case ARM::VST4LNq32_UPD: {
  ------------------
  |  Branch (7545:5): [True: 0, False: 29.4k]
  ------------------
 7546|       |      // op: Vd
 7547|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7548|      0|      Value |= (op & UINT64_C(16)) << 18;
 7549|      0|      Value |= (op & UINT64_C(15)) << 12;
 7550|       |      // op: Rn
 7551|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7552|      0|      Value |= (op & UINT64_C(15)) << 16;
 7553|      0|      Value |= op & UINT64_C(48);
 7554|       |      // op: Rm
 7555|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7556|      0|      Value |= op & UINT64_C(15);
 7557|       |      // op: lane
 7558|      0|      op = getMachineOpValue(MI, MI.getOperand(8), Fixups, STI);
 7559|      0|      Value |= (op & UINT64_C(1)) << 7;
 7560|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7561|      0|      break;
 7562|      0|    }
 7563|      0|    case ARM::VST4d16_UPD:
  ------------------
  |  Branch (7563:5): [True: 0, False: 29.4k]
  ------------------
 7564|      0|    case ARM::VST4d32_UPD:
  ------------------
  |  Branch (7564:5): [True: 0, False: 29.4k]
  ------------------
 7565|      0|    case ARM::VST4d8_UPD:
  ------------------
  |  Branch (7565:5): [True: 0, False: 29.4k]
  ------------------
 7566|      0|    case ARM::VST4q16_UPD:
  ------------------
  |  Branch (7566:5): [True: 0, False: 29.4k]
  ------------------
 7567|      0|    case ARM::VST4q32_UPD:
  ------------------
  |  Branch (7567:5): [True: 0, False: 29.4k]
  ------------------
 7568|      0|    case ARM::VST4q8_UPD: {
  ------------------
  |  Branch (7568:5): [True: 0, False: 29.4k]
  ------------------
 7569|       |      // op: Vd
 7570|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7571|      0|      Value |= (op & UINT64_C(16)) << 18;
 7572|      0|      Value |= (op & UINT64_C(15)) << 12;
 7573|       |      // op: Rn
 7574|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7575|      0|      Value |= (op & UINT64_C(15)) << 16;
 7576|      0|      Value |= op & UINT64_C(48);
 7577|       |      // op: Rm
 7578|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7579|      0|      Value |= op & UINT64_C(15);
 7580|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7581|      0|      break;
 7582|      0|    }
 7583|      0|    case ARM::VST1d16Qwb_register:
  ------------------
  |  Branch (7583:5): [True: 0, False: 29.4k]
  ------------------
 7584|      0|    case ARM::VST1d16Twb_register:
  ------------------
  |  Branch (7584:5): [True: 0, False: 29.4k]
  ------------------
 7585|      0|    case ARM::VST1d32Qwb_register:
  ------------------
  |  Branch (7585:5): [True: 0, False: 29.4k]
  ------------------
 7586|      0|    case ARM::VST1d32Twb_register:
  ------------------
  |  Branch (7586:5): [True: 0, False: 29.4k]
  ------------------
 7587|      0|    case ARM::VST1d64Qwb_register:
  ------------------
  |  Branch (7587:5): [True: 0, False: 29.4k]
  ------------------
 7588|      0|    case ARM::VST1d64Twb_register:
  ------------------
  |  Branch (7588:5): [True: 0, False: 29.4k]
  ------------------
 7589|      0|    case ARM::VST1d8Qwb_register:
  ------------------
  |  Branch (7589:5): [True: 0, False: 29.4k]
  ------------------
 7590|      0|    case ARM::VST1d8Twb_register:
  ------------------
  |  Branch (7590:5): [True: 0, False: 29.4k]
  ------------------
 7591|      0|    case ARM::VST1q16wb_register:
  ------------------
  |  Branch (7591:5): [True: 0, False: 29.4k]
  ------------------
 7592|      0|    case ARM::VST1q32wb_register:
  ------------------
  |  Branch (7592:5): [True: 0, False: 29.4k]
  ------------------
 7593|      0|    case ARM::VST1q64wb_register:
  ------------------
  |  Branch (7593:5): [True: 0, False: 29.4k]
  ------------------
 7594|      0|    case ARM::VST1q8wb_register:
  ------------------
  |  Branch (7594:5): [True: 0, False: 29.4k]
  ------------------
 7595|      0|    case ARM::VST2b16wb_register:
  ------------------
  |  Branch (7595:5): [True: 0, False: 29.4k]
  ------------------
 7596|      0|    case ARM::VST2b32wb_register:
  ------------------
  |  Branch (7596:5): [True: 0, False: 29.4k]
  ------------------
 7597|      0|    case ARM::VST2b8wb_register:
  ------------------
  |  Branch (7597:5): [True: 0, False: 29.4k]
  ------------------
 7598|      0|    case ARM::VST2d16wb_register:
  ------------------
  |  Branch (7598:5): [True: 0, False: 29.4k]
  ------------------
 7599|      0|    case ARM::VST2d32wb_register:
  ------------------
  |  Branch (7599:5): [True: 0, False: 29.4k]
  ------------------
 7600|      0|    case ARM::VST2d8wb_register:
  ------------------
  |  Branch (7600:5): [True: 0, False: 29.4k]
  ------------------
 7601|      0|    case ARM::VST2q16wb_register:
  ------------------
  |  Branch (7601:5): [True: 0, False: 29.4k]
  ------------------
 7602|      0|    case ARM::VST2q32wb_register:
  ------------------
  |  Branch (7602:5): [True: 0, False: 29.4k]
  ------------------
 7603|      0|    case ARM::VST2q8wb_register: {
  ------------------
  |  Branch (7603:5): [True: 0, False: 29.4k]
  ------------------
 7604|       |      // op: Vd
 7605|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7606|      0|      Value |= (op & UINT64_C(16)) << 18;
 7607|      0|      Value |= (op & UINT64_C(15)) << 12;
 7608|       |      // op: Rn
 7609|      0|      op = getAddrMode6AddressOpValue(MI, 1, Fixups, STI);
 7610|      0|      Value |= (op & UINT64_C(15)) << 16;
 7611|      0|      Value |= op & UINT64_C(48);
 7612|       |      // op: Rm
 7613|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 7614|      0|      Value |= op & UINT64_C(15);
 7615|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7616|      0|      break;
 7617|      0|    }
 7618|      0|    case ARM::VST1LNd32_UPD: {
  ------------------
  |  Branch (7618:5): [True: 0, False: 29.4k]
  ------------------
 7619|       |      // op: Vd
 7620|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 7621|      0|      Value |= (op & UINT64_C(16)) << 18;
 7622|      0|      Value |= (op & UINT64_C(15)) << 12;
 7623|       |      // op: Rn
 7624|      0|      op = getAddrMode6OneLane32AddressOpValue(MI, 1, Fixups, STI);
 7625|      0|      Value |= (op & UINT64_C(15)) << 16;
 7626|      0|      Value |= op & UINT64_C(48);
 7627|       |      // op: Rm
 7628|      0|      op = getAddrMode6OffsetOpValue(MI, 3, Fixups, STI);
 7629|      0|      Value |= op & UINT64_C(15);
 7630|       |      // op: lane
 7631|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 7632|      0|      Value |= (op & UINT64_C(1)) << 7;
 7633|      0|      Value = NEONThumb2LoadStorePostEncoder(MI, Value, STI);
 7634|      0|      break;
 7635|      0|    }
 7636|      1|    case ARM::LDC2L_OFFSET:
  ------------------
  |  Branch (7636:5): [True: 1, False: 29.4k]
  ------------------
 7637|      1|    case ARM::LDC2L_PRE:
  ------------------
  |  Branch (7637:5): [True: 0, False: 29.4k]
  ------------------
 7638|      4|    case ARM::LDC2_OFFSET:
  ------------------
  |  Branch (7638:5): [True: 3, False: 29.4k]
  ------------------
 7639|      4|    case ARM::LDC2_PRE:
  ------------------
  |  Branch (7639:5): [True: 0, False: 29.4k]
  ------------------
 7640|      8|    case ARM::STC2L_OFFSET:
  ------------------
  |  Branch (7640:5): [True: 4, False: 29.4k]
  ------------------
 7641|      8|    case ARM::STC2L_PRE:
  ------------------
  |  Branch (7641:5): [True: 0, False: 29.4k]
  ------------------
 7642|     21|    case ARM::STC2_OFFSET:
  ------------------
  |  Branch (7642:5): [True: 13, False: 29.4k]
  ------------------
 7643|     21|    case ARM::STC2_PRE:
  ------------------
  |  Branch (7643:5): [True: 0, False: 29.4k]
  ------------------
 7644|     21|    case ARM::t2LDC2L_OFFSET:
  ------------------
  |  Branch (7644:5): [True: 0, False: 29.4k]
  ------------------
 7645|     21|    case ARM::t2LDC2L_PRE:
  ------------------
  |  Branch (7645:5): [True: 0, False: 29.4k]
  ------------------
 7646|     21|    case ARM::t2LDC2_OFFSET:
  ------------------
  |  Branch (7646:5): [True: 0, False: 29.4k]
  ------------------
 7647|     21|    case ARM::t2LDC2_PRE:
  ------------------
  |  Branch (7647:5): [True: 0, False: 29.4k]
  ------------------
 7648|     21|    case ARM::t2LDCL_OFFSET:
  ------------------
  |  Branch (7648:5): [True: 0, False: 29.4k]
  ------------------
 7649|     21|    case ARM::t2LDCL_PRE:
  ------------------
  |  Branch (7649:5): [True: 0, False: 29.4k]
  ------------------
 7650|     40|    case ARM::t2LDC_OFFSET:
  ------------------
  |  Branch (7650:5): [True: 19, False: 29.4k]
  ------------------
 7651|     40|    case ARM::t2LDC_PRE:
  ------------------
  |  Branch (7651:5): [True: 0, False: 29.4k]
  ------------------
 7652|     40|    case ARM::t2STC2L_OFFSET:
  ------------------
  |  Branch (7652:5): [True: 0, False: 29.4k]
  ------------------
 7653|     40|    case ARM::t2STC2L_PRE:
  ------------------
  |  Branch (7653:5): [True: 0, False: 29.4k]
  ------------------
 7654|     43|    case ARM::t2STC2_OFFSET:
  ------------------
  |  Branch (7654:5): [True: 3, False: 29.4k]
  ------------------
 7655|     43|    case ARM::t2STC2_PRE:
  ------------------
  |  Branch (7655:5): [True: 0, False: 29.4k]
  ------------------
 7656|     49|    case ARM::t2STCL_OFFSET:
  ------------------
  |  Branch (7656:5): [True: 6, False: 29.4k]
  ------------------
 7657|     49|    case ARM::t2STCL_PRE:
  ------------------
  |  Branch (7657:5): [True: 0, False: 29.4k]
  ------------------
 7658|     88|    case ARM::t2STC_OFFSET:
  ------------------
  |  Branch (7658:5): [True: 39, False: 29.4k]
  ------------------
 7659|     88|    case ARM::t2STC_PRE: {
  ------------------
  |  Branch (7659:5): [True: 0, False: 29.4k]
  ------------------
 7660|       |      // op: addr
 7661|     88|      op = getAddrMode5OpValue(MI, 2, Fixups, STI);
 7662|     88|      Value |= (op & UINT64_C(256)) << 15;
 7663|     88|      Value |= (op & UINT64_C(7680)) << 7;
 7664|     88|      Value |= op & UINT64_C(255);
 7665|       |      // op: cop
 7666|     88|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7667|     88|      Value |= (op & UINT64_C(15)) << 8;
 7668|       |      // op: CRd
 7669|     88|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7670|     88|      Value |= (op & UINT64_C(15)) << 12;
 7671|     88|      break;
 7672|     88|    }
 7673|      0|    case ARM::t2PLDWi12:
  ------------------
  |  Branch (7673:5): [True: 0, False: 29.4k]
  ------------------
 7674|      0|    case ARM::t2PLDi12:
  ------------------
  |  Branch (7674:5): [True: 0, False: 29.4k]
  ------------------
 7675|      0|    case ARM::t2PLIi12: {
  ------------------
  |  Branch (7675:5): [True: 0, False: 29.4k]
  ------------------
 7676|       |      // op: addr
 7677|      0|      op = getAddrModeImm12OpValue(MI, 0, Fixups, STI);
 7678|      0|      Value |= (op & UINT64_C(122880)) << 3;
 7679|      0|      Value |= op & UINT64_C(4095);
 7680|      0|      break;
 7681|      0|    }
 7682|      0|    case ARM::PLDWi12:
  ------------------
  |  Branch (7682:5): [True: 0, False: 29.4k]
  ------------------
 7683|     93|    case ARM::PLDi12:
  ------------------
  |  Branch (7683:5): [True: 93, False: 29.3k]
  ------------------
 7684|    103|    case ARM::PLIi12: {
  ------------------
  |  Branch (7684:5): [True: 10, False: 29.4k]
  ------------------
 7685|       |      // op: addr
 7686|    103|      op = getAddrModeImm12OpValue(MI, 0, Fixups, STI);
 7687|    103|      Value |= (op & UINT64_C(4096)) << 11;
 7688|    103|      Value |= (op & UINT64_C(122880)) << 3;
 7689|    103|      Value |= op & UINT64_C(4095);
 7690|    103|      break;
 7691|     93|    }
 7692|     81|    case ARM::t2PLDpci:
  ------------------
  |  Branch (7692:5): [True: 81, False: 29.4k]
  ------------------
 7693|     94|    case ARM::t2PLIpci: {
  ------------------
  |  Branch (7693:5): [True: 13, False: 29.4k]
  ------------------
 7694|       |      // op: addr
 7695|     94|      op = getAddrModeImm12OpValue(MI, 0, Fixups, STI);
 7696|     94|      Value |= (op & UINT64_C(4096)) << 11;
 7697|     94|      Value |= op & UINT64_C(4095);
 7698|     94|      break;
 7699|     81|    }
 7700|      0|    case ARM::t2LDAEXB:
  ------------------
  |  Branch (7700:5): [True: 0, False: 29.4k]
  ------------------
 7701|      0|    case ARM::t2LDAEXH:
  ------------------
  |  Branch (7701:5): [True: 0, False: 29.4k]
  ------------------
 7702|      0|    case ARM::t2LDREXB:
  ------------------
  |  Branch (7702:5): [True: 0, False: 29.4k]
  ------------------
 7703|      0|    case ARM::t2LDREXH: {
  ------------------
  |  Branch (7703:5): [True: 0, False: 29.4k]
  ------------------
 7704|       |      // op: addr
 7705|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7706|      0|      Value |= (op & UINT64_C(15)) << 16;
 7707|       |      // op: Rt
 7708|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7709|      0|      Value |= (op & UINT64_C(15)) << 12;
 7710|      0|      break;
 7711|      0|    }
 7712|      0|    case ARM::t2LDAEXD:
  ------------------
  |  Branch (7712:5): [True: 0, False: 29.4k]
  ------------------
 7713|      0|    case ARM::t2LDREXD: {
  ------------------
  |  Branch (7713:5): [True: 0, False: 29.4k]
  ------------------
 7714|       |      // op: addr
 7715|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7716|      0|      Value |= (op & UINT64_C(15)) << 16;
 7717|       |      // op: Rt
 7718|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7719|      0|      Value |= (op & UINT64_C(15)) << 12;
 7720|       |      // op: Rt2
 7721|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7722|      0|      Value |= (op & UINT64_C(15)) << 8;
 7723|      0|      break;
 7724|      0|    }
 7725|      0|    case ARM::t2PLDWi8:
  ------------------
  |  Branch (7725:5): [True: 0, False: 29.4k]
  ------------------
 7726|      0|    case ARM::t2PLDi8:
  ------------------
  |  Branch (7726:5): [True: 0, False: 29.4k]
  ------------------
 7727|      0|    case ARM::t2PLIi8: {
  ------------------
  |  Branch (7727:5): [True: 0, False: 29.4k]
  ------------------
 7728|       |      // op: addr
 7729|      0|      op = getT2AddrModeImm8OpValue(MI, 0, Fixups, STI);
 7730|      0|      Value |= (op & UINT64_C(7680)) << 7;
 7731|      0|      Value |= op & UINT64_C(255);
 7732|      0|      break;
 7733|      0|    }
 7734|      0|    case ARM::t2PLDWs:
  ------------------
  |  Branch (7734:5): [True: 0, False: 29.4k]
  ------------------
 7735|      0|    case ARM::t2PLDs:
  ------------------
  |  Branch (7735:5): [True: 0, False: 29.4k]
  ------------------
 7736|      0|    case ARM::t2PLIs: {
  ------------------
  |  Branch (7736:5): [True: 0, False: 29.4k]
  ------------------
 7737|       |      // op: addr
 7738|      0|      op = getT2AddrModeSORegOpValue(MI, 0, Fixups, STI);
 7739|      0|      Value |= (op & UINT64_C(960)) << 10;
 7740|      0|      Value |= (op & UINT64_C(3)) << 4;
 7741|      0|      Value |= (op & UINT64_C(60)) >> 2;
 7742|      0|      break;
 7743|      0|    }
 7744|      0|    case ARM::t2MSRbanked: {
  ------------------
  |  Branch (7744:5): [True: 0, False: 29.4k]
  ------------------
 7745|       |      // op: banked
 7746|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7747|      0|      Value |= (op & UINT64_C(32)) << 15;
 7748|      0|      Value |= (op & UINT64_C(15)) << 8;
 7749|      0|      Value |= op & UINT64_C(16);
 7750|       |      // op: Rn
 7751|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7752|      0|      Value |= (op & UINT64_C(15)) << 16;
 7753|      0|      break;
 7754|      0|    }
 7755|      0|    case ARM::t2MRSbanked: {
  ------------------
  |  Branch (7755:5): [True: 0, False: 29.4k]
  ------------------
 7756|       |      // op: banked
 7757|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7758|      0|      Value |= (op & UINT64_C(32)) << 15;
 7759|      0|      Value |= (op & UINT64_C(15)) << 16;
 7760|      0|      Value |= op & UINT64_C(16);
 7761|       |      // op: Rd
 7762|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7763|      0|      Value |= (op & UINT64_C(15)) << 8;
 7764|      0|      break;
 7765|      0|    }
 7766|     85|    case ARM::t2IT: {
  ------------------
  |  Branch (7766:5): [True: 85, False: 29.4k]
  ------------------
 7767|       |      // op: cc
 7768|     85|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7769|     85|      Value |= (op & UINT64_C(15)) << 4;
 7770|       |      // op: mask
 7771|     85|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7772|     85|      Value |= op & UINT64_C(15);
 7773|     85|      break;
 7774|      0|    }
 7775|      8|    case ARM::tADDrSPi: {
  ------------------
  |  Branch (7775:5): [True: 8, False: 29.4k]
  ------------------
 7776|       |      // op: dst
 7777|      8|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7778|      8|      Value |= (op & UINT64_C(7)) << 8;
 7779|       |      // op: imm
 7780|      8|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7781|      8|      Value |= op & UINT64_C(255);
 7782|      8|      break;
 7783|      0|    }
 7784|      0|    case ARM::BX: {
  ------------------
  |  Branch (7784:5): [True: 0, False: 29.4k]
  ------------------
 7785|       |      // op: dst
 7786|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7787|      0|      Value |= op & UINT64_C(15);
 7788|      0|      break;
 7789|      0|    }
 7790|      0|    case ARM::tPICADD: {
  ------------------
  |  Branch (7790:5): [True: 0, False: 29.4k]
  ------------------
 7791|       |      // op: dst
 7792|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7793|      0|      Value |= op & UINT64_C(7);
 7794|      0|      break;
 7795|      0|    }
 7796|      3|    case ARM::tSETEND: {
  ------------------
  |  Branch (7796:5): [True: 3, False: 29.4k]
  ------------------
 7797|       |      // op: end
 7798|      3|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7799|      3|      Value |= (op & UINT64_C(1)) << 3;
 7800|      3|      break;
 7801|      0|    }
 7802|     45|    case ARM::SETEND: {
  ------------------
  |  Branch (7802:5): [True: 45, False: 29.4k]
  ------------------
 7803|       |      // op: end
 7804|     45|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7805|     45|      Value |= (op & UINT64_C(1)) << 9;
 7806|     45|      break;
 7807|      0|    }
 7808|      0|    case ARM::BL: {
  ------------------
  |  Branch (7808:5): [True: 0, False: 29.4k]
  ------------------
 7809|       |      // op: func
 7810|      0|      op = getARMBLTargetOpValue(MI, 0, Fixups, STI);
 7811|      0|      Value |= op & UINT64_C(16777215);
 7812|      0|      break;
 7813|      0|    }
 7814|     33|    case ARM::t2BXJ: {
  ------------------
  |  Branch (7814:5): [True: 33, False: 29.4k]
  ------------------
 7815|       |      // op: func
 7816|     33|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7817|     33|      Value |= (op & UINT64_C(15)) << 16;
 7818|     33|      break;
 7819|      0|    }
 7820|      0|    case ARM::BLX: {
  ------------------
  |  Branch (7820:5): [True: 0, False: 29.4k]
  ------------------
 7821|       |      // op: func
 7822|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7823|      0|      Value |= op & UINT64_C(15);
 7824|      0|      break;
 7825|      0|    }
 7826|      0|    case ARM::tBLXNSr:
  ------------------
  |  Branch (7826:5): [True: 0, False: 29.4k]
  ------------------
 7827|      7|    case ARM::tBLXr: {
  ------------------
  |  Branch (7827:5): [True: 7, False: 29.4k]
  ------------------
 7828|       |      // op: func
 7829|      7|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7830|      7|      Value |= (op & UINT64_C(15)) << 3;
 7831|      7|      break;
 7832|      0|    }
 7833|  1.58k|    case ARM::tBL: {
  ------------------
  |  Branch (7833:5): [True: 1.58k, False: 27.9k]
  ------------------
 7834|       |      // op: func
 7835|  1.58k|      op = getThumbBLTargetOpValue(MI, 2, Fixups, STI);
 7836|  1.58k|      Value |= (op & UINT64_C(8388608)) << 3;
 7837|  1.58k|      Value |= (op & UINT64_C(2095104)) << 5;
 7838|  1.58k|      Value |= (op & UINT64_C(4194304)) >> 9;
 7839|  1.58k|      Value |= (op & UINT64_C(2097152)) >> 10;
 7840|  1.58k|      Value |= op & UINT64_C(2047);
 7841|  1.58k|      break;
 7842|      0|    }
 7843|     60|    case ARM::tBLXi: {
  ------------------
  |  Branch (7843:5): [True: 60, False: 29.4k]
  ------------------
 7844|       |      // op: func
 7845|     60|      op = getThumbBLXTargetOpValue(MI, 2, Fixups, STI);
 7846|     60|      Value |= (op & UINT64_C(8388608)) << 3;
 7847|     60|      Value |= (op & UINT64_C(2095104)) << 5;
 7848|     60|      Value |= (op & UINT64_C(4194304)) >> 9;
 7849|     60|      Value |= (op & UINT64_C(2097152)) >> 10;
 7850|     60|      Value |= op & UINT64_C(2046);
 7851|     60|      break;
 7852|      0|    }
 7853|      0|    case ARM::t2SETPAN: {
  ------------------
  |  Branch (7853:5): [True: 0, False: 29.4k]
  ------------------
 7854|       |      // op: imm
 7855|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7856|      0|      Value |= (op & UINT64_C(1)) << 3;
 7857|      0|      break;
 7858|      0|    }
 7859|      0|    case ARM::SETPAN: {
  ------------------
  |  Branch (7859:5): [True: 0, False: 29.4k]
  ------------------
 7860|       |      // op: imm
 7861|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7862|      0|      Value |= (op & UINT64_C(1)) << 9;
 7863|      0|      break;
 7864|      0|    }
 7865|    114|    case ARM::tHINT: {
  ------------------
  |  Branch (7865:5): [True: 114, False: 29.3k]
  ------------------
 7866|       |      // op: imm
 7867|    114|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7868|    114|      Value |= (op & UINT64_C(15)) << 4;
 7869|    114|      break;
 7870|      0|    }
 7871|      0|    case ARM::HVC: {
  ------------------
  |  Branch (7871:5): [True: 0, False: 29.4k]
  ------------------
 7872|       |      // op: imm
 7873|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7874|      0|      Value |= (op & UINT64_C(65520)) << 4;
 7875|      0|      Value |= op & UINT64_C(15);
 7876|      0|      break;
 7877|      0|    }
 7878|     20|    case ARM::t2HINT:
  ------------------
  |  Branch (7878:5): [True: 20, False: 29.4k]
  ------------------
 7879|     20|    case ARM::t2SUBS_PC_LR:
  ------------------
  |  Branch (7879:5): [True: 0, False: 29.4k]
  ------------------
 7880|     30|    case ARM::tSVC: {
  ------------------
  |  Branch (7880:5): [True: 10, False: 29.4k]
  ------------------
 7881|       |      // op: imm
 7882|     30|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7883|     30|      Value |= op & UINT64_C(255);
 7884|     30|      break;
 7885|     20|    }
 7886|    329|    case ARM::tADDspi:
  ------------------
  |  Branch (7886:5): [True: 329, False: 29.1k]
  ------------------
 7887|    370|    case ARM::tSUBspi: {
  ------------------
  |  Branch (7887:5): [True: 41, False: 29.4k]
  ------------------
 7888|       |      // op: imm
 7889|    370|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7890|    370|      Value |= op & UINT64_C(127);
 7891|    370|      break;
 7892|    329|    }
 7893|      6|    case ARM::t2HVC:
  ------------------
  |  Branch (7893:5): [True: 6, False: 29.4k]
  ------------------
 7894|      6|    case ARM::t2UDF: {
  ------------------
  |  Branch (7894:5): [True: 0, False: 29.4k]
  ------------------
 7895|       |      // op: imm16
 7896|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7897|      6|      Value |= (op & UINT64_C(61440)) << 4;
 7898|      6|      Value |= op & UINT64_C(4095);
 7899|      6|      break;
 7900|      6|    }
 7901|     10|    case ARM::UDF: {
  ------------------
  |  Branch (7901:5): [True: 10, False: 29.4k]
  ------------------
 7902|       |      // op: imm16
 7903|     10|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7904|     10|      Value |= (op & UINT64_C(65520)) << 4;
 7905|     10|      Value |= op & UINT64_C(15);
 7906|     10|      break;
 7907|      6|    }
 7908|    103|    case ARM::tUDF: {
  ------------------
  |  Branch (7908:5): [True: 103, False: 29.3k]
  ------------------
 7909|       |      // op: imm8
 7910|    103|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7911|    103|      Value |= op & UINT64_C(255);
 7912|    103|      break;
 7913|      6|    }
 7914|     11|    case ARM::tCPS: {
  ------------------
  |  Branch (7914:5): [True: 11, False: 29.4k]
  ------------------
 7915|       |      // op: imod
 7916|     11|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7917|     11|      Value |= (op & UINT64_C(1)) << 4;
 7918|       |      // op: iflags
 7919|     11|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7920|     11|      Value |= op & UINT64_C(7);
 7921|     11|      break;
 7922|      6|    }
 7923|     27|    case ARM::CPS2p: {
  ------------------
  |  Branch (7923:5): [True: 27, False: 29.4k]
  ------------------
 7924|       |      // op: imod
 7925|     27|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7926|     27|      Value |= (op & UINT64_C(3)) << 18;
 7927|       |      // op: iflags
 7928|     27|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7929|     27|      Value |= (op & UINT64_C(7)) << 6;
 7930|     27|      break;
 7931|      6|    }
 7932|      1|    case ARM::CPS3p: {
  ------------------
  |  Branch (7932:5): [True: 1, False: 29.4k]
  ------------------
 7933|       |      // op: imod
 7934|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7935|      1|      Value |= (op & UINT64_C(3)) << 18;
 7936|       |      // op: iflags
 7937|      1|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7938|      1|      Value |= (op & UINT64_C(7)) << 6;
 7939|       |      // op: mode
 7940|      1|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7941|      1|      Value |= op & UINT64_C(31);
 7942|      1|      break;
 7943|      6|    }
 7944|      0|    case ARM::t2CPS2p: {
  ------------------
  |  Branch (7944:5): [True: 0, False: 29.4k]
  ------------------
 7945|       |      // op: imod
 7946|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7947|      0|      Value |= (op & UINT64_C(3)) << 9;
 7948|       |      // op: iflags
 7949|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7950|      0|      Value |= (op & UINT64_C(7)) << 5;
 7951|      0|      break;
 7952|      6|    }
 7953|      1|    case ARM::t2CPS3p: {
  ------------------
  |  Branch (7953:5): [True: 1, False: 29.4k]
  ------------------
 7954|       |      // op: imod
 7955|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7956|      1|      Value |= (op & UINT64_C(3)) << 9;
 7957|       |      // op: iflags
 7958|      1|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7959|      1|      Value |= (op & UINT64_C(7)) << 5;
 7960|       |      // op: mode
 7961|      1|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 7962|      1|      Value |= op & UINT64_C(31);
 7963|      1|      break;
 7964|      6|    }
 7965|     18|    case ARM::t2MSR_AR: {
  ------------------
  |  Branch (7965:5): [True: 18, False: 29.4k]
  ------------------
 7966|       |      // op: mask
 7967|     18|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7968|     18|      Value |= (op & UINT64_C(16)) << 16;
 7969|     18|      Value |= (op & UINT64_C(15)) << 8;
 7970|       |      // op: Rn
 7971|     18|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 7972|     18|      Value |= (op & UINT64_C(15)) << 16;
 7973|     18|      break;
 7974|      6|    }
 7975|     41|    case ARM::CPS1p:
  ------------------
  |  Branch (7975:5): [True: 41, False: 29.4k]
  ------------------
 7976|     51|    case ARM::SRSDA:
  ------------------
  |  Branch (7976:5): [True: 10, False: 29.4k]
  ------------------
 7977|     51|    case ARM::SRSDA_UPD:
  ------------------
  |  Branch (7977:5): [True: 0, False: 29.4k]
  ------------------
 7978|     88|    case ARM::SRSDB:
  ------------------
  |  Branch (7978:5): [True: 37, False: 29.4k]
  ------------------
 7979|     88|    case ARM::SRSDB_UPD:
  ------------------
  |  Branch (7979:5): [True: 0, False: 29.4k]
  ------------------
 7980|    208|    case ARM::SRSIA:
  ------------------
  |  Branch (7980:5): [True: 120, False: 29.3k]
  ------------------
 7981|    219|    case ARM::SRSIA_UPD:
  ------------------
  |  Branch (7981:5): [True: 11, False: 29.4k]
  ------------------
 7982|    239|    case ARM::SRSIB:
  ------------------
  |  Branch (7982:5): [True: 20, False: 29.4k]
  ------------------
 7983|    239|    case ARM::SRSIB_UPD:
  ------------------
  |  Branch (7983:5): [True: 0, False: 29.4k]
  ------------------
 7984|    273|    case ARM::t2CPS1p:
  ------------------
  |  Branch (7984:5): [True: 34, False: 29.4k]
  ------------------
 7985|    309|    case ARM::t2SRSDB:
  ------------------
  |  Branch (7985:5): [True: 36, False: 29.4k]
  ------------------
 7986|    309|    case ARM::t2SRSDB_UPD:
  ------------------
  |  Branch (7986:5): [True: 0, False: 29.4k]
  ------------------
 7987|    323|    case ARM::t2SRSIA:
  ------------------
  |  Branch (7987:5): [True: 14, False: 29.4k]
  ------------------
 7988|    326|    case ARM::t2SRSIA_UPD: {
  ------------------
  |  Branch (7988:5): [True: 3, False: 29.4k]
  ------------------
 7989|       |      // op: mode
 7990|    326|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 7991|    326|      Value |= op & UINT64_C(31);
 7992|    326|      break;
 7993|    323|    }
 7994|      0|    case ARM::LDC2L_POST:
  ------------------
  |  Branch (7994:5): [True: 0, False: 29.4k]
  ------------------
 7995|      0|    case ARM::LDC2_POST:
  ------------------
  |  Branch (7995:5): [True: 0, False: 29.4k]
  ------------------
 7996|      0|    case ARM::STC2L_POST:
  ------------------
  |  Branch (7996:5): [True: 0, False: 29.4k]
  ------------------
 7997|      0|    case ARM::STC2_POST:
  ------------------
  |  Branch (7997:5): [True: 0, False: 29.4k]
  ------------------
 7998|      0|    case ARM::t2LDC2L_POST:
  ------------------
  |  Branch (7998:5): [True: 0, False: 29.4k]
  ------------------
 7999|      0|    case ARM::t2LDC2_POST:
  ------------------
  |  Branch (7999:5): [True: 0, False: 29.4k]
  ------------------
 8000|      0|    case ARM::t2LDCL_POST:
  ------------------
  |  Branch (8000:5): [True: 0, False: 29.4k]
  ------------------
 8001|      0|    case ARM::t2LDC_POST:
  ------------------
  |  Branch (8001:5): [True: 0, False: 29.4k]
  ------------------
 8002|      0|    case ARM::t2STC2L_POST:
  ------------------
  |  Branch (8002:5): [True: 0, False: 29.4k]
  ------------------
 8003|      0|    case ARM::t2STC2_POST:
  ------------------
  |  Branch (8003:5): [True: 0, False: 29.4k]
  ------------------
 8004|      0|    case ARM::t2STCL_POST:
  ------------------
  |  Branch (8004:5): [True: 0, False: 29.4k]
  ------------------
 8005|      0|    case ARM::t2STC_POST: {
  ------------------
  |  Branch (8005:5): [True: 0, False: 29.4k]
  ------------------
 8006|       |      // op: offset
 8007|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8008|      0|      Value |= (op & UINT64_C(256)) << 15;
 8009|      0|      Value |= op & UINT64_C(255);
 8010|       |      // op: addr
 8011|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8012|      0|      Value |= (op & UINT64_C(15)) << 16;
 8013|       |      // op: cop
 8014|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8015|      0|      Value |= (op & UINT64_C(15)) << 8;
 8016|       |      // op: CRd
 8017|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8018|      0|      Value |= (op & UINT64_C(15)) << 12;
 8019|      0|      break;
 8020|      0|    }
 8021|      0|    case ARM::CDP2:
  ------------------
  |  Branch (8021:5): [True: 0, False: 29.4k]
  ------------------
 8022|      0|    case ARM::t2CDP:
  ------------------
  |  Branch (8022:5): [True: 0, False: 29.4k]
  ------------------
 8023|      0|    case ARM::t2CDP2: {
  ------------------
  |  Branch (8023:5): [True: 0, False: 29.4k]
  ------------------
 8024|       |      // op: opc1
 8025|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8026|      0|      Value |= (op & UINT64_C(15)) << 20;
 8027|       |      // op: CRn
 8028|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8029|      0|      Value |= (op & UINT64_C(15)) << 16;
 8030|       |      // op: CRd
 8031|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8032|      0|      Value |= (op & UINT64_C(15)) << 12;
 8033|       |      // op: cop
 8034|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8035|      0|      Value |= (op & UINT64_C(15)) << 8;
 8036|       |      // op: opc2
 8037|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 8038|      0|      Value |= (op & UINT64_C(7)) << 5;
 8039|       |      // op: CRm
 8040|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 8041|      0|      Value |= op & UINT64_C(15);
 8042|      0|      break;
 8043|      0|    }
 8044|      0|    case ARM::t2SMC: {
  ------------------
  |  Branch (8044:5): [True: 0, False: 29.4k]
  ------------------
 8045|       |      // op: opt
 8046|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8047|      0|      Value |= (op & UINT64_C(15)) << 16;
 8048|      0|      break;
 8049|      0|    }
 8050|    305|    case ARM::DMB:
  ------------------
  |  Branch (8050:5): [True: 305, False: 29.1k]
  ------------------
 8051|    414|    case ARM::DSB:
  ------------------
  |  Branch (8051:5): [True: 109, False: 29.3k]
  ------------------
 8052|    896|    case ARM::ISB:
  ------------------
  |  Branch (8052:5): [True: 482, False: 29.0k]
  ------------------
 8053|    967|    case ARM::t2DBG:
  ------------------
  |  Branch (8053:5): [True: 71, False: 29.4k]
  ------------------
 8054|  1.37k|    case ARM::t2DMB:
  ------------------
  |  Branch (8054:5): [True: 412, False: 29.0k]
  ------------------
 8055|  1.44k|    case ARM::t2DSB:
  ------------------
  |  Branch (8055:5): [True: 64, False: 29.4k]
  ------------------
 8056|  1.50k|    case ARM::t2ISB: {
  ------------------
  |  Branch (8056:5): [True: 57, False: 29.4k]
  ------------------
 8057|       |      // op: opt
 8058|  1.50k|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8059|  1.50k|      Value |= op & UINT64_C(15);
 8060|  1.50k|      break;
 8061|  1.44k|    }
 8062|      0|    case ARM::LDC2L_OPTION:
  ------------------
  |  Branch (8062:5): [True: 0, False: 29.4k]
  ------------------
 8063|      0|    case ARM::LDC2_OPTION:
  ------------------
  |  Branch (8063:5): [True: 0, False: 29.4k]
  ------------------
 8064|      0|    case ARM::STC2L_OPTION:
  ------------------
  |  Branch (8064:5): [True: 0, False: 29.4k]
  ------------------
 8065|      0|    case ARM::STC2_OPTION:
  ------------------
  |  Branch (8065:5): [True: 0, False: 29.4k]
  ------------------
 8066|      0|    case ARM::t2LDC2L_OPTION:
  ------------------
  |  Branch (8066:5): [True: 0, False: 29.4k]
  ------------------
 8067|      0|    case ARM::t2LDC2_OPTION:
  ------------------
  |  Branch (8067:5): [True: 0, False: 29.4k]
  ------------------
 8068|      0|    case ARM::t2LDCL_OPTION:
  ------------------
  |  Branch (8068:5): [True: 0, False: 29.4k]
  ------------------
 8069|      0|    case ARM::t2LDC_OPTION:
  ------------------
  |  Branch (8069:5): [True: 0, False: 29.4k]
  ------------------
 8070|      0|    case ARM::t2STC2L_OPTION:
  ------------------
  |  Branch (8070:5): [True: 0, False: 29.4k]
  ------------------
 8071|      0|    case ARM::t2STC2_OPTION:
  ------------------
  |  Branch (8071:5): [True: 0, False: 29.4k]
  ------------------
 8072|      0|    case ARM::t2STCL_OPTION:
  ------------------
  |  Branch (8072:5): [True: 0, False: 29.4k]
  ------------------
 8073|      0|    case ARM::t2STC_OPTION: {
  ------------------
  |  Branch (8073:5): [True: 0, False: 29.4k]
  ------------------
 8074|       |      // op: option
 8075|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8076|      0|      Value |= op & UINT64_C(255);
 8077|       |      // op: addr
 8078|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8079|      0|      Value |= (op & UINT64_C(15)) << 16;
 8080|       |      // op: cop
 8081|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8082|      0|      Value |= (op & UINT64_C(15)) << 8;
 8083|       |      // op: CRd
 8084|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8085|      0|      Value |= (op & UINT64_C(15)) << 12;
 8086|      0|      break;
 8087|      0|    }
 8088|      1|    case ARM::BX_RET:
  ------------------
  |  Branch (8088:5): [True: 1, False: 29.4k]
  ------------------
 8089|      1|    case ARM::ERET:
  ------------------
  |  Branch (8089:5): [True: 0, False: 29.4k]
  ------------------
 8090|      1|    case ARM::MOVPCLR: {
  ------------------
  |  Branch (8090:5): [True: 0, False: 29.4k]
  ------------------
 8091|       |      // op: p
 8092|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8093|      1|      Value |= (op & UINT64_C(15)) << 28;
 8094|      1|      break;
 8095|      1|    }
 8096|     32|    case ARM::FMSTAT: {
  ------------------
  |  Branch (8096:5): [True: 32, False: 29.4k]
  ------------------
 8097|       |      // op: p
 8098|     32|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8099|     32|      Value |= (op & UINT64_C(15)) << 28;
 8100|     32|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8101|     32|      break;
 8102|      1|    }
 8103|    351|    case ARM::t2Bcc: {
  ------------------
  |  Branch (8103:5): [True: 351, False: 29.1k]
  ------------------
 8104|       |      // op: p
 8105|    351|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8106|    351|      Value |= (op & UINT64_C(15)) << 22;
 8107|       |      // op: target
 8108|    351|      op = getBranchTargetOpValue(MI, 0, Fixups, STI);
 8109|    351|      Value |= (op & UINT64_C(1048576)) << 6;
 8110|    351|      Value |= (op & UINT64_C(258048)) << 4;
 8111|    351|      Value |= (op & UINT64_C(262144)) >> 5;
 8112|    351|      Value |= (op & UINT64_C(524288)) >> 8;
 8113|    351|      Value |= (op & UINT64_C(4094)) >> 1;
 8114|    351|      break;
 8115|      1|    }
 8116|      0|    case ARM::VCMPEZD:
  ------------------
  |  Branch (8116:5): [True: 0, False: 29.4k]
  ------------------
 8117|      0|    case ARM::VCMPZD: {
  ------------------
  |  Branch (8117:5): [True: 0, False: 29.4k]
  ------------------
 8118|       |      // op: p
 8119|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8120|      0|      Value |= (op & UINT64_C(15)) << 28;
 8121|       |      // op: Dd
 8122|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8123|      0|      Value |= (op & UINT64_C(16)) << 18;
 8124|      0|      Value |= (op & UINT64_C(15)) << 12;
 8125|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8126|      0|      break;
 8127|      0|    }
 8128|      0|    case ARM::MRS:
  ------------------
  |  Branch (8128:5): [True: 0, False: 29.4k]
  ------------------
 8129|      0|    case ARM::MRSsys: {
  ------------------
  |  Branch (8129:5): [True: 0, False: 29.4k]
  ------------------
 8130|       |      // op: p
 8131|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8132|      0|      Value |= (op & UINT64_C(15)) << 28;
 8133|       |      // op: Rd
 8134|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8135|      0|      Value |= (op & UINT64_C(15)) << 12;
 8136|      0|      break;
 8137|      0|    }
 8138|      0|    case ARM::VLDMSIA:
  ------------------
  |  Branch (8138:5): [True: 0, False: 29.4k]
  ------------------
 8139|      0|    case ARM::VSTMSIA: {
  ------------------
  |  Branch (8139:5): [True: 0, False: 29.4k]
  ------------------
 8140|       |      // op: p
 8141|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8142|      0|      Value |= (op & UINT64_C(15)) << 28;
 8143|       |      // op: Rn
 8144|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8145|      0|      Value |= (op & UINT64_C(15)) << 16;
 8146|       |      // op: regs
 8147|      0|      op = getRegisterListOpValue(MI, 3, Fixups, STI);
 8148|      0|      Value |= (op & UINT64_C(256)) << 14;
 8149|      0|      Value |= (op & UINT64_C(7680)) << 3;
 8150|      0|      Value |= op & UINT64_C(255);
 8151|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8152|      0|      break;
 8153|      0|    }
 8154|      0|    case ARM::FLDMXIA:
  ------------------
  |  Branch (8154:5): [True: 0, False: 29.4k]
  ------------------
 8155|      0|    case ARM::FSTMXIA: {
  ------------------
  |  Branch (8155:5): [True: 0, False: 29.4k]
  ------------------
 8156|       |      // op: p
 8157|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8158|      0|      Value |= (op & UINT64_C(15)) << 28;
 8159|       |      // op: Rn
 8160|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8161|      0|      Value |= (op & UINT64_C(15)) << 16;
 8162|       |      // op: regs
 8163|      0|      op = getRegisterListOpValue(MI, 3, Fixups, STI);
 8164|      0|      Value |= (op & UINT64_C(3840)) << 4;
 8165|      0|      Value |= op & UINT64_C(254);
 8166|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8167|      0|      break;
 8168|      0|    }
 8169|      0|    case ARM::VLDMDIA:
  ------------------
  |  Branch (8169:5): [True: 0, False: 29.4k]
  ------------------
 8170|      0|    case ARM::VSTMDIA: {
  ------------------
  |  Branch (8170:5): [True: 0, False: 29.4k]
  ------------------
 8171|       |      // op: p
 8172|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8173|      0|      Value |= (op & UINT64_C(15)) << 28;
 8174|       |      // op: Rn
 8175|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8176|      0|      Value |= (op & UINT64_C(15)) << 16;
 8177|       |      // op: regs
 8178|      0|      op = getRegisterListOpValue(MI, 3, Fixups, STI);
 8179|      0|      Value |= (op & UINT64_C(4096)) << 10;
 8180|      0|      Value |= (op & UINT64_C(3840)) << 4;
 8181|      0|      Value |= op & UINT64_C(254);
 8182|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8183|      0|      break;
 8184|      0|    }
 8185|      0|    case ARM::VLLDM:
  ------------------
  |  Branch (8185:5): [True: 0, False: 29.4k]
  ------------------
 8186|      0|    case ARM::VLSTM: {
  ------------------
  |  Branch (8186:5): [True: 0, False: 29.4k]
  ------------------
 8187|       |      // op: p
 8188|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8189|      0|      Value |= (op & UINT64_C(15)) << 28;
 8190|       |      // op: Rn
 8191|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8192|      0|      Value |= (op & UINT64_C(15)) << 16;
 8193|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8194|      0|      break;
 8195|      0|    }
 8196|      0|    case ARM::VMRS:
  ------------------
  |  Branch (8196:5): [True: 0, False: 29.4k]
  ------------------
 8197|      0|    case ARM::VMRS_FPEXC:
  ------------------
  |  Branch (8197:5): [True: 0, False: 29.4k]
  ------------------
 8198|      0|    case ARM::VMRS_FPINST:
  ------------------
  |  Branch (8198:5): [True: 0, False: 29.4k]
  ------------------
 8199|      0|    case ARM::VMRS_FPINST2:
  ------------------
  |  Branch (8199:5): [True: 0, False: 29.4k]
  ------------------
 8200|      0|    case ARM::VMRS_FPSID:
  ------------------
  |  Branch (8200:5): [True: 0, False: 29.4k]
  ------------------
 8201|      0|    case ARM::VMRS_MVFR0:
  ------------------
  |  Branch (8201:5): [True: 0, False: 29.4k]
  ------------------
 8202|      0|    case ARM::VMRS_MVFR1:
  ------------------
  |  Branch (8202:5): [True: 0, False: 29.4k]
  ------------------
 8203|      0|    case ARM::VMRS_MVFR2: {
  ------------------
  |  Branch (8203:5): [True: 0, False: 29.4k]
  ------------------
 8204|       |      // op: p
 8205|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8206|      0|      Value |= (op & UINT64_C(15)) << 28;
 8207|       |      // op: Rt
 8208|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8209|      0|      Value |= (op & UINT64_C(15)) << 12;
 8210|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8211|      0|      break;
 8212|      0|    }
 8213|      0|    case ARM::VCMPEZH:
  ------------------
  |  Branch (8213:5): [True: 0, False: 29.4k]
  ------------------
 8214|      0|    case ARM::VCMPEZS:
  ------------------
  |  Branch (8214:5): [True: 0, False: 29.4k]
  ------------------
 8215|      0|    case ARM::VCMPZH:
  ------------------
  |  Branch (8215:5): [True: 0, False: 29.4k]
  ------------------
 8216|      0|    case ARM::VCMPZS: {
  ------------------
  |  Branch (8216:5): [True: 0, False: 29.4k]
  ------------------
 8217|       |      // op: p
 8218|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8219|      0|      Value |= (op & UINT64_C(15)) << 28;
 8220|       |      // op: Sd
 8221|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8222|      0|      Value |= (op & UINT64_C(1)) << 22;
 8223|      0|      Value |= (op & UINT64_C(30)) << 11;
 8224|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8225|      0|      break;
 8226|      0|    }
 8227|     21|    case ARM::BX_pred: {
  ------------------
  |  Branch (8227:5): [True: 21, False: 29.4k]
  ------------------
 8228|       |      // op: p
 8229|     21|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8230|     21|      Value |= (op & UINT64_C(15)) << 28;
 8231|       |      // op: dst
 8232|     21|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8233|     21|      Value |= op & UINT64_C(15);
 8234|     21|      break;
 8235|      0|    }
 8236|  1.15k|    case ARM::BL_pred: {
  ------------------
  |  Branch (8236:5): [True: 1.15k, False: 28.3k]
  ------------------
 8237|       |      // op: p
 8238|  1.15k|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8239|  1.15k|      Value |= (op & UINT64_C(15)) << 28;
 8240|       |      // op: func
 8241|  1.15k|      op = getARMBLTargetOpValue(MI, 0, Fixups, STI);
 8242|  1.15k|      Value |= op & UINT64_C(16777215);
 8243|  1.15k|      break;
 8244|      0|    }
 8245|     20|    case ARM::BLX_pred:
  ------------------
  |  Branch (8245:5): [True: 20, False: 29.4k]
  ------------------
 8246|     42|    case ARM::BXJ: {
  ------------------
  |  Branch (8246:5): [True: 22, False: 29.4k]
  ------------------
 8247|       |      // op: p
 8248|     42|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8249|     42|      Value |= (op & UINT64_C(15)) << 28;
 8250|       |      // op: func
 8251|     42|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8252|     42|      Value |= op & UINT64_C(15);
 8253|     42|      break;
 8254|     20|    }
 8255|    601|    case ARM::HINT: {
  ------------------
  |  Branch (8255:5): [True: 601, False: 28.8k]
  ------------------
 8256|       |      // op: p
 8257|    601|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8258|    601|      Value |= (op & UINT64_C(15)) << 28;
 8259|       |      // op: imm
 8260|    601|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8261|    601|      Value |= op & UINT64_C(255);
 8262|    601|      break;
 8263|     20|    }
 8264|     20|    case ARM::DBG:
  ------------------
  |  Branch (8264:5): [True: 20, False: 29.4k]
  ------------------
 8265|     20|    case ARM::SMC: {
  ------------------
  |  Branch (8265:5): [True: 0, False: 29.4k]
  ------------------
 8266|       |      // op: p
 8267|     20|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8268|     20|      Value |= (op & UINT64_C(15)) << 28;
 8269|       |      // op: opt
 8270|     20|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8271|     20|      Value |= op & UINT64_C(15);
 8272|     20|      break;
 8273|     20|    }
 8274|      0|    case ARM::LDMDA:
  ------------------
  |  Branch (8274:5): [True: 0, False: 29.4k]
  ------------------
 8275|      0|    case ARM::LDMDB:
  ------------------
  |  Branch (8275:5): [True: 0, False: 29.4k]
  ------------------
 8276|      0|    case ARM::LDMIA:
  ------------------
  |  Branch (8276:5): [True: 0, False: 29.4k]
  ------------------
 8277|      0|    case ARM::LDMIB:
  ------------------
  |  Branch (8277:5): [True: 0, False: 29.4k]
  ------------------
 8278|      0|    case ARM::STMDA:
  ------------------
  |  Branch (8278:5): [True: 0, False: 29.4k]
  ------------------
 8279|      0|    case ARM::STMDB:
  ------------------
  |  Branch (8279:5): [True: 0, False: 29.4k]
  ------------------
 8280|      0|    case ARM::STMIA:
  ------------------
  |  Branch (8280:5): [True: 0, False: 29.4k]
  ------------------
 8281|      0|    case ARM::STMIB:
  ------------------
  |  Branch (8281:5): [True: 0, False: 29.4k]
  ------------------
 8282|      0|    case ARM::sysLDMDA:
  ------------------
  |  Branch (8282:5): [True: 0, False: 29.4k]
  ------------------
 8283|      0|    case ARM::sysLDMDB:
  ------------------
  |  Branch (8283:5): [True: 0, False: 29.4k]
  ------------------
 8284|      0|    case ARM::sysLDMIA:
  ------------------
  |  Branch (8284:5): [True: 0, False: 29.4k]
  ------------------
 8285|      0|    case ARM::sysLDMIB:
  ------------------
  |  Branch (8285:5): [True: 0, False: 29.4k]
  ------------------
 8286|      0|    case ARM::sysSTMDA:
  ------------------
  |  Branch (8286:5): [True: 0, False: 29.4k]
  ------------------
 8287|      0|    case ARM::sysSTMDB:
  ------------------
  |  Branch (8287:5): [True: 0, False: 29.4k]
  ------------------
 8288|      0|    case ARM::sysSTMIA:
  ------------------
  |  Branch (8288:5): [True: 0, False: 29.4k]
  ------------------
 8289|      0|    case ARM::sysSTMIB: {
  ------------------
  |  Branch (8289:5): [True: 0, False: 29.4k]
  ------------------
 8290|       |      // op: p
 8291|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8292|      0|      Value |= (op & UINT64_C(15)) << 28;
 8293|       |      // op: regs
 8294|      0|      op = getRegisterListOpValue(MI, 3, Fixups, STI);
 8295|      0|      Value |= op & UINT64_C(65535);
 8296|       |      // op: Rn
 8297|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8298|      0|      Value |= (op & UINT64_C(15)) << 16;
 8299|      0|      break;
 8300|      0|    }
 8301|      0|    case ARM::VMSR:
  ------------------
  |  Branch (8301:5): [True: 0, False: 29.4k]
  ------------------
 8302|      0|    case ARM::VMSR_FPEXC:
  ------------------
  |  Branch (8302:5): [True: 0, False: 29.4k]
  ------------------
 8303|      0|    case ARM::VMSR_FPINST:
  ------------------
  |  Branch (8303:5): [True: 0, False: 29.4k]
  ------------------
 8304|      0|    case ARM::VMSR_FPINST2:
  ------------------
  |  Branch (8304:5): [True: 0, False: 29.4k]
  ------------------
 8305|      0|    case ARM::VMSR_FPSID: {
  ------------------
  |  Branch (8305:5): [True: 0, False: 29.4k]
  ------------------
 8306|       |      // op: p
 8307|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8308|      0|      Value |= (op & UINT64_C(15)) << 28;
 8309|       |      // op: src
 8310|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8311|      0|      Value |= (op & UINT64_C(15)) << 12;
 8312|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8313|      0|      break;
 8314|      0|    }
 8315|     32|    case ARM::SVC: {
  ------------------
  |  Branch (8315:5): [True: 32, False: 29.4k]
  ------------------
 8316|       |      // op: p
 8317|     32|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8318|     32|      Value |= (op & UINT64_C(15)) << 28;
 8319|       |      // op: svc
 8320|     32|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8321|     32|      Value |= op & UINT64_C(16777215);
 8322|     32|      break;
 8323|      0|    }
 8324|  3.39k|    case ARM::Bcc: {
  ------------------
  |  Branch (8324:5): [True: 3.39k, False: 26.0k]
  ------------------
 8325|       |      // op: p
 8326|  3.39k|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8327|  3.39k|      Value |= (op & UINT64_C(15)) << 28;
 8328|       |      // op: target
 8329|  3.39k|      op = getARMBranchTargetOpValue(MI, 0, Fixups, STI);
 8330|  3.39k|      Value |= op & UINT64_C(16777215);
 8331|  3.39k|      break;
 8332|      0|    }
 8333|    488|    case ARM::tBcc: {
  ------------------
  |  Branch (8333:5): [True: 488, False: 28.9k]
  ------------------
 8334|       |      // op: p
 8335|    488|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8336|    488|      Value |= (op & UINT64_C(15)) << 8;
 8337|       |      // op: target
 8338|    488|      op = getThumbBCCTargetOpValue(MI, 0, Fixups, STI);
 8339|    488|      Value |= op & UINT64_C(255);
 8340|    488|      break;
 8341|      0|    }
 8342|      0|    case ARM::VABSD:
  ------------------
  |  Branch (8342:5): [True: 0, False: 29.4k]
  ------------------
 8343|      0|    case ARM::VCMPD:
  ------------------
  |  Branch (8343:5): [True: 0, False: 29.4k]
  ------------------
 8344|      0|    case ARM::VCMPED:
  ------------------
  |  Branch (8344:5): [True: 0, False: 29.4k]
  ------------------
 8345|     24|    case ARM::VMOVD:
  ------------------
  |  Branch (8345:5): [True: 24, False: 29.4k]
  ------------------
 8346|     24|    case ARM::VNEGD:
  ------------------
  |  Branch (8346:5): [True: 0, False: 29.4k]
  ------------------
 8347|     24|    case ARM::VRINTRD:
  ------------------
  |  Branch (8347:5): [True: 0, False: 29.4k]
  ------------------
 8348|     24|    case ARM::VRINTXD:
  ------------------
  |  Branch (8348:5): [True: 0, False: 29.4k]
  ------------------
 8349|     24|    case ARM::VRINTZD:
  ------------------
  |  Branch (8349:5): [True: 0, False: 29.4k]
  ------------------
 8350|     24|    case ARM::VSQRTD: {
  ------------------
  |  Branch (8350:5): [True: 0, False: 29.4k]
  ------------------
 8351|       |      // op: p
 8352|     24|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8353|     24|      Value |= (op & UINT64_C(15)) << 28;
 8354|       |      // op: Dd
 8355|     24|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8356|     24|      Value |= (op & UINT64_C(16)) << 18;
 8357|     24|      Value |= (op & UINT64_C(15)) << 12;
 8358|       |      // op: Dm
 8359|     24|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8360|     24|      Value |= (op & UINT64_C(16)) << 1;
 8361|     24|      Value |= op & UINT64_C(15);
 8362|     24|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8363|     24|      break;
 8364|     24|    }
 8365|      0|    case ARM::VCVTBHD:
  ------------------
  |  Branch (8365:5): [True: 0, False: 29.4k]
  ------------------
 8366|      0|    case ARM::VCVTTHD:
  ------------------
  |  Branch (8366:5): [True: 0, False: 29.4k]
  ------------------
 8367|      0|    case ARM::VSITOD:
  ------------------
  |  Branch (8367:5): [True: 0, False: 29.4k]
  ------------------
 8368|      0|    case ARM::VUITOD: {
  ------------------
  |  Branch (8368:5): [True: 0, False: 29.4k]
  ------------------
 8369|       |      // op: p
 8370|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8371|      0|      Value |= (op & UINT64_C(15)) << 28;
 8372|       |      // op: Dd
 8373|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8374|      0|      Value |= (op & UINT64_C(16)) << 18;
 8375|      0|      Value |= (op & UINT64_C(15)) << 12;
 8376|       |      // op: Sm
 8377|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8378|      0|      Value |= (op & UINT64_C(1)) << 5;
 8379|      0|      Value |= (op & UINT64_C(30)) >> 1;
 8380|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8381|      0|      break;
 8382|      0|    }
 8383|      1|    case ARM::FCONSTD: {
  ------------------
  |  Branch (8383:5): [True: 1, False: 29.4k]
  ------------------
 8384|       |      // op: p
 8385|      1|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8386|      1|      Value |= (op & UINT64_C(15)) << 28;
 8387|       |      // op: Dd
 8388|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8389|      1|      Value |= (op & UINT64_C(16)) << 18;
 8390|      1|      Value |= (op & UINT64_C(15)) << 12;
 8391|       |      // op: imm
 8392|      1|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8393|      1|      Value |= (op & UINT64_C(240)) << 12;
 8394|      1|      Value |= op & UINT64_C(15);
 8395|      1|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8396|      1|      break;
 8397|      0|    }
 8398|      0|    case ARM::VCVTBDH:
  ------------------
  |  Branch (8398:5): [True: 0, False: 29.4k]
  ------------------
 8399|      0|    case ARM::VCVTTDH: {
  ------------------
  |  Branch (8399:5): [True: 0, False: 29.4k]
  ------------------
 8400|       |      // op: p
 8401|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8402|      0|      Value |= (op & UINT64_C(15)) << 28;
 8403|       |      // op: Dm
 8404|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8405|      0|      Value |= (op & UINT64_C(16)) << 1;
 8406|      0|      Value |= op & UINT64_C(15);
 8407|       |      // op: Sd
 8408|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8409|      0|      Value |= (op & UINT64_C(1)) << 22;
 8410|      0|      Value |= (op & UINT64_C(30)) << 11;
 8411|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8412|      0|      break;
 8413|      0|    }
 8414|     22|    case ARM::CLZ:
  ------------------
  |  Branch (8414:5): [True: 22, False: 29.4k]
  ------------------
 8415|     22|    case ARM::RBIT:
  ------------------
  |  Branch (8415:5): [True: 0, False: 29.4k]
  ------------------
 8416|     32|    case ARM::REV:
  ------------------
  |  Branch (8416:5): [True: 10, False: 29.4k]
  ------------------
 8417|     44|    case ARM::REV16:
  ------------------
  |  Branch (8417:5): [True: 12, False: 29.4k]
  ------------------
 8418|     47|    case ARM::REVSH: {
  ------------------
  |  Branch (8418:5): [True: 3, False: 29.4k]
  ------------------
 8419|       |      // op: p
 8420|     47|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8421|     47|      Value |= (op & UINT64_C(15)) << 28;
 8422|       |      // op: Rd
 8423|     47|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8424|     47|      Value |= (op & UINT64_C(15)) << 12;
 8425|       |      // op: Rm
 8426|     47|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8427|     47|      Value |= op & UINT64_C(15);
 8428|     47|      break;
 8429|     44|    }
 8430|     31|    case ARM::MOVi16: {
  ------------------
  |  Branch (8430:5): [True: 31, False: 29.4k]
  ------------------
 8431|       |      // op: p
 8432|     31|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8433|     31|      Value |= (op & UINT64_C(15)) << 28;
 8434|       |      // op: Rd
 8435|     31|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8436|     31|      Value |= (op & UINT64_C(15)) << 12;
 8437|       |      // op: imm
 8438|     31|      op = getHiLo16ImmOpValue(MI, 1, Fixups, STI);
 8439|     31|      Value |= (op & UINT64_C(61440)) << 4;
 8440|     31|      Value |= op & UINT64_C(4095);
 8441|     31|      break;
 8442|     44|    }
 8443|  1.94k|    case ARM::ADR: {
  ------------------
  |  Branch (8443:5): [True: 1.94k, False: 27.5k]
  ------------------
 8444|       |      // op: p
 8445|  1.94k|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8446|  1.94k|      Value |= (op & UINT64_C(15)) << 28;
 8447|       |      // op: Rd
 8448|  1.94k|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8449|  1.94k|      Value |= (op & UINT64_C(15)) << 12;
 8450|       |      // op: label
 8451|  1.94k|      op = getAdrLabelOpValue(MI, 1, Fixups, STI);
 8452|  1.94k|      Value |= (op & UINT64_C(12288)) << 10;
 8453|  1.94k|      Value |= op & UINT64_C(4095);
 8454|  1.94k|      break;
 8455|     44|    }
 8456|    672|    case ARM::CMNzrr:
  ------------------
  |  Branch (8456:5): [True: 672, False: 28.8k]
  ------------------
 8457|    684|    case ARM::CMPrr:
  ------------------
  |  Branch (8457:5): [True: 12, False: 29.4k]
  ------------------
 8458|    687|    case ARM::TEQrr:
  ------------------
  |  Branch (8458:5): [True: 3, False: 29.4k]
  ------------------
 8459|    690|    case ARM::TSTrr: {
  ------------------
  |  Branch (8459:5): [True: 3, False: 29.4k]
  ------------------
 8460|       |      // op: p
 8461|    690|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8462|    690|      Value |= (op & UINT64_C(15)) << 28;
 8463|       |      // op: Rn
 8464|    690|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8465|    690|      Value |= (op & UINT64_C(15)) << 16;
 8466|       |      // op: Rm
 8467|    690|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8468|    690|      Value |= op & UINT64_C(15);
 8469|    690|      break;
 8470|    687|    }
 8471|     11|    case ARM::CMNri:
  ------------------
  |  Branch (8471:5): [True: 11, False: 29.4k]
  ------------------
 8472|     93|    case ARM::CMPri:
  ------------------
  |  Branch (8472:5): [True: 82, False: 29.4k]
  ------------------
 8473|    134|    case ARM::TEQri:
  ------------------
  |  Branch (8473:5): [True: 41, False: 29.4k]
  ------------------
 8474|    186|    case ARM::TSTri: {
  ------------------
  |  Branch (8474:5): [True: 52, False: 29.4k]
  ------------------
 8475|       |      // op: p
 8476|    186|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8477|    186|      Value |= (op & UINT64_C(15)) << 28;
 8478|       |      // op: Rn
 8479|    186|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8480|    186|      Value |= (op & UINT64_C(15)) << 16;
 8481|       |      // op: imm
 8482|    186|      op = getModImmOpValue(MI, 1, Fixups, STI);
 8483|    186|      Value |= op & UINT64_C(4095);
 8484|    186|      break;
 8485|    134|    }
 8486|      0|    case ARM::VLDMSDB_UPD:
  ------------------
  |  Branch (8486:5): [True: 0, False: 29.4k]
  ------------------
 8487|      0|    case ARM::VLDMSIA_UPD:
  ------------------
  |  Branch (8487:5): [True: 0, False: 29.4k]
  ------------------
 8488|      0|    case ARM::VSTMSDB_UPD:
  ------------------
  |  Branch (8488:5): [True: 0, False: 29.4k]
  ------------------
 8489|      0|    case ARM::VSTMSIA_UPD: {
  ------------------
  |  Branch (8489:5): [True: 0, False: 29.4k]
  ------------------
 8490|       |      // op: p
 8491|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8492|      0|      Value |= (op & UINT64_C(15)) << 28;
 8493|       |      // op: Rn
 8494|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8495|      0|      Value |= (op & UINT64_C(15)) << 16;
 8496|       |      // op: regs
 8497|      0|      op = getRegisterListOpValue(MI, 4, Fixups, STI);
 8498|      0|      Value |= (op & UINT64_C(256)) << 14;
 8499|      0|      Value |= (op & UINT64_C(7680)) << 3;
 8500|      0|      Value |= op & UINT64_C(255);
 8501|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8502|      0|      break;
 8503|      0|    }
 8504|      0|    case ARM::FLDMXDB_UPD:
  ------------------
  |  Branch (8504:5): [True: 0, False: 29.4k]
  ------------------
 8505|      0|    case ARM::FLDMXIA_UPD:
  ------------------
  |  Branch (8505:5): [True: 0, False: 29.4k]
  ------------------
 8506|      0|    case ARM::FSTMXDB_UPD:
  ------------------
  |  Branch (8506:5): [True: 0, False: 29.4k]
  ------------------
 8507|      0|    case ARM::FSTMXIA_UPD: {
  ------------------
  |  Branch (8507:5): [True: 0, False: 29.4k]
  ------------------
 8508|       |      // op: p
 8509|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8510|      0|      Value |= (op & UINT64_C(15)) << 28;
 8511|       |      // op: Rn
 8512|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8513|      0|      Value |= (op & UINT64_C(15)) << 16;
 8514|       |      // op: regs
 8515|      0|      op = getRegisterListOpValue(MI, 4, Fixups, STI);
 8516|      0|      Value |= (op & UINT64_C(3840)) << 4;
 8517|      0|      Value |= op & UINT64_C(254);
 8518|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8519|      0|      break;
 8520|      0|    }
 8521|      0|    case ARM::VLDMDDB_UPD:
  ------------------
  |  Branch (8521:5): [True: 0, False: 29.4k]
  ------------------
 8522|      0|    case ARM::VLDMDIA_UPD:
  ------------------
  |  Branch (8522:5): [True: 0, False: 29.4k]
  ------------------
 8523|      0|    case ARM::VSTMDDB_UPD:
  ------------------
  |  Branch (8523:5): [True: 0, False: 29.4k]
  ------------------
 8524|      0|    case ARM::VSTMDIA_UPD: {
  ------------------
  |  Branch (8524:5): [True: 0, False: 29.4k]
  ------------------
 8525|       |      // op: p
 8526|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8527|      0|      Value |= (op & UINT64_C(15)) << 28;
 8528|       |      // op: Rn
 8529|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8530|      0|      Value |= (op & UINT64_C(15)) << 16;
 8531|       |      // op: regs
 8532|      0|      op = getRegisterListOpValue(MI, 4, Fixups, STI);
 8533|      0|      Value |= (op & UINT64_C(4096)) << 10;
 8534|      0|      Value |= (op & UINT64_C(3840)) << 4;
 8535|      0|      Value |= op & UINT64_C(254);
 8536|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8537|      0|      break;
 8538|      0|    }
 8539|      0|    case ARM::VMOVRH:
  ------------------
  |  Branch (8539:5): [True: 0, False: 29.4k]
  ------------------
 8540|     15|    case ARM::VMOVRS: {
  ------------------
  |  Branch (8540:5): [True: 15, False: 29.4k]
  ------------------
 8541|       |      // op: p
 8542|     15|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8543|     15|      Value |= (op & UINT64_C(15)) << 28;
 8544|       |      // op: Rt
 8545|     15|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8546|     15|      Value |= (op & UINT64_C(15)) << 12;
 8547|       |      // op: Sn
 8548|     15|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8549|     15|      Value |= (op & UINT64_C(30)) << 15;
 8550|     15|      Value |= (op & UINT64_C(1)) << 7;
 8551|     15|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8552|     15|      break;
 8553|      0|    }
 8554|      0|    case ARM::LDA:
  ------------------
  |  Branch (8554:5): [True: 0, False: 29.4k]
  ------------------
 8555|      0|    case ARM::LDAB:
  ------------------
  |  Branch (8555:5): [True: 0, False: 29.4k]
  ------------------
 8556|      0|    case ARM::LDAEX:
  ------------------
  |  Branch (8556:5): [True: 0, False: 29.4k]
  ------------------
 8557|      0|    case ARM::LDAEXB:
  ------------------
  |  Branch (8557:5): [True: 0, False: 29.4k]
  ------------------
 8558|      0|    case ARM::LDAEXD:
  ------------------
  |  Branch (8558:5): [True: 0, False: 29.4k]
  ------------------
 8559|      0|    case ARM::LDAEXH:
  ------------------
  |  Branch (8559:5): [True: 0, False: 29.4k]
  ------------------
 8560|      0|    case ARM::LDAH:
  ------------------
  |  Branch (8560:5): [True: 0, False: 29.4k]
  ------------------
 8561|      0|    case ARM::LDREX:
  ------------------
  |  Branch (8561:5): [True: 0, False: 29.4k]
  ------------------
 8562|      0|    case ARM::LDREXB:
  ------------------
  |  Branch (8562:5): [True: 0, False: 29.4k]
  ------------------
 8563|      0|    case ARM::LDREXD:
  ------------------
  |  Branch (8563:5): [True: 0, False: 29.4k]
  ------------------
 8564|      0|    case ARM::LDREXH: {
  ------------------
  |  Branch (8564:5): [True: 0, False: 29.4k]
  ------------------
 8565|       |      // op: p
 8566|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8567|      0|      Value |= (op & UINT64_C(15)) << 28;
 8568|       |      // op: Rt
 8569|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8570|      0|      Value |= (op & UINT64_C(15)) << 12;
 8571|       |      // op: addr
 8572|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8573|      0|      Value |= (op & UINT64_C(15)) << 16;
 8574|      0|      break;
 8575|      0|    }
 8576|      0|    case ARM::STL:
  ------------------
  |  Branch (8576:5): [True: 0, False: 29.4k]
  ------------------
 8577|      0|    case ARM::STLB:
  ------------------
  |  Branch (8577:5): [True: 0, False: 29.4k]
  ------------------
 8578|      0|    case ARM::STLH: {
  ------------------
  |  Branch (8578:5): [True: 0, False: 29.4k]
  ------------------
 8579|       |      // op: p
 8580|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8581|      0|      Value |= (op & UINT64_C(15)) << 28;
 8582|       |      // op: Rt
 8583|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8584|      0|      Value |= op & UINT64_C(15);
 8585|       |      // op: addr
 8586|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8587|      0|      Value |= (op & UINT64_C(15)) << 16;
 8588|      0|      break;
 8589|      0|    }
 8590|      0|    case ARM::VCVTSD:
  ------------------
  |  Branch (8590:5): [True: 0, False: 29.4k]
  ------------------
 8591|      0|    case ARM::VTOSIRD:
  ------------------
  |  Branch (8591:5): [True: 0, False: 29.4k]
  ------------------
 8592|      0|    case ARM::VTOSIZD:
  ------------------
  |  Branch (8592:5): [True: 0, False: 29.4k]
  ------------------
 8593|      0|    case ARM::VTOUIRD:
  ------------------
  |  Branch (8593:5): [True: 0, False: 29.4k]
  ------------------
 8594|      0|    case ARM::VTOUIZD: {
  ------------------
  |  Branch (8594:5): [True: 0, False: 29.4k]
  ------------------
 8595|       |      // op: p
 8596|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8597|      0|      Value |= (op & UINT64_C(15)) << 28;
 8598|       |      // op: Sd
 8599|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8600|      0|      Value |= (op & UINT64_C(1)) << 22;
 8601|      0|      Value |= (op & UINT64_C(30)) << 11;
 8602|       |      // op: Dm
 8603|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8604|      0|      Value |= (op & UINT64_C(16)) << 1;
 8605|      0|      Value |= op & UINT64_C(15);
 8606|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8607|      0|      break;
 8608|      0|    }
 8609|      0|    case ARM::VABSH:
  ------------------
  |  Branch (8609:5): [True: 0, False: 29.4k]
  ------------------
 8610|      0|    case ARM::VABSS:
  ------------------
  |  Branch (8610:5): [True: 0, False: 29.4k]
  ------------------
 8611|      0|    case ARM::VCMPEH:
  ------------------
  |  Branch (8611:5): [True: 0, False: 29.4k]
  ------------------
 8612|      0|    case ARM::VCMPES:
  ------------------
  |  Branch (8612:5): [True: 0, False: 29.4k]
  ------------------
 8613|      0|    case ARM::VCMPH:
  ------------------
  |  Branch (8613:5): [True: 0, False: 29.4k]
  ------------------
 8614|      0|    case ARM::VCMPS:
  ------------------
  |  Branch (8614:5): [True: 0, False: 29.4k]
  ------------------
 8615|      0|    case ARM::VCVTBHS:
  ------------------
  |  Branch (8615:5): [True: 0, False: 29.4k]
  ------------------
 8616|      0|    case ARM::VCVTBSH:
  ------------------
  |  Branch (8616:5): [True: 0, False: 29.4k]
  ------------------
 8617|      0|    case ARM::VCVTTHS:
  ------------------
  |  Branch (8617:5): [True: 0, False: 29.4k]
  ------------------
 8618|      0|    case ARM::VCVTTSH:
  ------------------
  |  Branch (8618:5): [True: 0, False: 29.4k]
  ------------------
 8619|     20|    case ARM::VMOVS:
  ------------------
  |  Branch (8619:5): [True: 20, False: 29.4k]
  ------------------
 8620|     20|    case ARM::VNEGH:
  ------------------
  |  Branch (8620:5): [True: 0, False: 29.4k]
  ------------------
 8621|     20|    case ARM::VNEGS:
  ------------------
  |  Branch (8621:5): [True: 0, False: 29.4k]
  ------------------
 8622|     20|    case ARM::VRINTRH:
  ------------------
  |  Branch (8622:5): [True: 0, False: 29.4k]
  ------------------
 8623|     20|    case ARM::VRINTRS:
  ------------------
  |  Branch (8623:5): [True: 0, False: 29.4k]
  ------------------
 8624|     20|    case ARM::VRINTXH:
  ------------------
  |  Branch (8624:5): [True: 0, False: 29.4k]
  ------------------
 8625|     20|    case ARM::VRINTXS:
  ------------------
  |  Branch (8625:5): [True: 0, False: 29.4k]
  ------------------
 8626|     20|    case ARM::VRINTZH:
  ------------------
  |  Branch (8626:5): [True: 0, False: 29.4k]
  ------------------
 8627|     20|    case ARM::VRINTZS:
  ------------------
  |  Branch (8627:5): [True: 0, False: 29.4k]
  ------------------
 8628|     20|    case ARM::VSITOH:
  ------------------
  |  Branch (8628:5): [True: 0, False: 29.4k]
  ------------------
 8629|     20|    case ARM::VSITOS:
  ------------------
  |  Branch (8629:5): [True: 0, False: 29.4k]
  ------------------
 8630|     20|    case ARM::VSQRTH:
  ------------------
  |  Branch (8630:5): [True: 0, False: 29.4k]
  ------------------
 8631|     20|    case ARM::VSQRTS:
  ------------------
  |  Branch (8631:5): [True: 0, False: 29.4k]
  ------------------
 8632|     20|    case ARM::VTOSIRH:
  ------------------
  |  Branch (8632:5): [True: 0, False: 29.4k]
  ------------------
 8633|     20|    case ARM::VTOSIRS:
  ------------------
  |  Branch (8633:5): [True: 0, False: 29.4k]
  ------------------
 8634|     20|    case ARM::VTOSIZH:
  ------------------
  |  Branch (8634:5): [True: 0, False: 29.4k]
  ------------------
 8635|     20|    case ARM::VTOSIZS:
  ------------------
  |  Branch (8635:5): [True: 0, False: 29.4k]
  ------------------
 8636|     20|    case ARM::VTOUIRH:
  ------------------
  |  Branch (8636:5): [True: 0, False: 29.4k]
  ------------------
 8637|     20|    case ARM::VTOUIRS:
  ------------------
  |  Branch (8637:5): [True: 0, False: 29.4k]
  ------------------
 8638|     20|    case ARM::VTOUIZH:
  ------------------
  |  Branch (8638:5): [True: 0, False: 29.4k]
  ------------------
 8639|     20|    case ARM::VTOUIZS:
  ------------------
  |  Branch (8639:5): [True: 0, False: 29.4k]
  ------------------
 8640|     20|    case ARM::VUITOH:
  ------------------
  |  Branch (8640:5): [True: 0, False: 29.4k]
  ------------------
 8641|     20|    case ARM::VUITOS: {
  ------------------
  |  Branch (8641:5): [True: 0, False: 29.4k]
  ------------------
 8642|       |      // op: p
 8643|     20|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8644|     20|      Value |= (op & UINT64_C(15)) << 28;
 8645|       |      // op: Sd
 8646|     20|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8647|     20|      Value |= (op & UINT64_C(1)) << 22;
 8648|     20|      Value |= (op & UINT64_C(30)) << 11;
 8649|       |      // op: Sm
 8650|     20|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8651|     20|      Value |= (op & UINT64_C(1)) << 5;
 8652|     20|      Value |= (op & UINT64_C(30)) >> 1;
 8653|     20|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8654|     20|      break;
 8655|     20|    }
 8656|      0|    case ARM::FCONSTH:
  ------------------
  |  Branch (8656:5): [True: 0, False: 29.4k]
  ------------------
 8657|     85|    case ARM::FCONSTS: {
  ------------------
  |  Branch (8657:5): [True: 85, False: 29.4k]
  ------------------
 8658|       |      // op: p
 8659|     85|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8660|     85|      Value |= (op & UINT64_C(15)) << 28;
 8661|       |      // op: Sd
 8662|     85|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8663|     85|      Value |= (op & UINT64_C(1)) << 22;
 8664|     85|      Value |= (op & UINT64_C(30)) << 11;
 8665|       |      // op: imm
 8666|     85|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8667|     85|      Value |= (op & UINT64_C(240)) << 12;
 8668|     85|      Value |= op & UINT64_C(15);
 8669|     85|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8670|     85|      break;
 8671|      0|    }
 8672|      0|    case ARM::VCVTDS: {
  ------------------
  |  Branch (8672:5): [True: 0, False: 29.4k]
  ------------------
 8673|       |      // op: p
 8674|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8675|      0|      Value |= (op & UINT64_C(15)) << 28;
 8676|       |      // op: Sm
 8677|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8678|      0|      Value |= (op & UINT64_C(1)) << 5;
 8679|      0|      Value |= (op & UINT64_C(30)) >> 1;
 8680|       |      // op: Dd
 8681|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8682|      0|      Value |= (op & UINT64_C(16)) << 18;
 8683|      0|      Value |= (op & UINT64_C(15)) << 12;
 8684|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8685|      0|      break;
 8686|      0|    }
 8687|      0|    case ARM::VMOVHR:
  ------------------
  |  Branch (8687:5): [True: 0, False: 29.4k]
  ------------------
 8688|     24|    case ARM::VMOVSR: {
  ------------------
  |  Branch (8688:5): [True: 24, False: 29.4k]
  ------------------
 8689|       |      // op: p
 8690|     24|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8691|     24|      Value |= (op & UINT64_C(15)) << 28;
 8692|       |      // op: Sn
 8693|     24|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8694|     24|      Value |= (op & UINT64_C(30)) << 15;
 8695|     24|      Value |= (op & UINT64_C(1)) << 7;
 8696|       |      // op: Rt
 8697|     24|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8698|     24|      Value |= (op & UINT64_C(15)) << 12;
 8699|     24|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8700|     24|      break;
 8701|      0|    }
 8702|      0|    case ARM::MSRbanked: {
  ------------------
  |  Branch (8702:5): [True: 0, False: 29.4k]
  ------------------
 8703|       |      // op: p
 8704|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8705|      0|      Value |= (op & UINT64_C(15)) << 28;
 8706|       |      // op: banked
 8707|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8708|      0|      Value |= (op & UINT64_C(32)) << 17;
 8709|      0|      Value |= (op & UINT64_C(15)) << 16;
 8710|      0|      Value |= (op & UINT64_C(16)) << 4;
 8711|       |      // op: Rn
 8712|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8713|      0|      Value |= op & UINT64_C(15);
 8714|      0|      break;
 8715|      0|    }
 8716|      0|    case ARM::MRSbanked: {
  ------------------
  |  Branch (8716:5): [True: 0, False: 29.4k]
  ------------------
 8717|       |      // op: p
 8718|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8719|      0|      Value |= (op & UINT64_C(15)) << 28;
 8720|       |      // op: banked
 8721|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8722|      0|      Value |= (op & UINT64_C(32)) << 17;
 8723|      0|      Value |= (op & UINT64_C(15)) << 16;
 8724|      0|      Value |= (op & UINT64_C(16)) << 4;
 8725|       |      // op: Rd
 8726|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8727|      0|      Value |= (op & UINT64_C(15)) << 12;
 8728|      0|      break;
 8729|      0|    }
 8730|     25|    case ARM::MSR: {
  ------------------
  |  Branch (8730:5): [True: 25, False: 29.4k]
  ------------------
 8731|       |      // op: p
 8732|     25|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8733|     25|      Value |= (op & UINT64_C(15)) << 28;
 8734|       |      // op: mask
 8735|     25|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8736|     25|      Value |= (op & UINT64_C(16)) << 18;
 8737|     25|      Value |= (op & UINT64_C(15)) << 16;
 8738|       |      // op: Rn
 8739|     25|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8740|     25|      Value |= op & UINT64_C(15);
 8741|     25|      break;
 8742|      0|    }
 8743|     19|    case ARM::MSRi: {
  ------------------
  |  Branch (8743:5): [True: 19, False: 29.4k]
  ------------------
 8744|       |      // op: p
 8745|     19|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8746|     19|      Value |= (op & UINT64_C(15)) << 28;
 8747|       |      // op: mask
 8748|     19|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8749|     19|      Value |= (op & UINT64_C(16)) << 18;
 8750|     19|      Value |= (op & UINT64_C(15)) << 16;
 8751|       |      // op: imm
 8752|     19|      op = getModImmOpValue(MI, 1, Fixups, STI);
 8753|     19|      Value |= op & UINT64_C(4095);
 8754|     19|      break;
 8755|      0|    }
 8756|      0|    case ARM::LDMDA_UPD:
  ------------------
  |  Branch (8756:5): [True: 0, False: 29.4k]
  ------------------
 8757|      0|    case ARM::LDMDB_UPD:
  ------------------
  |  Branch (8757:5): [True: 0, False: 29.4k]
  ------------------
 8758|      0|    case ARM::LDMIA_UPD:
  ------------------
  |  Branch (8758:5): [True: 0, False: 29.4k]
  ------------------
 8759|      0|    case ARM::LDMIB_UPD:
  ------------------
  |  Branch (8759:5): [True: 0, False: 29.4k]
  ------------------
 8760|      0|    case ARM::STMDA_UPD:
  ------------------
  |  Branch (8760:5): [True: 0, False: 29.4k]
  ------------------
 8761|      0|    case ARM::STMDB_UPD:
  ------------------
  |  Branch (8761:5): [True: 0, False: 29.4k]
  ------------------
 8762|      0|    case ARM::STMIA_UPD:
  ------------------
  |  Branch (8762:5): [True: 0, False: 29.4k]
  ------------------
 8763|      0|    case ARM::STMIB_UPD:
  ------------------
  |  Branch (8763:5): [True: 0, False: 29.4k]
  ------------------
 8764|      0|    case ARM::sysLDMDA_UPD:
  ------------------
  |  Branch (8764:5): [True: 0, False: 29.4k]
  ------------------
 8765|      0|    case ARM::sysLDMDB_UPD:
  ------------------
  |  Branch (8765:5): [True: 0, False: 29.4k]
  ------------------
 8766|      0|    case ARM::sysLDMIA_UPD:
  ------------------
  |  Branch (8766:5): [True: 0, False: 29.4k]
  ------------------
 8767|      0|    case ARM::sysLDMIB_UPD:
  ------------------
  |  Branch (8767:5): [True: 0, False: 29.4k]
  ------------------
 8768|      0|    case ARM::sysSTMDA_UPD:
  ------------------
  |  Branch (8768:5): [True: 0, False: 29.4k]
  ------------------
 8769|      0|    case ARM::sysSTMDB_UPD:
  ------------------
  |  Branch (8769:5): [True: 0, False: 29.4k]
  ------------------
 8770|      0|    case ARM::sysSTMIA_UPD:
  ------------------
  |  Branch (8770:5): [True: 0, False: 29.4k]
  ------------------
 8771|      0|    case ARM::sysSTMIB_UPD: {
  ------------------
  |  Branch (8771:5): [True: 0, False: 29.4k]
  ------------------
 8772|       |      // op: p
 8773|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8774|      0|      Value |= (op & UINT64_C(15)) << 28;
 8775|       |      // op: regs
 8776|      0|      op = getRegisterListOpValue(MI, 4, Fixups, STI);
 8777|      0|      Value |= op & UINT64_C(65535);
 8778|       |      // op: Rn
 8779|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8780|      0|      Value |= (op & UINT64_C(15)) << 16;
 8781|      0|      break;
 8782|      0|    }
 8783|    117|    case ARM::MOVr:
  ------------------
  |  Branch (8783:5): [True: 117, False: 29.3k]
  ------------------
 8784|    127|    case ARM::MOVr_TC:
  ------------------
  |  Branch (8784:5): [True: 10, False: 29.4k]
  ------------------
 8785|    275|    case ARM::MVNr: {
  ------------------
  |  Branch (8785:5): [True: 148, False: 29.3k]
  ------------------
 8786|       |      // op: p
 8787|    275|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8788|    275|      Value |= (op & UINT64_C(15)) << 28;
 8789|       |      // op: s
 8790|    275|      op = getCCOutOpValue(MI, 4, Fixups, STI);
 8791|    275|      Value |= (op & UINT64_C(1)) << 20;
 8792|       |      // op: Rd
 8793|    275|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8794|    275|      Value |= (op & UINT64_C(15)) << 12;
 8795|       |      // op: Rm
 8796|    275|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8797|    275|      Value |= op & UINT64_C(15);
 8798|    275|      break;
 8799|    127|    }
 8800|    236|    case ARM::MOVi:
  ------------------
  |  Branch (8800:5): [True: 236, False: 29.2k]
  ------------------
 8801|    256|    case ARM::MVNi: {
  ------------------
  |  Branch (8801:5): [True: 20, False: 29.4k]
  ------------------
 8802|       |      // op: p
 8803|    256|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8804|    256|      Value |= (op & UINT64_C(15)) << 28;
 8805|       |      // op: s
 8806|    256|      op = getCCOutOpValue(MI, 4, Fixups, STI);
 8807|    256|      Value |= (op & UINT64_C(1)) << 20;
 8808|       |      // op: Rd
 8809|    256|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8810|    256|      Value |= (op & UINT64_C(15)) << 12;
 8811|       |      // op: imm
 8812|    256|      op = getModImmOpValue(MI, 1, Fixups, STI);
 8813|    256|      Value |= op & UINT64_C(4095);
 8814|    256|      break;
 8815|    236|    }
 8816|      0|    case ARM::VADDD:
  ------------------
  |  Branch (8816:5): [True: 0, False: 29.4k]
  ------------------
 8817|      0|    case ARM::VDIVD:
  ------------------
  |  Branch (8817:5): [True: 0, False: 29.4k]
  ------------------
 8818|      0|    case ARM::VMULD:
  ------------------
  |  Branch (8818:5): [True: 0, False: 29.4k]
  ------------------
 8819|      0|    case ARM::VNMULD:
  ------------------
  |  Branch (8819:5): [True: 0, False: 29.4k]
  ------------------
 8820|      1|    case ARM::VSUBD: {
  ------------------
  |  Branch (8820:5): [True: 1, False: 29.4k]
  ------------------
 8821|       |      // op: p
 8822|      1|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8823|      1|      Value |= (op & UINT64_C(15)) << 28;
 8824|       |      // op: Dd
 8825|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8826|      1|      Value |= (op & UINT64_C(16)) << 18;
 8827|      1|      Value |= (op & UINT64_C(15)) << 12;
 8828|       |      // op: Dn
 8829|      1|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8830|      1|      Value |= (op & UINT64_C(15)) << 16;
 8831|      1|      Value |= (op & UINT64_C(16)) << 3;
 8832|       |      // op: Dm
 8833|      1|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8834|      1|      Value |= (op & UINT64_C(16)) << 1;
 8835|      1|      Value |= op & UINT64_C(15);
 8836|      1|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8837|      1|      break;
 8838|      0|    }
 8839|    141|    case ARM::VLDRD:
  ------------------
  |  Branch (8839:5): [True: 141, False: 29.3k]
  ------------------
 8840|    162|    case ARM::VSTRD: {
  ------------------
  |  Branch (8840:5): [True: 21, False: 29.4k]
  ------------------
 8841|       |      // op: p
 8842|    162|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8843|    162|      Value |= (op & UINT64_C(15)) << 28;
 8844|       |      // op: Dd
 8845|    162|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8846|    162|      Value |= (op & UINT64_C(16)) << 18;
 8847|    162|      Value |= (op & UINT64_C(15)) << 12;
 8848|       |      // op: addr
 8849|    162|      op = getAddrMode5OpValue(MI, 1, Fixups, STI);
 8850|    162|      Value |= (op & UINT64_C(256)) << 15;
 8851|    162|      Value |= (op & UINT64_C(7680)) << 7;
 8852|    162|      Value |= op & UINT64_C(255);
 8853|    162|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8854|    162|      break;
 8855|    141|    }
 8856|      3|    case ARM::VMOVDRR: {
  ------------------
  |  Branch (8856:5): [True: 3, False: 29.4k]
  ------------------
 8857|       |      // op: p
 8858|      3|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8859|      3|      Value |= (op & UINT64_C(15)) << 28;
 8860|       |      // op: Dm
 8861|      3|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8862|      3|      Value |= (op & UINT64_C(16)) << 1;
 8863|      3|      Value |= op & UINT64_C(15);
 8864|       |      // op: Rt
 8865|      3|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8866|      3|      Value |= (op & UINT64_C(15)) << 12;
 8867|       |      // op: Rt2
 8868|      3|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8869|      3|      Value |= (op & UINT64_C(15)) << 16;
 8870|      3|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8871|      3|      break;
 8872|    141|    }
 8873|      6|    case ARM::VMOVRRD: {
  ------------------
  |  Branch (8873:5): [True: 6, False: 29.4k]
  ------------------
 8874|       |      // op: p
 8875|      6|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8876|      6|      Value |= (op & UINT64_C(15)) << 28;
 8877|       |      // op: Dm
 8878|      6|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8879|      6|      Value |= (op & UINT64_C(16)) << 1;
 8880|      6|      Value |= op & UINT64_C(15);
 8881|       |      // op: Rt
 8882|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8883|      6|      Value |= (op & UINT64_C(15)) << 12;
 8884|       |      // op: Rt2
 8885|      6|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8886|      6|      Value |= (op & UINT64_C(15)) << 16;
 8887|      6|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 8888|      6|      break;
 8889|    141|    }
 8890|     11|    case ARM::SXTB:
  ------------------
  |  Branch (8890:5): [True: 11, False: 29.4k]
  ------------------
 8891|     11|    case ARM::SXTB16:
  ------------------
  |  Branch (8891:5): [True: 0, False: 29.4k]
  ------------------
 8892|     61|    case ARM::SXTH:
  ------------------
  |  Branch (8892:5): [True: 50, False: 29.4k]
  ------------------
 8893|     97|    case ARM::UXTB:
  ------------------
  |  Branch (8893:5): [True: 36, False: 29.4k]
  ------------------
 8894|     97|    case ARM::UXTB16:
  ------------------
  |  Branch (8894:5): [True: 0, False: 29.4k]
  ------------------
 8895|    103|    case ARM::UXTH: {
  ------------------
  |  Branch (8895:5): [True: 6, False: 29.4k]
  ------------------
 8896|       |      // op: p
 8897|    103|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8898|    103|      Value |= (op & UINT64_C(15)) << 28;
 8899|       |      // op: Rd
 8900|    103|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8901|    103|      Value |= (op & UINT64_C(15)) << 12;
 8902|       |      // op: Rm
 8903|    103|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8904|    103|      Value |= op & UINT64_C(15);
 8905|       |      // op: rot
 8906|    103|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8907|    103|      Value |= (op & UINT64_C(3)) << 10;
 8908|    103|      break;
 8909|     97|    }
 8910|     12|    case ARM::SEL: {
  ------------------
  |  Branch (8910:5): [True: 12, False: 29.4k]
  ------------------
 8911|       |      // op: p
 8912|     12|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8913|     12|      Value |= (op & UINT64_C(15)) << 28;
 8914|       |      // op: Rd
 8915|     12|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8916|     12|      Value |= (op & UINT64_C(15)) << 12;
 8917|       |      // op: Rn
 8918|     12|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8919|     12|      Value |= (op & UINT64_C(15)) << 16;
 8920|       |      // op: Rm
 8921|     12|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8922|     12|      Value |= op & UINT64_C(15);
 8923|     12|      break;
 8924|     97|    }
 8925|      3|    case ARM::BFC: {
  ------------------
  |  Branch (8925:5): [True: 3, False: 29.4k]
  ------------------
 8926|       |      // op: p
 8927|      3|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8928|      3|      Value |= (op & UINT64_C(15)) << 28;
 8929|       |      // op: Rd
 8930|      3|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8931|      3|      Value |= (op & UINT64_C(15)) << 12;
 8932|       |      // op: imm
 8933|      3|      op = getBitfieldInvertedMaskOpValue(MI, 2, Fixups, STI);
 8934|      3|      Value |= (op & UINT64_C(992)) << 11;
 8935|      3|      Value |= (op & UINT64_C(31)) << 7;
 8936|      3|      break;
 8937|     97|    }
 8938|     13|    case ARM::MOVTi16: {
  ------------------
  |  Branch (8938:5): [True: 13, False: 29.4k]
  ------------------
 8939|       |      // op: p
 8940|     13|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8941|     13|      Value |= (op & UINT64_C(15)) << 28;
 8942|       |      // op: Rd
 8943|     13|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8944|     13|      Value |= (op & UINT64_C(15)) << 12;
 8945|       |      // op: imm
 8946|     13|      op = getHiLo16ImmOpValue(MI, 2, Fixups, STI);
 8947|     13|      Value |= (op & UINT64_C(61440)) << 4;
 8948|     13|      Value |= op & UINT64_C(4095);
 8949|     13|      break;
 8950|     97|    }
 8951|      0|    case ARM::SSAT16:
  ------------------
  |  Branch (8951:5): [True: 0, False: 29.4k]
  ------------------
 8952|      0|    case ARM::USAT16: {
  ------------------
  |  Branch (8952:5): [True: 0, False: 29.4k]
  ------------------
 8953|       |      // op: p
 8954|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8955|      0|      Value |= (op & UINT64_C(15)) << 28;
 8956|       |      // op: Rd
 8957|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8958|      0|      Value |= (op & UINT64_C(15)) << 12;
 8959|       |      // op: sat_imm
 8960|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8961|      0|      Value |= (op & UINT64_C(15)) << 16;
 8962|       |      // op: Rn
 8963|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8964|      0|      Value |= op & UINT64_C(15);
 8965|      0|      break;
 8966|      0|    }
 8967|      0|    case ARM::SDIV:
  ------------------
  |  Branch (8967:5): [True: 0, False: 29.4k]
  ------------------
 8968|      0|    case ARM::SMMUL:
  ------------------
  |  Branch (8968:5): [True: 0, False: 29.4k]
  ------------------
 8969|      0|    case ARM::SMMULR:
  ------------------
  |  Branch (8969:5): [True: 0, False: 29.4k]
  ------------------
 8970|      0|    case ARM::UDIV:
  ------------------
  |  Branch (8970:5): [True: 0, False: 29.4k]
  ------------------
 8971|      0|    case ARM::USAD8: {
  ------------------
  |  Branch (8971:5): [True: 0, False: 29.4k]
  ------------------
 8972|       |      // op: p
 8973|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8974|      0|      Value |= (op & UINT64_C(15)) << 28;
 8975|       |      // op: Rd
 8976|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8977|      0|      Value |= (op & UINT64_C(15)) << 16;
 8978|       |      // op: Rn
 8979|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 8980|      0|      Value |= op & UINT64_C(15);
 8981|       |      // op: Rm
 8982|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 8983|      0|      Value |= (op & UINT64_C(15)) << 8;
 8984|      0|      break;
 8985|      0|    }
 8986|      6|    case ARM::CMNzrsi:
  ------------------
  |  Branch (8986:5): [True: 6, False: 29.4k]
  ------------------
 8987|     13|    case ARM::CMPrsi:
  ------------------
  |  Branch (8987:5): [True: 7, False: 29.4k]
  ------------------
 8988|     16|    case ARM::TEQrsi:
  ------------------
  |  Branch (8988:5): [True: 3, False: 29.4k]
  ------------------
 8989|     26|    case ARM::TSTrsi: {
  ------------------
  |  Branch (8989:5): [True: 10, False: 29.4k]
  ------------------
 8990|       |      // op: p
 8991|     26|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 8992|     26|      Value |= (op & UINT64_C(15)) << 28;
 8993|       |      // op: Rn
 8994|     26|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 8995|     26|      Value |= (op & UINT64_C(15)) << 16;
 8996|       |      // op: shift
 8997|     26|      op = getSORegImmOpValue(MI, 1, Fixups, STI);
 8998|     26|      Value |= op & UINT64_C(4064);
 8999|     26|      Value |= op & UINT64_C(15);
 9000|     26|      break;
 9001|     16|    }
 9002|      0|    case ARM::QADD16:
  ------------------
  |  Branch (9002:5): [True: 0, False: 29.4k]
  ------------------
 9003|      0|    case ARM::QADD8:
  ------------------
  |  Branch (9003:5): [True: 0, False: 29.4k]
  ------------------
 9004|     18|    case ARM::QASX:
  ------------------
  |  Branch (9004:5): [True: 18, False: 29.4k]
  ------------------
 9005|     18|    case ARM::QSAX:
  ------------------
  |  Branch (9005:5): [True: 0, False: 29.4k]
  ------------------
 9006|     18|    case ARM::QSUB16:
  ------------------
  |  Branch (9006:5): [True: 0, False: 29.4k]
  ------------------
 9007|     18|    case ARM::QSUB8:
  ------------------
  |  Branch (9007:5): [True: 0, False: 29.4k]
  ------------------
 9008|     18|    case ARM::SADD16:
  ------------------
  |  Branch (9008:5): [True: 0, False: 29.4k]
  ------------------
 9009|     18|    case ARM::SADD8:
  ------------------
  |  Branch (9009:5): [True: 0, False: 29.4k]
  ------------------
 9010|     28|    case ARM::SASX:
  ------------------
  |  Branch (9010:5): [True: 10, False: 29.4k]
  ------------------
 9011|     28|    case ARM::SHADD16:
  ------------------
  |  Branch (9011:5): [True: 0, False: 29.4k]
  ------------------
 9012|     28|    case ARM::SHADD8:
  ------------------
  |  Branch (9012:5): [True: 0, False: 29.4k]
  ------------------
 9013|     28|    case ARM::SHASX:
  ------------------
  |  Branch (9013:5): [True: 0, False: 29.4k]
  ------------------
 9014|     28|    case ARM::SHSAX:
  ------------------
  |  Branch (9014:5): [True: 0, False: 29.4k]
  ------------------
 9015|     28|    case ARM::SHSUB16:
  ------------------
  |  Branch (9015:5): [True: 0, False: 29.4k]
  ------------------
 9016|     28|    case ARM::SHSUB8:
  ------------------
  |  Branch (9016:5): [True: 0, False: 29.4k]
  ------------------
 9017|     28|    case ARM::SSAX:
  ------------------
  |  Branch (9017:5): [True: 0, False: 29.4k]
  ------------------
 9018|     28|    case ARM::SSUB16:
  ------------------
  |  Branch (9018:5): [True: 0, False: 29.4k]
  ------------------
 9019|     28|    case ARM::SSUB8:
  ------------------
  |  Branch (9019:5): [True: 0, False: 29.4k]
  ------------------
 9020|     28|    case ARM::UADD16:
  ------------------
  |  Branch (9020:5): [True: 0, False: 29.4k]
  ------------------
 9021|     28|    case ARM::UADD8:
  ------------------
  |  Branch (9021:5): [True: 0, False: 29.4k]
  ------------------
 9022|     66|    case ARM::UASX:
  ------------------
  |  Branch (9022:5): [True: 38, False: 29.4k]
  ------------------
 9023|     66|    case ARM::UHADD16:
  ------------------
  |  Branch (9023:5): [True: 0, False: 29.4k]
  ------------------
 9024|     66|    case ARM::UHADD8:
  ------------------
  |  Branch (9024:5): [True: 0, False: 29.4k]
  ------------------
 9025|     66|    case ARM::UHASX:
  ------------------
  |  Branch (9025:5): [True: 0, False: 29.4k]
  ------------------
 9026|     66|    case ARM::UHSAX:
  ------------------
  |  Branch (9026:5): [True: 0, False: 29.4k]
  ------------------
 9027|     66|    case ARM::UHSUB16:
  ------------------
  |  Branch (9027:5): [True: 0, False: 29.4k]
  ------------------
 9028|     66|    case ARM::UHSUB8:
  ------------------
  |  Branch (9028:5): [True: 0, False: 29.4k]
  ------------------
 9029|     66|    case ARM::UQADD16:
  ------------------
  |  Branch (9029:5): [True: 0, False: 29.4k]
  ------------------
 9030|     66|    case ARM::UQADD8:
  ------------------
  |  Branch (9030:5): [True: 0, False: 29.4k]
  ------------------
 9031|     66|    case ARM::UQASX:
  ------------------
  |  Branch (9031:5): [True: 0, False: 29.4k]
  ------------------
 9032|     66|    case ARM::UQSAX:
  ------------------
  |  Branch (9032:5): [True: 0, False: 29.4k]
  ------------------
 9033|     66|    case ARM::UQSUB16:
  ------------------
  |  Branch (9033:5): [True: 0, False: 29.4k]
  ------------------
 9034|     66|    case ARM::UQSUB8:
  ------------------
  |  Branch (9034:5): [True: 0, False: 29.4k]
  ------------------
 9035|     66|    case ARM::USAX:
  ------------------
  |  Branch (9035:5): [True: 0, False: 29.4k]
  ------------------
 9036|     66|    case ARM::USUB16:
  ------------------
  |  Branch (9036:5): [True: 0, False: 29.4k]
  ------------------
 9037|     66|    case ARM::USUB8: {
  ------------------
  |  Branch (9037:5): [True: 0, False: 29.4k]
  ------------------
 9038|       |      // op: p
 9039|     66|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9040|     66|      Value |= (op & UINT64_C(15)) << 28;
 9041|       |      // op: Rn
 9042|     66|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9043|     66|      Value |= (op & UINT64_C(15)) << 16;
 9044|       |      // op: Rd
 9045|     66|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9046|     66|      Value |= (op & UINT64_C(15)) << 12;
 9047|       |      // op: Rm
 9048|     66|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9049|     66|      Value |= op & UINT64_C(15);
 9050|     66|      break;
 9051|     66|    }
 9052|      0|    case ARM::SMUAD:
  ------------------
  |  Branch (9052:5): [True: 0, False: 29.4k]
  ------------------
 9053|      0|    case ARM::SMUADX:
  ------------------
  |  Branch (9053:5): [True: 0, False: 29.4k]
  ------------------
 9054|      0|    case ARM::SMULBB:
  ------------------
  |  Branch (9054:5): [True: 0, False: 29.4k]
  ------------------
 9055|      0|    case ARM::SMULBT:
  ------------------
  |  Branch (9055:5): [True: 0, False: 29.4k]
  ------------------
 9056|      0|    case ARM::SMULTB:
  ------------------
  |  Branch (9056:5): [True: 0, False: 29.4k]
  ------------------
 9057|      0|    case ARM::SMULTT:
  ------------------
  |  Branch (9057:5): [True: 0, False: 29.4k]
  ------------------
 9058|      0|    case ARM::SMULWB:
  ------------------
  |  Branch (9058:5): [True: 0, False: 29.4k]
  ------------------
 9059|      0|    case ARM::SMULWT:
  ------------------
  |  Branch (9059:5): [True: 0, False: 29.4k]
  ------------------
 9060|      0|    case ARM::SMUSD:
  ------------------
  |  Branch (9060:5): [True: 0, False: 29.4k]
  ------------------
 9061|      0|    case ARM::SMUSDX: {
  ------------------
  |  Branch (9061:5): [True: 0, False: 29.4k]
  ------------------
 9062|       |      // op: p
 9063|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9064|      0|      Value |= (op & UINT64_C(15)) << 28;
 9065|       |      // op: Rn
 9066|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9067|      0|      Value |= op & UINT64_C(15);
 9068|       |      // op: Rm
 9069|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9070|      0|      Value |= (op & UINT64_C(15)) << 8;
 9071|       |      // op: Rd
 9072|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9073|      0|      Value |= (op & UINT64_C(15)) << 16;
 9074|      0|      break;
 9075|      0|    }
 9076|     10|    case ARM::QADD:
  ------------------
  |  Branch (9076:5): [True: 10, False: 29.4k]
  ------------------
 9077|     10|    case ARM::QDADD:
  ------------------
  |  Branch (9077:5): [True: 0, False: 29.4k]
  ------------------
 9078|     10|    case ARM::QDSUB:
  ------------------
  |  Branch (9078:5): [True: 0, False: 29.4k]
  ------------------
 9079|     49|    case ARM::QSUB: {
  ------------------
  |  Branch (9079:5): [True: 39, False: 29.4k]
  ------------------
 9080|       |      // op: p
 9081|     49|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9082|     49|      Value |= (op & UINT64_C(15)) << 28;
 9083|       |      // op: Rn
 9084|     49|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9085|     49|      Value |= (op & UINT64_C(15)) << 16;
 9086|       |      // op: Rd
 9087|     49|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9088|     49|      Value |= (op & UINT64_C(15)) << 12;
 9089|       |      // op: Rm
 9090|     49|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9091|     49|      Value |= op & UINT64_C(15);
 9092|     49|      break;
 9093|     10|    }
 9094|      0|    case ARM::SWP:
  ------------------
  |  Branch (9094:5): [True: 0, False: 29.4k]
  ------------------
 9095|      0|    case ARM::SWPB: {
  ------------------
  |  Branch (9095:5): [True: 0, False: 29.4k]
  ------------------
 9096|       |      // op: p
 9097|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9098|      0|      Value |= (op & UINT64_C(15)) << 28;
 9099|       |      // op: Rt
 9100|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9101|      0|      Value |= (op & UINT64_C(15)) << 12;
 9102|       |      // op: Rt2
 9103|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9104|      0|      Value |= op & UINT64_C(15);
 9105|       |      // op: addr
 9106|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9107|      0|      Value |= (op & UINT64_C(15)) << 16;
 9108|      0|      break;
 9109|      0|    }
 9110|     29|    case ARM::LDRBi12:
  ------------------
  |  Branch (9110:5): [True: 29, False: 29.4k]
  ------------------
 9111|    715|    case ARM::LDRi12:
  ------------------
  |  Branch (9111:5): [True: 686, False: 28.7k]
  ------------------
 9112|    720|    case ARM::STRBi12:
  ------------------
  |  Branch (9112:5): [True: 5, False: 29.4k]
  ------------------
 9113|    728|    case ARM::STRi12: {
  ------------------
  |  Branch (9113:5): [True: 8, False: 29.4k]
  ------------------
 9114|       |      // op: p
 9115|    728|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9116|    728|      Value |= (op & UINT64_C(15)) << 28;
 9117|       |      // op: Rt
 9118|    728|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9119|    728|      Value |= (op & UINT64_C(15)) << 12;
 9120|       |      // op: addr
 9121|    728|      op = getAddrModeImm12OpValue(MI, 1, Fixups, STI);
 9122|    728|      Value |= (op & UINT64_C(4096)) << 11;
 9123|    728|      Value |= (op & UINT64_C(122880)) << 3;
 9124|    728|      Value |= op & UINT64_C(4095);
 9125|    728|      break;
 9126|    720|    }
 9127|      0|    case ARM::LDRcp: {
  ------------------
  |  Branch (9127:5): [True: 0, False: 29.4k]
  ------------------
 9128|       |      // op: p
 9129|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9130|      0|      Value |= (op & UINT64_C(15)) << 28;
 9131|       |      // op: Rt
 9132|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9133|      0|      Value |= (op & UINT64_C(15)) << 12;
 9134|       |      // op: addr
 9135|      0|      op = getAddrModeImm12OpValue(MI, 1, Fixups, STI);
 9136|      0|      Value |= (op & UINT64_C(4096)) << 11;
 9137|      0|      Value |= op & UINT64_C(4095);
 9138|      0|      break;
 9139|    720|    }
 9140|      0|    case ARM::STLEX:
  ------------------
  |  Branch (9140:5): [True: 0, False: 29.4k]
  ------------------
 9141|      0|    case ARM::STLEXB:
  ------------------
  |  Branch (9141:5): [True: 0, False: 29.4k]
  ------------------
 9142|      0|    case ARM::STLEXD:
  ------------------
  |  Branch (9142:5): [True: 0, False: 29.4k]
  ------------------
 9143|      0|    case ARM::STLEXH:
  ------------------
  |  Branch (9143:5): [True: 0, False: 29.4k]
  ------------------
 9144|      0|    case ARM::STREX:
  ------------------
  |  Branch (9144:5): [True: 0, False: 29.4k]
  ------------------
 9145|      0|    case ARM::STREXB:
  ------------------
  |  Branch (9145:5): [True: 0, False: 29.4k]
  ------------------
 9146|      0|    case ARM::STREXD:
  ------------------
  |  Branch (9146:5): [True: 0, False: 29.4k]
  ------------------
 9147|      0|    case ARM::STREXH: {
  ------------------
  |  Branch (9147:5): [True: 0, False: 29.4k]
  ------------------
 9148|       |      // op: p
 9149|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9150|      0|      Value |= (op & UINT64_C(15)) << 28;
 9151|       |      // op: Rt
 9152|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9153|      0|      Value |= op & UINT64_C(15);
 9154|       |      // op: addr
 9155|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9156|      0|      Value |= (op & UINT64_C(15)) << 16;
 9157|       |      // op: Rd
 9158|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9159|      0|      Value |= (op & UINT64_C(15)) << 12;
 9160|      0|      break;
 9161|      0|    }
 9162|      0|    case ARM::VADDH:
  ------------------
  |  Branch (9162:5): [True: 0, False: 29.4k]
  ------------------
 9163|      0|    case ARM::VADDS:
  ------------------
  |  Branch (9163:5): [True: 0, False: 29.4k]
  ------------------
 9164|      0|    case ARM::VDIVH:
  ------------------
  |  Branch (9164:5): [True: 0, False: 29.4k]
  ------------------
 9165|      0|    case ARM::VDIVS:
  ------------------
  |  Branch (9165:5): [True: 0, False: 29.4k]
  ------------------
 9166|      0|    case ARM::VMULH:
  ------------------
  |  Branch (9166:5): [True: 0, False: 29.4k]
  ------------------
 9167|      0|    case ARM::VMULS:
  ------------------
  |  Branch (9167:5): [True: 0, False: 29.4k]
  ------------------
 9168|      0|    case ARM::VNMULH:
  ------------------
  |  Branch (9168:5): [True: 0, False: 29.4k]
  ------------------
 9169|      0|    case ARM::VNMULS:
  ------------------
  |  Branch (9169:5): [True: 0, False: 29.4k]
  ------------------
 9170|      0|    case ARM::VSUBH:
  ------------------
  |  Branch (9170:5): [True: 0, False: 29.4k]
  ------------------
 9171|      0|    case ARM::VSUBS: {
  ------------------
  |  Branch (9171:5): [True: 0, False: 29.4k]
  ------------------
 9172|       |      // op: p
 9173|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9174|      0|      Value |= (op & UINT64_C(15)) << 28;
 9175|       |      // op: Sd
 9176|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9177|      0|      Value |= (op & UINT64_C(1)) << 22;
 9178|      0|      Value |= (op & UINT64_C(30)) << 11;
 9179|       |      // op: Sn
 9180|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9181|      0|      Value |= (op & UINT64_C(30)) << 15;
 9182|      0|      Value |= (op & UINT64_C(1)) << 7;
 9183|       |      // op: Sm
 9184|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9185|      0|      Value |= (op & UINT64_C(1)) << 5;
 9186|      0|      Value |= (op & UINT64_C(30)) >> 1;
 9187|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9188|      0|      break;
 9189|      0|    }
 9190|      0|    case ARM::VLDRH:
  ------------------
  |  Branch (9190:5): [True: 0, False: 29.4k]
  ------------------
 9191|      0|    case ARM::VSTRH: {
  ------------------
  |  Branch (9191:5): [True: 0, False: 29.4k]
  ------------------
 9192|       |      // op: p
 9193|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9194|      0|      Value |= (op & UINT64_C(15)) << 28;
 9195|       |      // op: Sd
 9196|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9197|      0|      Value |= (op & UINT64_C(1)) << 22;
 9198|      0|      Value |= (op & UINT64_C(30)) << 11;
 9199|       |      // op: addr
 9200|      0|      op = getAddrMode5FP16OpValue(MI, 1, Fixups, STI);
 9201|      0|      Value |= (op & UINT64_C(256)) << 15;
 9202|      0|      Value |= (op & UINT64_C(7680)) << 7;
 9203|      0|      Value |= op & UINT64_C(255);
 9204|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9205|      0|      break;
 9206|      0|    }
 9207|     15|    case ARM::VLDRS:
  ------------------
  |  Branch (9207:5): [True: 15, False: 29.4k]
  ------------------
 9208|     66|    case ARM::VSTRS: {
  ------------------
  |  Branch (9208:5): [True: 51, False: 29.4k]
  ------------------
 9209|       |      // op: p
 9210|     66|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9211|     66|      Value |= (op & UINT64_C(15)) << 28;
 9212|       |      // op: Sd
 9213|     66|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9214|     66|      Value |= (op & UINT64_C(1)) << 22;
 9215|     66|      Value |= (op & UINT64_C(30)) << 11;
 9216|       |      // op: addr
 9217|     66|      op = getAddrMode5OpValue(MI, 1, Fixups, STI);
 9218|     66|      Value |= (op & UINT64_C(256)) << 15;
 9219|     66|      Value |= (op & UINT64_C(7680)) << 7;
 9220|     66|      Value |= op & UINT64_C(255);
 9221|     66|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9222|     66|      break;
 9223|     15|    }
 9224|      0|    case ARM::VSHTOH:
  ------------------
  |  Branch (9224:5): [True: 0, False: 29.4k]
  ------------------
 9225|      0|    case ARM::VSHTOS:
  ------------------
  |  Branch (9225:5): [True: 0, False: 29.4k]
  ------------------
 9226|      0|    case ARM::VSLTOH:
  ------------------
  |  Branch (9226:5): [True: 0, False: 29.4k]
  ------------------
 9227|      0|    case ARM::VSLTOS:
  ------------------
  |  Branch (9227:5): [True: 0, False: 29.4k]
  ------------------
 9228|      0|    case ARM::VTOSHH:
  ------------------
  |  Branch (9228:5): [True: 0, False: 29.4k]
  ------------------
 9229|      0|    case ARM::VTOSHS:
  ------------------
  |  Branch (9229:5): [True: 0, False: 29.4k]
  ------------------
 9230|      0|    case ARM::VTOSLH:
  ------------------
  |  Branch (9230:5): [True: 0, False: 29.4k]
  ------------------
 9231|      0|    case ARM::VTOSLS:
  ------------------
  |  Branch (9231:5): [True: 0, False: 29.4k]
  ------------------
 9232|      0|    case ARM::VTOUHH:
  ------------------
  |  Branch (9232:5): [True: 0, False: 29.4k]
  ------------------
 9233|      0|    case ARM::VTOUHS:
  ------------------
  |  Branch (9233:5): [True: 0, False: 29.4k]
  ------------------
 9234|      0|    case ARM::VTOULH:
  ------------------
  |  Branch (9234:5): [True: 0, False: 29.4k]
  ------------------
 9235|      0|    case ARM::VTOULS:
  ------------------
  |  Branch (9235:5): [True: 0, False: 29.4k]
  ------------------
 9236|      0|    case ARM::VUHTOH:
  ------------------
  |  Branch (9236:5): [True: 0, False: 29.4k]
  ------------------
 9237|      0|    case ARM::VUHTOS:
  ------------------
  |  Branch (9237:5): [True: 0, False: 29.4k]
  ------------------
 9238|      0|    case ARM::VULTOH:
  ------------------
  |  Branch (9238:5): [True: 0, False: 29.4k]
  ------------------
 9239|      0|    case ARM::VULTOS: {
  ------------------
  |  Branch (9239:5): [True: 0, False: 29.4k]
  ------------------
 9240|       |      // op: p
 9241|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9242|      0|      Value |= (op & UINT64_C(15)) << 28;
 9243|       |      // op: fbits
 9244|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9245|      0|      Value |= (op & UINT64_C(1)) << 5;
 9246|      0|      Value |= (op & UINT64_C(30)) >> 1;
 9247|       |      // op: dst
 9248|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9249|      0|      Value |= (op & UINT64_C(1)) << 22;
 9250|      0|      Value |= (op & UINT64_C(30)) << 11;
 9251|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9252|      0|      break;
 9253|      0|    }
 9254|      0|    case ARM::VSHTOD:
  ------------------
  |  Branch (9254:5): [True: 0, False: 29.4k]
  ------------------
 9255|      0|    case ARM::VSLTOD:
  ------------------
  |  Branch (9255:5): [True: 0, False: 29.4k]
  ------------------
 9256|      0|    case ARM::VTOSHD:
  ------------------
  |  Branch (9256:5): [True: 0, False: 29.4k]
  ------------------
 9257|      0|    case ARM::VTOSLD:
  ------------------
  |  Branch (9257:5): [True: 0, False: 29.4k]
  ------------------
 9258|      0|    case ARM::VTOUHD:
  ------------------
  |  Branch (9258:5): [True: 0, False: 29.4k]
  ------------------
 9259|      0|    case ARM::VTOULD:
  ------------------
  |  Branch (9259:5): [True: 0, False: 29.4k]
  ------------------
 9260|      0|    case ARM::VUHTOD:
  ------------------
  |  Branch (9260:5): [True: 0, False: 29.4k]
  ------------------
 9261|      0|    case ARM::VULTOD: {
  ------------------
  |  Branch (9261:5): [True: 0, False: 29.4k]
  ------------------
 9262|       |      // op: p
 9263|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9264|      0|      Value |= (op & UINT64_C(15)) << 28;
 9265|       |      // op: fbits
 9266|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9267|      0|      Value |= (op & UINT64_C(1)) << 5;
 9268|      0|      Value |= (op & UINT64_C(30)) >> 1;
 9269|       |      // op: dst
 9270|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9271|      0|      Value |= (op & UINT64_C(16)) << 18;
 9272|      0|      Value |= (op & UINT64_C(15)) << 12;
 9273|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9274|      0|      break;
 9275|      0|    }
 9276|     18|    case ARM::ADCrr:
  ------------------
  |  Branch (9276:5): [True: 18, False: 29.4k]
  ------------------
 9277|    127|    case ARM::ADDrr:
  ------------------
  |  Branch (9277:5): [True: 109, False: 29.3k]
  ------------------
 9278|    160|    case ARM::ANDrr:
  ------------------
  |  Branch (9278:5): [True: 33, False: 29.4k]
  ------------------
 9279|    176|    case ARM::BICrr:
  ------------------
  |  Branch (9279:5): [True: 16, False: 29.4k]
  ------------------
 9280|    194|    case ARM::EORrr:
  ------------------
  |  Branch (9280:5): [True: 18, False: 29.4k]
  ------------------
 9281|    207|    case ARM::ORRrr:
  ------------------
  |  Branch (9281:5): [True: 13, False: 29.4k]
  ------------------
 9282|    378|    case ARM::RSBrr:
  ------------------
  |  Branch (9282:5): [True: 171, False: 29.3k]
  ------------------
 9283|    451|    case ARM::RSCrr:
  ------------------
  |  Branch (9283:5): [True: 73, False: 29.4k]
  ------------------
 9284|    462|    case ARM::SBCrr:
  ------------------
  |  Branch (9284:5): [True: 11, False: 29.4k]
  ------------------
 9285|    479|    case ARM::SUBrr: {
  ------------------
  |  Branch (9285:5): [True: 17, False: 29.4k]
  ------------------
 9286|       |      // op: p
 9287|    479|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9288|    479|      Value |= (op & UINT64_C(15)) << 28;
 9289|       |      // op: s
 9290|    479|      op = getCCOutOpValue(MI, 5, Fixups, STI);
 9291|    479|      Value |= (op & UINT64_C(1)) << 20;
 9292|       |      // op: Rd
 9293|    479|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9294|    479|      Value |= (op & UINT64_C(15)) << 12;
 9295|       |      // op: Rn
 9296|    479|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9297|    479|      Value |= (op & UINT64_C(15)) << 16;
 9298|       |      // op: Rm
 9299|    479|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9300|    479|      Value |= op & UINT64_C(15);
 9301|    479|      break;
 9302|    462|    }
 9303|     22|    case ARM::ADCri:
  ------------------
  |  Branch (9303:5): [True: 22, False: 29.4k]
  ------------------
 9304|  2.22k|    case ARM::ADDri:
  ------------------
  |  Branch (9304:5): [True: 2.20k, False: 27.2k]
  ------------------
 9305|  2.28k|    case ARM::ANDri:
  ------------------
  |  Branch (9305:5): [True: 60, False: 29.4k]
  ------------------
 9306|  2.49k|    case ARM::BICri:
  ------------------
  |  Branch (9306:5): [True: 207, False: 29.2k]
  ------------------
 9307|  2.50k|    case ARM::EORri:
  ------------------
  |  Branch (9307:5): [True: 17, False: 29.4k]
  ------------------
 9308|  2.59k|    case ARM::ORRri:
  ------------------
  |  Branch (9308:5): [True: 86, False: 29.3k]
  ------------------
 9309|  2.64k|    case ARM::RSBri:
  ------------------
  |  Branch (9309:5): [True: 48, False: 29.4k]
  ------------------
 9310|  2.66k|    case ARM::RSCri:
  ------------------
  |  Branch (9310:5): [True: 23, False: 29.4k]
  ------------------
 9311|  2.73k|    case ARM::SBCri:
  ------------------
  |  Branch (9311:5): [True: 70, False: 29.4k]
  ------------------
 9312|  3.12k|    case ARM::SUBri: {
  ------------------
  |  Branch (9312:5): [True: 390, False: 29.0k]
  ------------------
 9313|       |      // op: p
 9314|  3.12k|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9315|  3.12k|      Value |= (op & UINT64_C(15)) << 28;
 9316|       |      // op: s
 9317|  3.12k|      op = getCCOutOpValue(MI, 5, Fixups, STI);
 9318|  3.12k|      Value |= (op & UINT64_C(1)) << 20;
 9319|       |      // op: Rd
 9320|  3.12k|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9321|  3.12k|      Value |= (op & UINT64_C(15)) << 12;
 9322|       |      // op: Rn
 9323|  3.12k|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9324|  3.12k|      Value |= (op & UINT64_C(15)) << 16;
 9325|       |      // op: imm
 9326|  3.12k|      op = getModImmOpValue(MI, 2, Fixups, STI);
 9327|  3.12k|      Value |= op & UINT64_C(4095);
 9328|  3.12k|      break;
 9329|  2.73k|    }
 9330|      6|    case ARM::MVNsi: {
  ------------------
  |  Branch (9330:5): [True: 6, False: 29.4k]
  ------------------
 9331|       |      // op: p
 9332|      6|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9333|      6|      Value |= (op & UINT64_C(15)) << 28;
 9334|       |      // op: s
 9335|      6|      op = getCCOutOpValue(MI, 5, Fixups, STI);
 9336|      6|      Value |= (op & UINT64_C(1)) << 20;
 9337|       |      // op: Rd
 9338|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9339|      6|      Value |= (op & UINT64_C(15)) << 12;
 9340|       |      // op: shift
 9341|      6|      op = getSORegImmOpValue(MI, 1, Fixups, STI);
 9342|      6|      Value |= op & UINT64_C(4064);
 9343|      6|      Value |= op & UINT64_C(15);
 9344|      6|      break;
 9345|  2.73k|    }
 9346|    481|    case ARM::MOVsi: {
  ------------------
  |  Branch (9346:5): [True: 481, False: 29.0k]
  ------------------
 9347|       |      // op: p
 9348|    481|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9349|    481|      Value |= (op & UINT64_C(15)) << 28;
 9350|       |      // op: s
 9351|    481|      op = getCCOutOpValue(MI, 5, Fixups, STI);
 9352|    481|      Value |= (op & UINT64_C(1)) << 20;
 9353|       |      // op: Rd
 9354|    481|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9355|    481|      Value |= (op & UINT64_C(15)) << 12;
 9356|       |      // op: src
 9357|    481|      op = getSORegImmOpValue(MI, 1, Fixups, STI);
 9358|    481|      Value |= op & UINT64_C(4064);
 9359|    481|      Value |= op & UINT64_C(15);
 9360|    481|      break;
 9361|  2.73k|    }
 9362|     80|    case ARM::MUL: {
  ------------------
  |  Branch (9362:5): [True: 80, False: 29.4k]
  ------------------
 9363|       |      // op: p
 9364|     80|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9365|     80|      Value |= (op & UINT64_C(15)) << 28;
 9366|       |      // op: s
 9367|     80|      op = getCCOutOpValue(MI, 5, Fixups, STI);
 9368|     80|      Value |= (op & UINT64_C(1)) << 20;
 9369|       |      // op: Rd
 9370|     80|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9371|     80|      Value |= (op & UINT64_C(15)) << 16;
 9372|       |      // op: Rm
 9373|     80|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9374|     80|      Value |= (op & UINT64_C(15)) << 8;
 9375|       |      // op: Rn
 9376|     80|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9377|     80|      Value |= op & UINT64_C(15);
 9378|     80|      break;
 9379|  2.73k|    }
 9380|      0|    case ARM::VFMAD:
  ------------------
  |  Branch (9380:5): [True: 0, False: 29.4k]
  ------------------
 9381|      0|    case ARM::VFMSD:
  ------------------
  |  Branch (9381:5): [True: 0, False: 29.4k]
  ------------------
 9382|      0|    case ARM::VFNMAD:
  ------------------
  |  Branch (9382:5): [True: 0, False: 29.4k]
  ------------------
 9383|      0|    case ARM::VFNMSD:
  ------------------
  |  Branch (9383:5): [True: 0, False: 29.4k]
  ------------------
 9384|      0|    case ARM::VMLAD:
  ------------------
  |  Branch (9384:5): [True: 0, False: 29.4k]
  ------------------
 9385|      0|    case ARM::VMLSD:
  ------------------
  |  Branch (9385:5): [True: 0, False: 29.4k]
  ------------------
 9386|      0|    case ARM::VNMLAD:
  ------------------
  |  Branch (9386:5): [True: 0, False: 29.4k]
  ------------------
 9387|      0|    case ARM::VNMLSD: {
  ------------------
  |  Branch (9387:5): [True: 0, False: 29.4k]
  ------------------
 9388|       |      // op: p
 9389|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9390|      0|      Value |= (op & UINT64_C(15)) << 28;
 9391|       |      // op: Dd
 9392|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9393|      0|      Value |= (op & UINT64_C(16)) << 18;
 9394|      0|      Value |= (op & UINT64_C(15)) << 12;
 9395|       |      // op: Dn
 9396|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9397|      0|      Value |= (op & UINT64_C(15)) << 16;
 9398|      0|      Value |= (op & UINT64_C(16)) << 3;
 9399|       |      // op: Dm
 9400|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9401|      0|      Value |= (op & UINT64_C(16)) << 1;
 9402|      0|      Value |= op & UINT64_C(15);
 9403|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9404|      0|      break;
 9405|      0|    }
 9406|      0|    case ARM::SXTAB:
  ------------------
  |  Branch (9406:5): [True: 0, False: 29.4k]
  ------------------
 9407|      0|    case ARM::SXTAB16:
  ------------------
  |  Branch (9407:5): [True: 0, False: 29.4k]
  ------------------
 9408|      0|    case ARM::SXTAH:
  ------------------
  |  Branch (9408:5): [True: 0, False: 29.4k]
  ------------------
 9409|      0|    case ARM::UXTAB:
  ------------------
  |  Branch (9409:5): [True: 0, False: 29.4k]
  ------------------
 9410|      0|    case ARM::UXTAB16:
  ------------------
  |  Branch (9410:5): [True: 0, False: 29.4k]
  ------------------
 9411|      0|    case ARM::UXTAH: {
  ------------------
  |  Branch (9411:5): [True: 0, False: 29.4k]
  ------------------
 9412|       |      // op: p
 9413|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9414|      0|      Value |= (op & UINT64_C(15)) << 28;
 9415|       |      // op: Rd
 9416|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9417|      0|      Value |= (op & UINT64_C(15)) << 12;
 9418|       |      // op: Rm
 9419|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9420|      0|      Value |= op & UINT64_C(15);
 9421|       |      // op: Rn
 9422|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9423|      0|      Value |= (op & UINT64_C(15)) << 16;
 9424|       |      // op: rot
 9425|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9426|      0|      Value |= (op & UINT64_C(3)) << 10;
 9427|      0|      break;
 9428|      0|    }
 9429|      0|    case ARM::PKHBT:
  ------------------
  |  Branch (9429:5): [True: 0, False: 29.4k]
  ------------------
 9430|      0|    case ARM::PKHTB: {
  ------------------
  |  Branch (9430:5): [True: 0, False: 29.4k]
  ------------------
 9431|       |      // op: p
 9432|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9433|      0|      Value |= (op & UINT64_C(15)) << 28;
 9434|       |      // op: Rd
 9435|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9436|      0|      Value |= (op & UINT64_C(15)) << 12;
 9437|       |      // op: Rn
 9438|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9439|      0|      Value |= (op & UINT64_C(15)) << 16;
 9440|       |      // op: Rm
 9441|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9442|      0|      Value |= op & UINT64_C(15);
 9443|       |      // op: sh
 9444|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9445|      0|      Value |= (op & UINT64_C(31)) << 7;
 9446|      0|      break;
 9447|      0|    }
 9448|      0|    case ARM::SBFX:
  ------------------
  |  Branch (9448:5): [True: 0, False: 29.4k]
  ------------------
 9449|      0|    case ARM::UBFX: {
  ------------------
  |  Branch (9449:5): [True: 0, False: 29.4k]
  ------------------
 9450|       |      // op: p
 9451|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9452|      0|      Value |= (op & UINT64_C(15)) << 28;
 9453|       |      // op: Rd
 9454|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9455|      0|      Value |= (op & UINT64_C(15)) << 12;
 9456|       |      // op: Rn
 9457|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9458|      0|      Value |= op & UINT64_C(15);
 9459|       |      // op: lsb
 9460|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9461|      0|      Value |= (op & UINT64_C(31)) << 7;
 9462|       |      // op: width
 9463|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9464|      0|      Value |= (op & UINT64_C(31)) << 16;
 9465|      0|      break;
 9466|      0|    }
 9467|      0|    case ARM::BFI: {
  ------------------
  |  Branch (9467:5): [True: 0, False: 29.4k]
  ------------------
 9468|       |      // op: p
 9469|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9470|      0|      Value |= (op & UINT64_C(15)) << 28;
 9471|       |      // op: Rd
 9472|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9473|      0|      Value |= (op & UINT64_C(15)) << 12;
 9474|       |      // op: Rn
 9475|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9476|      0|      Value |= op & UINT64_C(15);
 9477|       |      // op: imm
 9478|      0|      op = getBitfieldInvertedMaskOpValue(MI, 3, Fixups, STI);
 9479|      0|      Value |= (op & UINT64_C(992)) << 11;
 9480|      0|      Value |= (op & UINT64_C(31)) << 7;
 9481|      0|      break;
 9482|      0|    }
 9483|      0|    case ARM::SSAT:
  ------------------
  |  Branch (9483:5): [True: 0, False: 29.4k]
  ------------------
 9484|      0|    case ARM::USAT: {
  ------------------
  |  Branch (9484:5): [True: 0, False: 29.4k]
  ------------------
 9485|       |      // op: p
 9486|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9487|      0|      Value |= (op & UINT64_C(15)) << 28;
 9488|       |      // op: Rd
 9489|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9490|      0|      Value |= (op & UINT64_C(15)) << 12;
 9491|       |      // op: sat_imm
 9492|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9493|      0|      Value |= (op & UINT64_C(31)) << 16;
 9494|       |      // op: Rn
 9495|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9496|      0|      Value |= op & UINT64_C(15);
 9497|       |      // op: sh
 9498|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9499|      0|      Value |= (op & UINT64_C(31)) << 7;
 9500|      0|      Value |= (op & UINT64_C(32)) << 1;
 9501|      0|      break;
 9502|      0|    }
 9503|      1|    case ARM::MLS: {
  ------------------
  |  Branch (9503:5): [True: 1, False: 29.4k]
  ------------------
 9504|       |      // op: p
 9505|      1|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9506|      1|      Value |= (op & UINT64_C(15)) << 28;
 9507|       |      // op: Rd
 9508|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9509|      1|      Value |= (op & UINT64_C(15)) << 16;
 9510|       |      // op: Rm
 9511|      1|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9512|      1|      Value |= (op & UINT64_C(15)) << 8;
 9513|       |      // op: Rn
 9514|      1|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9515|      1|      Value |= op & UINT64_C(15);
 9516|       |      // op: Ra
 9517|      1|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9518|      1|      Value |= (op & UINT64_C(15)) << 12;
 9519|      1|      break;
 9520|      0|    }
 9521|      0|    case ARM::SMMLA:
  ------------------
  |  Branch (9521:5): [True: 0, False: 29.4k]
  ------------------
 9522|      0|    case ARM::SMMLAR:
  ------------------
  |  Branch (9522:5): [True: 0, False: 29.4k]
  ------------------
 9523|      0|    case ARM::SMMLS:
  ------------------
  |  Branch (9523:5): [True: 0, False: 29.4k]
  ------------------
 9524|      0|    case ARM::SMMLSR:
  ------------------
  |  Branch (9524:5): [True: 0, False: 29.4k]
  ------------------
 9525|      0|    case ARM::USADA8: {
  ------------------
  |  Branch (9525:5): [True: 0, False: 29.4k]
  ------------------
 9526|       |      // op: p
 9527|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9528|      0|      Value |= (op & UINT64_C(15)) << 28;
 9529|       |      // op: Rd
 9530|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9531|      0|      Value |= (op & UINT64_C(15)) << 16;
 9532|       |      // op: Rn
 9533|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9534|      0|      Value |= op & UINT64_C(15);
 9535|       |      // op: Rm
 9536|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9537|      0|      Value |= (op & UINT64_C(15)) << 8;
 9538|       |      // op: Ra
 9539|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9540|      0|      Value |= (op & UINT64_C(15)) << 12;
 9541|      0|      break;
 9542|      0|    }
 9543|      0|    case ARM::UMAAL: {
  ------------------
  |  Branch (9543:5): [True: 0, False: 29.4k]
  ------------------
 9544|       |      // op: p
 9545|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9546|      0|      Value |= (op & UINT64_C(15)) << 28;
 9547|       |      // op: RdLo
 9548|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9549|      0|      Value |= (op & UINT64_C(15)) << 12;
 9550|       |      // op: RdHi
 9551|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9552|      0|      Value |= (op & UINT64_C(15)) << 16;
 9553|       |      // op: Rm
 9554|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9555|      0|      Value |= (op & UINT64_C(15)) << 8;
 9556|       |      // op: Rn
 9557|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9558|      0|      Value |= op & UINT64_C(15);
 9559|      0|      break;
 9560|      0|    }
 9561|      0|    case ARM::CMNzrsr:
  ------------------
  |  Branch (9561:5): [True: 0, False: 29.4k]
  ------------------
 9562|      0|    case ARM::CMPrsr:
  ------------------
  |  Branch (9562:5): [True: 0, False: 29.4k]
  ------------------
 9563|      0|    case ARM::TEQrsr:
  ------------------
  |  Branch (9563:5): [True: 0, False: 29.4k]
  ------------------
 9564|      1|    case ARM::TSTrsr: {
  ------------------
  |  Branch (9564:5): [True: 1, False: 29.4k]
  ------------------
 9565|       |      // op: p
 9566|      1|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9567|      1|      Value |= (op & UINT64_C(15)) << 28;
 9568|       |      // op: Rn
 9569|      1|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9570|      1|      Value |= (op & UINT64_C(15)) << 16;
 9571|       |      // op: shift
 9572|      1|      op = getSORegRegOpValue(MI, 1, Fixups, STI);
 9573|      1|      Value |= op & UINT64_C(3840);
 9574|      1|      Value |= op & UINT64_C(96);
 9575|      1|      Value |= op & UINT64_C(15);
 9576|      1|      break;
 9577|      0|    }
 9578|      0|    case ARM::SMLAD:
  ------------------
  |  Branch (9578:5): [True: 0, False: 29.4k]
  ------------------
 9579|      0|    case ARM::SMLADX:
  ------------------
  |  Branch (9579:5): [True: 0, False: 29.4k]
  ------------------
 9580|      0|    case ARM::SMLSD:
  ------------------
  |  Branch (9580:5): [True: 0, False: 29.4k]
  ------------------
 9581|      0|    case ARM::SMLSDX: {
  ------------------
  |  Branch (9581:5): [True: 0, False: 29.4k]
  ------------------
 9582|       |      // op: p
 9583|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9584|      0|      Value |= (op & UINT64_C(15)) << 28;
 9585|       |      // op: Rn
 9586|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9587|      0|      Value |= op & UINT64_C(15);
 9588|       |      // op: Rm
 9589|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9590|      0|      Value |= (op & UINT64_C(15)) << 8;
 9591|       |      // op: Ra
 9592|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9593|      0|      Value |= (op & UINT64_C(15)) << 12;
 9594|       |      // op: Rd
 9595|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9596|      0|      Value |= (op & UINT64_C(15)) << 16;
 9597|      0|      break;
 9598|      0|    }
 9599|      0|    case ARM::SMLABB:
  ------------------
  |  Branch (9599:5): [True: 0, False: 29.4k]
  ------------------
 9600|      0|    case ARM::SMLABT:
  ------------------
  |  Branch (9600:5): [True: 0, False: 29.4k]
  ------------------
 9601|      0|    case ARM::SMLATB:
  ------------------
  |  Branch (9601:5): [True: 0, False: 29.4k]
  ------------------
 9602|      0|    case ARM::SMLATT:
  ------------------
  |  Branch (9602:5): [True: 0, False: 29.4k]
  ------------------
 9603|      0|    case ARM::SMLAWB:
  ------------------
  |  Branch (9603:5): [True: 0, False: 29.4k]
  ------------------
 9604|      0|    case ARM::SMLAWT: {
  ------------------
  |  Branch (9604:5): [True: 0, False: 29.4k]
  ------------------
 9605|       |      // op: p
 9606|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9607|      0|      Value |= (op & UINT64_C(15)) << 28;
 9608|       |      // op: Rn
 9609|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9610|      0|      Value |= op & UINT64_C(15);
 9611|       |      // op: Rm
 9612|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9613|      0|      Value |= (op & UINT64_C(15)) << 8;
 9614|       |      // op: Rd
 9615|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9616|      0|      Value |= (op & UINT64_C(15)) << 16;
 9617|       |      // op: Ra
 9618|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9619|      0|      Value |= (op & UINT64_C(15)) << 12;
 9620|      0|      break;
 9621|      0|    }
 9622|      0|    case ARM::SMLALBB:
  ------------------
  |  Branch (9622:5): [True: 0, False: 29.4k]
  ------------------
 9623|      0|    case ARM::SMLALBT:
  ------------------
  |  Branch (9623:5): [True: 0, False: 29.4k]
  ------------------
 9624|      0|    case ARM::SMLALD:
  ------------------
  |  Branch (9624:5): [True: 0, False: 29.4k]
  ------------------
 9625|      0|    case ARM::SMLALDX:
  ------------------
  |  Branch (9625:5): [True: 0, False: 29.4k]
  ------------------
 9626|      0|    case ARM::SMLALTB:
  ------------------
  |  Branch (9626:5): [True: 0, False: 29.4k]
  ------------------
 9627|      0|    case ARM::SMLALTT:
  ------------------
  |  Branch (9627:5): [True: 0, False: 29.4k]
  ------------------
 9628|      0|    case ARM::SMLSLD:
  ------------------
  |  Branch (9628:5): [True: 0, False: 29.4k]
  ------------------
 9629|      0|    case ARM::SMLSLDX: {
  ------------------
  |  Branch (9629:5): [True: 0, False: 29.4k]
  ------------------
 9630|       |      // op: p
 9631|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9632|      0|      Value |= (op & UINT64_C(15)) << 28;
 9633|       |      // op: Rn
 9634|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9635|      0|      Value |= op & UINT64_C(15);
 9636|       |      // op: Rm
 9637|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9638|      0|      Value |= (op & UINT64_C(15)) << 8;
 9639|       |      // op: RdLo
 9640|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9641|      0|      Value |= (op & UINT64_C(15)) << 12;
 9642|       |      // op: RdHi
 9643|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9644|      0|      Value |= (op & UINT64_C(15)) << 16;
 9645|      0|      break;
 9646|      0|    }
 9647|      1|    case ARM::LDRB_PRE_IMM:
  ------------------
  |  Branch (9647:5): [True: 1, False: 29.4k]
  ------------------
 9648|      2|    case ARM::LDR_PRE_IMM: {
  ------------------
  |  Branch (9648:5): [True: 1, False: 29.4k]
  ------------------
 9649|       |      // op: p
 9650|      2|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9651|      2|      Value |= (op & UINT64_C(15)) << 28;
 9652|       |      // op: Rt
 9653|      2|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9654|      2|      Value |= (op & UINT64_C(15)) << 12;
 9655|       |      // op: addr
 9656|      2|      op = getAddrModeImm12OpValue(MI, 2, Fixups, STI);
 9657|      2|      Value |= (op & UINT64_C(4096)) << 11;
 9658|      2|      Value |= (op & UINT64_C(122880)) << 3;
 9659|      2|      Value |= op & UINT64_C(4095);
 9660|      2|      break;
 9661|      1|    }
 9662|      5|    case ARM::LDRBrs:
  ------------------
  |  Branch (9662:5): [True: 5, False: 29.4k]
  ------------------
 9663|     10|    case ARM::LDRrs:
  ------------------
  |  Branch (9663:5): [True: 5, False: 29.4k]
  ------------------
 9664|     10|    case ARM::STRBrs:
  ------------------
  |  Branch (9664:5): [True: 0, False: 29.4k]
  ------------------
 9665|     10|    case ARM::STRrs: {
  ------------------
  |  Branch (9665:5): [True: 0, False: 29.4k]
  ------------------
 9666|       |      // op: p
 9667|     10|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9668|     10|      Value |= (op & UINT64_C(15)) << 28;
 9669|       |      // op: Rt
 9670|     10|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9671|     10|      Value |= (op & UINT64_C(15)) << 12;
 9672|       |      // op: shift
 9673|     10|      op = getLdStSORegOpValue(MI, 1, Fixups, STI);
 9674|     10|      Value |= (op & UINT64_C(4096)) << 11;
 9675|     10|      Value |= (op & UINT64_C(122880)) << 3;
 9676|     10|      Value |= op & UINT64_C(4064);
 9677|     10|      Value |= op & UINT64_C(15);
 9678|     10|      break;
 9679|     10|    }
 9680|      0|    case ARM::STRB_PRE_IMM:
  ------------------
  |  Branch (9680:5): [True: 0, False: 29.4k]
  ------------------
 9681|      0|    case ARM::STR_PRE_IMM: {
  ------------------
  |  Branch (9681:5): [True: 0, False: 29.4k]
  ------------------
 9682|       |      // op: p
 9683|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9684|      0|      Value |= (op & UINT64_C(15)) << 28;
 9685|       |      // op: Rt
 9686|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9687|      0|      Value |= (op & UINT64_C(15)) << 12;
 9688|       |      // op: addr
 9689|      0|      op = getAddrModeImm12OpValue(MI, 2, Fixups, STI);
 9690|      0|      Value |= (op & UINT64_C(4096)) << 11;
 9691|      0|      Value |= (op & UINT64_C(122880)) << 3;
 9692|      0|      Value |= op & UINT64_C(4095);
 9693|      0|      break;
 9694|      0|    }
 9695|      0|    case ARM::VFMAH:
  ------------------
  |  Branch (9695:5): [True: 0, False: 29.4k]
  ------------------
 9696|      0|    case ARM::VFMAS:
  ------------------
  |  Branch (9696:5): [True: 0, False: 29.4k]
  ------------------
 9697|      0|    case ARM::VFMSH:
  ------------------
  |  Branch (9697:5): [True: 0, False: 29.4k]
  ------------------
 9698|      0|    case ARM::VFMSS:
  ------------------
  |  Branch (9698:5): [True: 0, False: 29.4k]
  ------------------
 9699|      0|    case ARM::VFNMAH:
  ------------------
  |  Branch (9699:5): [True: 0, False: 29.4k]
  ------------------
 9700|      0|    case ARM::VFNMAS:
  ------------------
  |  Branch (9700:5): [True: 0, False: 29.4k]
  ------------------
 9701|      0|    case ARM::VFNMSH:
  ------------------
  |  Branch (9701:5): [True: 0, False: 29.4k]
  ------------------
 9702|      0|    case ARM::VFNMSS:
  ------------------
  |  Branch (9702:5): [True: 0, False: 29.4k]
  ------------------
 9703|      0|    case ARM::VMLAH:
  ------------------
  |  Branch (9703:5): [True: 0, False: 29.4k]
  ------------------
 9704|      0|    case ARM::VMLAS:
  ------------------
  |  Branch (9704:5): [True: 0, False: 29.4k]
  ------------------
 9705|      0|    case ARM::VMLSH:
  ------------------
  |  Branch (9705:5): [True: 0, False: 29.4k]
  ------------------
 9706|      0|    case ARM::VMLSS:
  ------------------
  |  Branch (9706:5): [True: 0, False: 29.4k]
  ------------------
 9707|      0|    case ARM::VNMLAH:
  ------------------
  |  Branch (9707:5): [True: 0, False: 29.4k]
  ------------------
 9708|      0|    case ARM::VNMLAS:
  ------------------
  |  Branch (9708:5): [True: 0, False: 29.4k]
  ------------------
 9709|      0|    case ARM::VNMLSH:
  ------------------
  |  Branch (9709:5): [True: 0, False: 29.4k]
  ------------------
 9710|      0|    case ARM::VNMLSS: {
  ------------------
  |  Branch (9710:5): [True: 0, False: 29.4k]
  ------------------
 9711|       |      // op: p
 9712|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9713|      0|      Value |= (op & UINT64_C(15)) << 28;
 9714|       |      // op: Sd
 9715|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9716|      0|      Value |= (op & UINT64_C(1)) << 22;
 9717|      0|      Value |= (op & UINT64_C(30)) << 11;
 9718|       |      // op: Sn
 9719|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9720|      0|      Value |= (op & UINT64_C(30)) << 15;
 9721|      0|      Value |= (op & UINT64_C(1)) << 7;
 9722|       |      // op: Sm
 9723|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9724|      0|      Value |= (op & UINT64_C(1)) << 5;
 9725|      0|      Value |= (op & UINT64_C(30)) >> 1;
 9726|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9727|      0|      break;
 9728|      0|    }
 9729|    827|    case ARM::LDRH:
  ------------------
  |  Branch (9729:5): [True: 827, False: 28.6k]
  ------------------
 9730|    832|    case ARM::LDRSB:
  ------------------
  |  Branch (9730:5): [True: 5, False: 29.4k]
  ------------------
 9731|    916|    case ARM::LDRSH:
  ------------------
  |  Branch (9731:5): [True: 84, False: 29.4k]
  ------------------
 9732|    917|    case ARM::STRH: {
  ------------------
  |  Branch (9732:5): [True: 1, False: 29.4k]
  ------------------
 9733|       |      // op: p
 9734|    917|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9735|    917|      Value |= (op & UINT64_C(15)) << 28;
 9736|       |      // op: addr
 9737|    917|      op = getAddrMode3OpValue(MI, 1, Fixups, STI);
 9738|    917|      Value |= (op & UINT64_C(256)) << 15;
 9739|    917|      Value |= (op & UINT64_C(8192)) << 9;
 9740|    917|      Value |= (op & UINT64_C(7680)) << 7;
 9741|    917|      Value |= (op & UINT64_C(240)) << 4;
 9742|    917|      Value |= op & UINT64_C(15);
 9743|       |      // op: Rt
 9744|    917|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9745|    917|      Value |= (op & UINT64_C(15)) << 12;
 9746|    917|      break;
 9747|    916|    }
 9748|      3|    case ARM::LDCL_OFFSET:
  ------------------
  |  Branch (9748:5): [True: 3, False: 29.4k]
  ------------------
 9749|      3|    case ARM::LDCL_PRE:
  ------------------
  |  Branch (9749:5): [True: 0, False: 29.4k]
  ------------------
 9750|    179|    case ARM::LDC_OFFSET:
  ------------------
  |  Branch (9750:5): [True: 176, False: 29.3k]
  ------------------
 9751|    179|    case ARM::LDC_PRE:
  ------------------
  |  Branch (9751:5): [True: 0, False: 29.4k]
  ------------------
 9752|    189|    case ARM::STCL_OFFSET:
  ------------------
  |  Branch (9752:5): [True: 10, False: 29.4k]
  ------------------
 9753|    189|    case ARM::STCL_PRE:
  ------------------
  |  Branch (9753:5): [True: 0, False: 29.4k]
  ------------------
 9754|    223|    case ARM::STC_OFFSET:
  ------------------
  |  Branch (9754:5): [True: 34, False: 29.4k]
  ------------------
 9755|    223|    case ARM::STC_PRE: {
  ------------------
  |  Branch (9755:5): [True: 0, False: 29.4k]
  ------------------
 9756|       |      // op: p
 9757|    223|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9758|    223|      Value |= (op & UINT64_C(15)) << 28;
 9759|       |      // op: addr
 9760|    223|      op = getAddrMode5OpValue(MI, 2, Fixups, STI);
 9761|    223|      Value |= (op & UINT64_C(256)) << 15;
 9762|    223|      Value |= (op & UINT64_C(7680)) << 7;
 9763|    223|      Value |= op & UINT64_C(255);
 9764|       |      // op: cop
 9765|    223|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9766|    223|      Value |= (op & UINT64_C(15)) << 8;
 9767|       |      // op: CRd
 9768|    223|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9769|    223|      Value |= (op & UINT64_C(15)) << 12;
 9770|    223|      break;
 9771|    223|    }
 9772|      0|    case ARM::LDRHTi:
  ------------------
  |  Branch (9772:5): [True: 0, False: 29.4k]
  ------------------
 9773|      0|    case ARM::LDRSBTi:
  ------------------
  |  Branch (9773:5): [True: 0, False: 29.4k]
  ------------------
 9774|      0|    case ARM::LDRSHTi: {
  ------------------
  |  Branch (9774:5): [True: 0, False: 29.4k]
  ------------------
 9775|       |      // op: p
 9776|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9777|      0|      Value |= (op & UINT64_C(15)) << 28;
 9778|       |      // op: addr
 9779|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9780|      0|      Value |= (op & UINT64_C(15)) << 16;
 9781|       |      // op: Rt
 9782|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9783|      0|      Value |= (op & UINT64_C(15)) << 12;
 9784|       |      // op: offset
 9785|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9786|      0|      Value |= (op & UINT64_C(256)) << 15;
 9787|      0|      Value |= (op & UINT64_C(240)) << 4;
 9788|      0|      Value |= op & UINT64_C(15);
 9789|      0|      break;
 9790|      0|    }
 9791|      0|    case ARM::STRHTi: {
  ------------------
  |  Branch (9791:5): [True: 0, False: 29.4k]
  ------------------
 9792|       |      // op: p
 9793|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9794|      0|      Value |= (op & UINT64_C(15)) << 28;
 9795|       |      // op: addr
 9796|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9797|      0|      Value |= (op & UINT64_C(15)) << 16;
 9798|       |      // op: Rt
 9799|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9800|      0|      Value |= (op & UINT64_C(15)) << 12;
 9801|       |      // op: offset
 9802|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9803|      0|      Value |= (op & UINT64_C(256)) << 15;
 9804|      0|      Value |= (op & UINT64_C(240)) << 4;
 9805|      0|      Value |= op & UINT64_C(15);
 9806|      0|      break;
 9807|      0|    }
 9808|      6|    case ARM::VMOVSRR: {
  ------------------
  |  Branch (9808:5): [True: 6, False: 29.4k]
  ------------------
 9809|       |      // op: p
 9810|      6|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9811|      6|      Value |= (op & UINT64_C(15)) << 28;
 9812|       |      // op: dst1
 9813|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9814|      6|      Value |= (op & UINT64_C(1)) << 5;
 9815|      6|      Value |= (op & UINT64_C(30)) >> 1;
 9816|       |      // op: src1
 9817|      6|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9818|      6|      Value |= (op & UINT64_C(15)) << 12;
 9819|       |      // op: src2
 9820|      6|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9821|      6|      Value |= (op & UINT64_C(15)) << 16;
 9822|      6|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9823|      6|      break;
 9824|      0|    }
 9825|      0|    case ARM::LDCL_POST:
  ------------------
  |  Branch (9825:5): [True: 0, False: 29.4k]
  ------------------
 9826|      0|    case ARM::LDC_POST:
  ------------------
  |  Branch (9826:5): [True: 0, False: 29.4k]
  ------------------
 9827|      0|    case ARM::STCL_POST:
  ------------------
  |  Branch (9827:5): [True: 0, False: 29.4k]
  ------------------
 9828|      0|    case ARM::STC_POST: {
  ------------------
  |  Branch (9828:5): [True: 0, False: 29.4k]
  ------------------
 9829|       |      // op: p
 9830|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9831|      0|      Value |= (op & UINT64_C(15)) << 28;
 9832|       |      // op: offset
 9833|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9834|      0|      Value |= (op & UINT64_C(256)) << 15;
 9835|      0|      Value |= op & UINT64_C(255);
 9836|       |      // op: addr
 9837|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9838|      0|      Value |= (op & UINT64_C(15)) << 16;
 9839|       |      // op: cop
 9840|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9841|      0|      Value |= (op & UINT64_C(15)) << 8;
 9842|       |      // op: CRd
 9843|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9844|      0|      Value |= (op & UINT64_C(15)) << 12;
 9845|      0|      break;
 9846|      0|    }
 9847|      0|    case ARM::LDCL_OPTION:
  ------------------
  |  Branch (9847:5): [True: 0, False: 29.4k]
  ------------------
 9848|      0|    case ARM::LDC_OPTION:
  ------------------
  |  Branch (9848:5): [True: 0, False: 29.4k]
  ------------------
 9849|      0|    case ARM::STCL_OPTION:
  ------------------
  |  Branch (9849:5): [True: 0, False: 29.4k]
  ------------------
 9850|      0|    case ARM::STC_OPTION: {
  ------------------
  |  Branch (9850:5): [True: 0, False: 29.4k]
  ------------------
 9851|       |      // op: p
 9852|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9853|      0|      Value |= (op & UINT64_C(15)) << 28;
 9854|       |      // op: option
 9855|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9856|      0|      Value |= op & UINT64_C(255);
 9857|       |      // op: addr
 9858|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9859|      0|      Value |= (op & UINT64_C(15)) << 16;
 9860|       |      // op: cop
 9861|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9862|      0|      Value |= (op & UINT64_C(15)) << 8;
 9863|       |      // op: CRd
 9864|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9865|      0|      Value |= (op & UINT64_C(15)) << 12;
 9866|      0|      break;
 9867|      0|    }
 9868|      6|    case ARM::ADCrsi:
  ------------------
  |  Branch (9868:5): [True: 6, False: 29.4k]
  ------------------
 9869|     12|    case ARM::ADDrsi:
  ------------------
  |  Branch (9869:5): [True: 6, False: 29.4k]
  ------------------
 9870|     22|    case ARM::ANDrsi:
  ------------------
  |  Branch (9870:5): [True: 10, False: 29.4k]
  ------------------
 9871|     64|    case ARM::BICrsi:
  ------------------
  |  Branch (9871:5): [True: 42, False: 29.4k]
  ------------------
 9872|     64|    case ARM::EORrsi:
  ------------------
  |  Branch (9872:5): [True: 0, False: 29.4k]
  ------------------
 9873|     74|    case ARM::ORRrsi:
  ------------------
  |  Branch (9873:5): [True: 10, False: 29.4k]
  ------------------
 9874|     84|    case ARM::RSBrsi:
  ------------------
  |  Branch (9874:5): [True: 10, False: 29.4k]
  ------------------
 9875|    104|    case ARM::RSCrsi:
  ------------------
  |  Branch (9875:5): [True: 20, False: 29.4k]
  ------------------
 9876|    107|    case ARM::SBCrsi:
  ------------------
  |  Branch (9876:5): [True: 3, False: 29.4k]
  ------------------
 9877|    138|    case ARM::SUBrsi: {
  ------------------
  |  Branch (9877:5): [True: 31, False: 29.4k]
  ------------------
 9878|       |      // op: p
 9879|    138|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9880|    138|      Value |= (op & UINT64_C(15)) << 28;
 9881|       |      // op: s
 9882|    138|      op = getCCOutOpValue(MI, 6, Fixups, STI);
 9883|    138|      Value |= (op & UINT64_C(1)) << 20;
 9884|       |      // op: Rd
 9885|    138|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9886|    138|      Value |= (op & UINT64_C(15)) << 12;
 9887|       |      // op: Rn
 9888|    138|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9889|    138|      Value |= (op & UINT64_C(15)) << 16;
 9890|       |      // op: shift
 9891|    138|      op = getSORegImmOpValue(MI, 2, Fixups, STI);
 9892|    138|      Value |= op & UINT64_C(4064);
 9893|    138|      Value |= op & UINT64_C(15);
 9894|    138|      break;
 9895|    107|    }
 9896|      0|    case ARM::MVNsr: {
  ------------------
  |  Branch (9896:5): [True: 0, False: 29.4k]
  ------------------
 9897|       |      // op: p
 9898|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9899|      0|      Value |= (op & UINT64_C(15)) << 28;
 9900|       |      // op: s
 9901|      0|      op = getCCOutOpValue(MI, 6, Fixups, STI);
 9902|      0|      Value |= (op & UINT64_C(1)) << 20;
 9903|       |      // op: Rd
 9904|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9905|      0|      Value |= (op & UINT64_C(15)) << 12;
 9906|       |      // op: shift
 9907|      0|      op = getSORegRegOpValue(MI, 1, Fixups, STI);
 9908|      0|      Value |= op & UINT64_C(3840);
 9909|      0|      Value |= op & UINT64_C(96);
 9910|      0|      Value |= op & UINT64_C(15);
 9911|      0|      break;
 9912|    107|    }
 9913|    461|    case ARM::MOVsr: {
  ------------------
  |  Branch (9913:5): [True: 461, False: 29.0k]
  ------------------
 9914|       |      // op: p
 9915|    461|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9916|    461|      Value |= (op & UINT64_C(15)) << 28;
 9917|       |      // op: s
 9918|    461|      op = getCCOutOpValue(MI, 6, Fixups, STI);
 9919|    461|      Value |= (op & UINT64_C(1)) << 20;
 9920|       |      // op: Rd
 9921|    461|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9922|    461|      Value |= (op & UINT64_C(15)) << 12;
 9923|       |      // op: src
 9924|    461|      op = getSORegRegOpValue(MI, 1, Fixups, STI);
 9925|    461|      Value |= op & UINT64_C(3840);
 9926|    461|      Value |= op & UINT64_C(96);
 9927|    461|      Value |= op & UINT64_C(15);
 9928|    461|      break;
 9929|    107|    }
 9930|      0|    case ARM::MLA: {
  ------------------
  |  Branch (9930:5): [True: 0, False: 29.4k]
  ------------------
 9931|       |      // op: p
 9932|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9933|      0|      Value |= (op & UINT64_C(15)) << 28;
 9934|       |      // op: s
 9935|      0|      op = getCCOutOpValue(MI, 6, Fixups, STI);
 9936|      0|      Value |= (op & UINT64_C(1)) << 20;
 9937|       |      // op: Rd
 9938|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9939|      0|      Value |= (op & UINT64_C(15)) << 16;
 9940|       |      // op: Rm
 9941|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9942|      0|      Value |= (op & UINT64_C(15)) << 8;
 9943|       |      // op: Rn
 9944|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9945|      0|      Value |= op & UINT64_C(15);
 9946|       |      // op: Ra
 9947|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9948|      0|      Value |= (op & UINT64_C(15)) << 12;
 9949|      0|      break;
 9950|    107|    }
 9951|      0|    case ARM::SMULL:
  ------------------
  |  Branch (9951:5): [True: 0, False: 29.4k]
  ------------------
 9952|      0|    case ARM::UMULL: {
  ------------------
  |  Branch (9952:5): [True: 0, False: 29.4k]
  ------------------
 9953|       |      // op: p
 9954|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9955|      0|      Value |= (op & UINT64_C(15)) << 28;
 9956|       |      // op: s
 9957|      0|      op = getCCOutOpValue(MI, 6, Fixups, STI);
 9958|      0|      Value |= (op & UINT64_C(1)) << 20;
 9959|       |      // op: RdLo
 9960|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9961|      0|      Value |= (op & UINT64_C(15)) << 12;
 9962|       |      // op: RdHi
 9963|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9964|      0|      Value |= (op & UINT64_C(15)) << 16;
 9965|       |      // op: Rm
 9966|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
 9967|      0|      Value |= (op & UINT64_C(15)) << 8;
 9968|       |      // op: Rn
 9969|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9970|      0|      Value |= op & UINT64_C(15);
 9971|      0|      break;
 9972|      0|    }
 9973|      0|    case ARM::VMOVRRS: {
  ------------------
  |  Branch (9973:5): [True: 0, False: 29.4k]
  ------------------
 9974|       |      // op: p
 9975|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
 9976|      0|      Value |= (op & UINT64_C(15)) << 28;
 9977|       |      // op: src1
 9978|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
 9979|      0|      Value |= (op & UINT64_C(1)) << 5;
 9980|      0|      Value |= (op & UINT64_C(30)) >> 1;
 9981|       |      // op: Rt
 9982|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9983|      0|      Value |= (op & UINT64_C(15)) << 12;
 9984|       |      // op: Rt2
 9985|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9986|      0|      Value |= (op & UINT64_C(15)) << 16;
 9987|      0|      Value = VFPThumb2PostEncoder(MI, Value, STI);
 9988|      0|      break;
 9989|      0|    }
 9990|      0|    case ARM::MRRC: {
  ------------------
  |  Branch (9990:5): [True: 0, False: 29.4k]
  ------------------
 9991|       |      // op: p
 9992|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
 9993|      0|      Value |= (op & UINT64_C(15)) << 28;
 9994|       |      // op: Rt
 9995|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
 9996|      0|      Value |= (op & UINT64_C(15)) << 12;
 9997|       |      // op: Rt2
 9998|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
 9999|      0|      Value |= (op & UINT64_C(15)) << 16;
10000|       |      // op: cop
10001|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10002|      0|      Value |= (op & UINT64_C(15)) << 8;
10003|       |      // op: opc1
10004|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10005|      0|      Value |= (op & UINT64_C(15)) << 4;
10006|       |      // op: CRm
10007|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
10008|      0|      Value |= op & UINT64_C(15);
10009|      0|      break;
10010|      0|    }
10011|      3|    case ARM::LDRH_PRE:
  ------------------
  |  Branch (10011:5): [True: 3, False: 29.4k]
  ------------------
10012|      3|    case ARM::LDRSB_PRE:
  ------------------
  |  Branch (10012:5): [True: 0, False: 29.4k]
  ------------------
10013|      3|    case ARM::LDRSH_PRE: {
  ------------------
  |  Branch (10013:5): [True: 0, False: 29.4k]
  ------------------
10014|       |      // op: p
10015|      3|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10016|      3|      Value |= (op & UINT64_C(15)) << 28;
10017|       |      // op: Rt
10018|      3|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10019|      3|      Value |= (op & UINT64_C(15)) << 12;
10020|       |      // op: addr
10021|      3|      op = getAddrMode3OpValue(MI, 2, Fixups, STI);
10022|      3|      Value |= (op & UINT64_C(256)) << 15;
10023|      3|      Value |= (op & UINT64_C(8192)) << 9;
10024|      3|      Value |= (op & UINT64_C(7680)) << 7;
10025|      3|      Value |= (op & UINT64_C(240)) << 4;
10026|      3|      Value |= op & UINT64_C(15);
10027|      3|      break;
10028|      3|    }
10029|      0|    case ARM::LDRB_PRE_REG:
  ------------------
  |  Branch (10029:5): [True: 0, False: 29.4k]
  ------------------
10030|      6|    case ARM::LDR_PRE_REG: {
  ------------------
  |  Branch (10030:5): [True: 6, False: 29.4k]
  ------------------
10031|       |      // op: p
10032|      6|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10033|      6|      Value |= (op & UINT64_C(15)) << 28;
10034|       |      // op: Rt
10035|      6|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10036|      6|      Value |= (op & UINT64_C(15)) << 12;
10037|       |      // op: addr
10038|      6|      op = getLdStSORegOpValue(MI, 2, Fixups, STI);
10039|      6|      Value |= (op & UINT64_C(4096)) << 11;
10040|      6|      Value |= (op & UINT64_C(122880)) << 3;
10041|      6|      Value |= op & UINT64_C(4064);
10042|      6|      Value |= op & UINT64_C(15);
10043|      6|      break;
10044|      0|    }
10045|      0|    case ARM::LDRBT_POST_REG:
  ------------------
  |  Branch (10045:5): [True: 0, False: 29.4k]
  ------------------
10046|     14|    case ARM::LDRB_POST_REG:
  ------------------
  |  Branch (10046:5): [True: 14, False: 29.4k]
  ------------------
10047|     17|    case ARM::LDRT_POST_REG:
  ------------------
  |  Branch (10047:5): [True: 3, False: 29.4k]
  ------------------
10048|     38|    case ARM::LDR_POST_REG: {
  ------------------
  |  Branch (10048:5): [True: 21, False: 29.4k]
  ------------------
10049|       |      // op: p
10050|     38|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10051|     38|      Value |= (op & UINT64_C(15)) << 28;
10052|       |      // op: Rt
10053|     38|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10054|     38|      Value |= (op & UINT64_C(15)) << 12;
10055|       |      // op: offset
10056|     38|      op = getAddrMode2OffsetOpValue(MI, 3, Fixups, STI);
10057|     38|      Value |= (op & UINT64_C(4096)) << 11;
10058|     38|      Value |= op & UINT64_C(4064);
10059|     38|      Value |= op & UINT64_C(15);
10060|       |      // op: addr
10061|     38|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10062|     38|      Value |= (op & UINT64_C(15)) << 16;
10063|     38|      break;
10064|     17|    }
10065|      0|    case ARM::LDRBT_POST_IMM:
  ------------------
  |  Branch (10065:5): [True: 0, False: 29.4k]
  ------------------
10066|    563|    case ARM::LDRB_POST_IMM:
  ------------------
  |  Branch (10066:5): [True: 563, False: 28.9k]
  ------------------
10067|    574|    case ARM::LDRT_POST_IMM:
  ------------------
  |  Branch (10067:5): [True: 11, False: 29.4k]
  ------------------
10068|    585|    case ARM::LDR_POST_IMM: {
  ------------------
  |  Branch (10068:5): [True: 11, False: 29.4k]
  ------------------
10069|       |      // op: p
10070|    585|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10071|    585|      Value |= (op & UINT64_C(15)) << 28;
10072|       |      // op: Rt
10073|    585|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10074|    585|      Value |= (op & UINT64_C(15)) << 12;
10075|       |      // op: offset
10076|    585|      op = getAddrMode2OffsetOpValue(MI, 3, Fixups, STI);
10077|    585|      Value |= (op & UINT64_C(4096)) << 11;
10078|    585|      Value |= op & UINT64_C(4095);
10079|       |      // op: addr
10080|    585|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10081|    585|      Value |= (op & UINT64_C(15)) << 16;
10082|    585|      break;
10083|    574|    }
10084|     11|    case ARM::LDRH_POST:
  ------------------
  |  Branch (10084:5): [True: 11, False: 29.4k]
  ------------------
10085|     17|    case ARM::LDRSB_POST:
  ------------------
  |  Branch (10085:5): [True: 6, False: 29.4k]
  ------------------
10086|     24|    case ARM::LDRSH_POST: {
  ------------------
  |  Branch (10086:5): [True: 7, False: 29.4k]
  ------------------
10087|       |      // op: p
10088|     24|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10089|     24|      Value |= (op & UINT64_C(15)) << 28;
10090|       |      // op: Rt
10091|     24|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10092|     24|      Value |= (op & UINT64_C(15)) << 12;
10093|       |      // op: offset
10094|     24|      op = getAddrMode3OffsetOpValue(MI, 3, Fixups, STI);
10095|     24|      Value |= (op & UINT64_C(256)) << 15;
10096|     24|      Value |= (op & UINT64_C(512)) << 13;
10097|     24|      Value |= (op & UINT64_C(240)) << 4;
10098|     24|      Value |= op & UINT64_C(15);
10099|       |      // op: addr
10100|     24|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10101|     24|      Value |= (op & UINT64_C(15)) << 16;
10102|     24|      break;
10103|     17|    }
10104|      0|    case ARM::STRH_PRE: {
  ------------------
  |  Branch (10104:5): [True: 0, False: 29.4k]
  ------------------
10105|       |      // op: p
10106|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10107|      0|      Value |= (op & UINT64_C(15)) << 28;
10108|       |      // op: Rt
10109|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10110|      0|      Value |= (op & UINT64_C(15)) << 12;
10111|       |      // op: addr
10112|      0|      op = getAddrMode3OpValue(MI, 2, Fixups, STI);
10113|      0|      Value |= (op & UINT64_C(256)) << 15;
10114|      0|      Value |= (op & UINT64_C(8192)) << 9;
10115|      0|      Value |= (op & UINT64_C(7680)) << 7;
10116|      0|      Value |= (op & UINT64_C(240)) << 4;
10117|      0|      Value |= op & UINT64_C(15);
10118|      0|      break;
10119|     17|    }
10120|      0|    case ARM::STRB_PRE_REG:
  ------------------
  |  Branch (10120:5): [True: 0, False: 29.4k]
  ------------------
10121|      0|    case ARM::STR_PRE_REG: {
  ------------------
  |  Branch (10121:5): [True: 0, False: 29.4k]
  ------------------
10122|       |      // op: p
10123|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10124|      0|      Value |= (op & UINT64_C(15)) << 28;
10125|       |      // op: Rt
10126|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10127|      0|      Value |= (op & UINT64_C(15)) << 12;
10128|       |      // op: addr
10129|      0|      op = getLdStSORegOpValue(MI, 2, Fixups, STI);
10130|      0|      Value |= (op & UINT64_C(4096)) << 11;
10131|      0|      Value |= (op & UINT64_C(122880)) << 3;
10132|      0|      Value |= op & UINT64_C(4064);
10133|      0|      Value |= op & UINT64_C(15);
10134|      0|      break;
10135|      0|    }
10136|      0|    case ARM::STRBT_POST_REG:
  ------------------
  |  Branch (10136:5): [True: 0, False: 29.4k]
  ------------------
10137|      0|    case ARM::STRB_POST_REG:
  ------------------
  |  Branch (10137:5): [True: 0, False: 29.4k]
  ------------------
10138|      0|    case ARM::STRT_POST_REG:
  ------------------
  |  Branch (10138:5): [True: 0, False: 29.4k]
  ------------------
10139|      0|    case ARM::STR_POST_REG: {
  ------------------
  |  Branch (10139:5): [True: 0, False: 29.4k]
  ------------------
10140|       |      // op: p
10141|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10142|      0|      Value |= (op & UINT64_C(15)) << 28;
10143|       |      // op: Rt
10144|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10145|      0|      Value |= (op & UINT64_C(15)) << 12;
10146|       |      // op: offset
10147|      0|      op = getAddrMode2OffsetOpValue(MI, 3, Fixups, STI);
10148|      0|      Value |= (op & UINT64_C(4096)) << 11;
10149|      0|      Value |= op & UINT64_C(4064);
10150|      0|      Value |= op & UINT64_C(15);
10151|       |      // op: addr
10152|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10153|      0|      Value |= (op & UINT64_C(15)) << 16;
10154|      0|      break;
10155|      0|    }
10156|      0|    case ARM::STRBT_POST_IMM:
  ------------------
  |  Branch (10156:5): [True: 0, False: 29.4k]
  ------------------
10157|      0|    case ARM::STRB_POST_IMM:
  ------------------
  |  Branch (10157:5): [True: 0, False: 29.4k]
  ------------------
10158|      0|    case ARM::STRT_POST_IMM:
  ------------------
  |  Branch (10158:5): [True: 0, False: 29.4k]
  ------------------
10159|      0|    case ARM::STR_POST_IMM: {
  ------------------
  |  Branch (10159:5): [True: 0, False: 29.4k]
  ------------------
10160|       |      // op: p
10161|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10162|      0|      Value |= (op & UINT64_C(15)) << 28;
10163|       |      // op: Rt
10164|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10165|      0|      Value |= (op & UINT64_C(15)) << 12;
10166|       |      // op: offset
10167|      0|      op = getAddrMode2OffsetOpValue(MI, 3, Fixups, STI);
10168|      0|      Value |= (op & UINT64_C(4096)) << 11;
10169|      0|      Value |= op & UINT64_C(4095);
10170|       |      // op: addr
10171|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10172|      0|      Value |= (op & UINT64_C(15)) << 16;
10173|      0|      break;
10174|      0|    }
10175|      0|    case ARM::STRH_POST: {
  ------------------
  |  Branch (10175:5): [True: 0, False: 29.4k]
  ------------------
10176|       |      // op: p
10177|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10178|      0|      Value |= (op & UINT64_C(15)) << 28;
10179|       |      // op: Rt
10180|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10181|      0|      Value |= (op & UINT64_C(15)) << 12;
10182|       |      // op: offset
10183|      0|      op = getAddrMode3OffsetOpValue(MI, 3, Fixups, STI);
10184|      0|      Value |= (op & UINT64_C(256)) << 15;
10185|      0|      Value |= (op & UINT64_C(512)) << 13;
10186|      0|      Value |= (op & UINT64_C(240)) << 4;
10187|      0|      Value |= op & UINT64_C(15);
10188|       |      // op: addr
10189|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10190|      0|      Value |= (op & UINT64_C(15)) << 16;
10191|      0|      break;
10192|      0|    }
10193|      0|    case ARM::MCRR: {
  ------------------
  |  Branch (10193:5): [True: 0, False: 29.4k]
  ------------------
10194|       |      // op: p
10195|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10196|      0|      Value |= (op & UINT64_C(15)) << 28;
10197|       |      // op: Rt
10198|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10199|      0|      Value |= (op & UINT64_C(15)) << 12;
10200|       |      // op: Rt2
10201|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10202|      0|      Value |= (op & UINT64_C(15)) << 16;
10203|       |      // op: cop
10204|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10205|      0|      Value |= (op & UINT64_C(15)) << 8;
10206|       |      // op: opc1
10207|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10208|      0|      Value |= (op & UINT64_C(15)) << 4;
10209|       |      // op: CRm
10210|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
10211|      0|      Value |= op & UINT64_C(15);
10212|      0|      break;
10213|      0|    }
10214|     13|    case ARM::LDRD:
  ------------------
  |  Branch (10214:5): [True: 13, False: 29.4k]
  ------------------
10215|     37|    case ARM::STRD: {
  ------------------
  |  Branch (10215:5): [True: 24, False: 29.4k]
  ------------------
10216|       |      // op: p
10217|     37|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10218|     37|      Value |= (op & UINT64_C(15)) << 28;
10219|       |      // op: addr
10220|     37|      op = getAddrMode3OpValue(MI, 2, Fixups, STI);
10221|     37|      Value |= (op & UINT64_C(256)) << 15;
10222|     37|      Value |= (op & UINT64_C(8192)) << 9;
10223|     37|      Value |= (op & UINT64_C(7680)) << 7;
10224|     37|      Value |= (op & UINT64_C(240)) << 4;
10225|     37|      Value |= op & UINT64_C(15);
10226|       |      // op: Rt
10227|     37|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10228|     37|      Value |= (op & UINT64_C(15)) << 12;
10229|     37|      break;
10230|     13|    }
10231|      0|    case ARM::LDRHTr:
  ------------------
  |  Branch (10231:5): [True: 0, False: 29.4k]
  ------------------
10232|      0|    case ARM::LDRSBTr:
  ------------------
  |  Branch (10232:5): [True: 0, False: 29.4k]
  ------------------
10233|      0|    case ARM::LDRSHTr: {
  ------------------
  |  Branch (10233:5): [True: 0, False: 29.4k]
  ------------------
10234|       |      // op: p
10235|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10236|      0|      Value |= (op & UINT64_C(15)) << 28;
10237|       |      // op: addr
10238|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10239|      0|      Value |= (op & UINT64_C(15)) << 16;
10240|       |      // op: Rt
10241|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10242|      0|      Value |= (op & UINT64_C(15)) << 12;
10243|       |      // op: Rm
10244|      0|      op = getPostIdxRegOpValue(MI, 3, Fixups, STI);
10245|      0|      Value |= (op & UINT64_C(16)) << 19;
10246|      0|      Value |= op & UINT64_C(15);
10247|      0|      break;
10248|      0|    }
10249|      0|    case ARM::STRHTr: {
  ------------------
  |  Branch (10249:5): [True: 0, False: 29.4k]
  ------------------
10250|       |      // op: p
10251|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10252|      0|      Value |= (op & UINT64_C(15)) << 28;
10253|       |      // op: addr
10254|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10255|      0|      Value |= (op & UINT64_C(15)) << 16;
10256|       |      // op: Rt
10257|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10258|      0|      Value |= (op & UINT64_C(15)) << 12;
10259|       |      // op: Rm
10260|      0|      op = getPostIdxRegOpValue(MI, 3, Fixups, STI);
10261|      0|      Value |= (op & UINT64_C(16)) << 19;
10262|      0|      Value |= op & UINT64_C(15);
10263|      0|      break;
10264|      0|    }
10265|      0|    case ARM::ADCrsr:
  ------------------
  |  Branch (10265:5): [True: 0, False: 29.4k]
  ------------------
10266|      0|    case ARM::ADDrsr:
  ------------------
  |  Branch (10266:5): [True: 0, False: 29.4k]
  ------------------
10267|      3|    case ARM::ANDrsr:
  ------------------
  |  Branch (10267:5): [True: 3, False: 29.4k]
  ------------------
10268|      3|    case ARM::BICrsr:
  ------------------
  |  Branch (10268:5): [True: 0, False: 29.4k]
  ------------------
10269|      3|    case ARM::EORrsr:
  ------------------
  |  Branch (10269:5): [True: 0, False: 29.4k]
  ------------------
10270|      6|    case ARM::ORRrsr:
  ------------------
  |  Branch (10270:5): [True: 3, False: 29.4k]
  ------------------
10271|      9|    case ARM::RSBrsr:
  ------------------
  |  Branch (10271:5): [True: 3, False: 29.4k]
  ------------------
10272|     19|    case ARM::RSCrsr:
  ------------------
  |  Branch (10272:5): [True: 10, False: 29.4k]
  ------------------
10273|     19|    case ARM::SBCrsr:
  ------------------
  |  Branch (10273:5): [True: 0, False: 29.4k]
  ------------------
10274|     19|    case ARM::SUBrsr: {
  ------------------
  |  Branch (10274:5): [True: 0, False: 29.4k]
  ------------------
10275|       |      // op: p
10276|     19|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10277|     19|      Value |= (op & UINT64_C(15)) << 28;
10278|       |      // op: s
10279|     19|      op = getCCOutOpValue(MI, 7, Fixups, STI);
10280|     19|      Value |= (op & UINT64_C(1)) << 20;
10281|       |      // op: Rd
10282|     19|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10283|     19|      Value |= (op & UINT64_C(15)) << 12;
10284|       |      // op: Rn
10285|     19|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10286|     19|      Value |= (op & UINT64_C(15)) << 16;
10287|       |      // op: shift
10288|     19|      op = getSORegRegOpValue(MI, 2, Fixups, STI);
10289|     19|      Value |= op & UINT64_C(3840);
10290|     19|      Value |= op & UINT64_C(96);
10291|     19|      Value |= op & UINT64_C(15);
10292|     19|      break;
10293|     19|    }
10294|      0|    case ARM::LDRD_PRE: {
  ------------------
  |  Branch (10294:5): [True: 0, False: 29.4k]
  ------------------
10295|       |      // op: p
10296|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10297|      0|      Value |= (op & UINT64_C(15)) << 28;
10298|       |      // op: Rt
10299|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10300|      0|      Value |= (op & UINT64_C(15)) << 12;
10301|       |      // op: addr
10302|      0|      op = getAddrMode3OpValue(MI, 3, Fixups, STI);
10303|      0|      Value |= (op & UINT64_C(256)) << 15;
10304|      0|      Value |= (op & UINT64_C(8192)) << 9;
10305|      0|      Value |= (op & UINT64_C(7680)) << 7;
10306|      0|      Value |= (op & UINT64_C(240)) << 4;
10307|      0|      Value |= op & UINT64_C(15);
10308|      0|      break;
10309|     19|    }
10310|      0|    case ARM::MRC: {
  ------------------
  |  Branch (10310:5): [True: 0, False: 29.4k]
  ------------------
10311|       |      // op: p
10312|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10313|      0|      Value |= (op & UINT64_C(15)) << 28;
10314|       |      // op: Rt
10315|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10316|      0|      Value |= (op & UINT64_C(15)) << 12;
10317|       |      // op: cop
10318|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10319|      0|      Value |= (op & UINT64_C(15)) << 8;
10320|       |      // op: opc1
10321|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10322|      0|      Value |= (op & UINT64_C(7)) << 21;
10323|       |      // op: opc2
10324|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10325|      0|      Value |= (op & UINT64_C(7)) << 5;
10326|       |      // op: CRm
10327|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
10328|      0|      Value |= op & UINT64_C(15);
10329|       |      // op: CRn
10330|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10331|      0|      Value |= (op & UINT64_C(15)) << 16;
10332|      0|      break;
10333|     19|    }
10334|     11|    case ARM::LDRD_POST: {
  ------------------
  |  Branch (10334:5): [True: 11, False: 29.4k]
  ------------------
10335|       |      // op: p
10336|     11|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10337|     11|      Value |= (op & UINT64_C(15)) << 28;
10338|       |      // op: Rt
10339|     11|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10340|     11|      Value |= (op & UINT64_C(15)) << 12;
10341|       |      // op: offset
10342|     11|      op = getAddrMode3OffsetOpValue(MI, 4, Fixups, STI);
10343|     11|      Value |= (op & UINT64_C(256)) << 15;
10344|     11|      Value |= (op & UINT64_C(512)) << 13;
10345|     11|      Value |= (op & UINT64_C(240)) << 4;
10346|     11|      Value |= op & UINT64_C(15);
10347|       |      // op: addr
10348|     11|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10349|     11|      Value |= (op & UINT64_C(15)) << 16;
10350|     11|      break;
10351|     19|    }
10352|      0|    case ARM::STRD_PRE: {
  ------------------
  |  Branch (10352:5): [True: 0, False: 29.4k]
  ------------------
10353|       |      // op: p
10354|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10355|      0|      Value |= (op & UINT64_C(15)) << 28;
10356|       |      // op: Rt
10357|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10358|      0|      Value |= (op & UINT64_C(15)) << 12;
10359|       |      // op: addr
10360|      0|      op = getAddrMode3OpValue(MI, 3, Fixups, STI);
10361|      0|      Value |= (op & UINT64_C(256)) << 15;
10362|      0|      Value |= (op & UINT64_C(8192)) << 9;
10363|      0|      Value |= (op & UINT64_C(7680)) << 7;
10364|      0|      Value |= (op & UINT64_C(240)) << 4;
10365|      0|      Value |= op & UINT64_C(15);
10366|      0|      break;
10367|     19|    }
10368|      0|    case ARM::STRD_POST: {
  ------------------
  |  Branch (10368:5): [True: 0, False: 29.4k]
  ------------------
10369|       |      // op: p
10370|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10371|      0|      Value |= (op & UINT64_C(15)) << 28;
10372|       |      // op: Rt
10373|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10374|      0|      Value |= (op & UINT64_C(15)) << 12;
10375|       |      // op: offset
10376|      0|      op = getAddrMode3OffsetOpValue(MI, 4, Fixups, STI);
10377|      0|      Value |= (op & UINT64_C(256)) << 15;
10378|      0|      Value |= (op & UINT64_C(512)) << 13;
10379|      0|      Value |= (op & UINT64_C(240)) << 4;
10380|      0|      Value |= op & UINT64_C(15);
10381|       |      // op: addr
10382|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10383|      0|      Value |= (op & UINT64_C(15)) << 16;
10384|      0|      break;
10385|     19|    }
10386|      0|    case ARM::MCR: {
  ------------------
  |  Branch (10386:5): [True: 0, False: 29.4k]
  ------------------
10387|       |      // op: p
10388|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10389|      0|      Value |= (op & UINT64_C(15)) << 28;
10390|       |      // op: Rt
10391|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10392|      0|      Value |= (op & UINT64_C(15)) << 12;
10393|       |      // op: cop
10394|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10395|      0|      Value |= (op & UINT64_C(15)) << 8;
10396|       |      // op: opc1
10397|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10398|      0|      Value |= (op & UINT64_C(7)) << 21;
10399|       |      // op: opc2
10400|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10401|      0|      Value |= (op & UINT64_C(7)) << 5;
10402|       |      // op: CRm
10403|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
10404|      0|      Value |= op & UINT64_C(15);
10405|       |      // op: CRn
10406|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10407|      0|      Value |= (op & UINT64_C(15)) << 16;
10408|      0|      break;
10409|     19|    }
10410|      0|    case ARM::CDP: {
  ------------------
  |  Branch (10410:5): [True: 0, False: 29.4k]
  ------------------
10411|       |      // op: p
10412|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10413|      0|      Value |= (op & UINT64_C(15)) << 28;
10414|       |      // op: opc1
10415|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10416|      0|      Value |= (op & UINT64_C(15)) << 20;
10417|       |      // op: CRn
10418|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10419|      0|      Value |= (op & UINT64_C(15)) << 16;
10420|       |      // op: CRd
10421|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10422|      0|      Value |= (op & UINT64_C(15)) << 12;
10423|       |      // op: cop
10424|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10425|      0|      Value |= (op & UINT64_C(15)) << 8;
10426|       |      // op: opc2
10427|      0|      op = getMachineOpValue(MI, MI.getOperand(5), Fixups, STI);
10428|      0|      Value |= (op & UINT64_C(7)) << 5;
10429|       |      // op: CRm
10430|      0|      op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI);
10431|      0|      Value |= op & UINT64_C(15);
10432|      0|      break;
10433|     19|    }
10434|      0|    case ARM::SMLAL:
  ------------------
  |  Branch (10434:5): [True: 0, False: 29.4k]
  ------------------
10435|      0|    case ARM::UMLAL: {
  ------------------
  |  Branch (10435:5): [True: 0, False: 29.4k]
  ------------------
10436|       |      // op: p
10437|      0|      op = getMachineOpValue(MI, MI.getOperand(6), Fixups, STI);
10438|      0|      Value |= (op & UINT64_C(15)) << 28;
10439|       |      // op: s
10440|      0|      op = getCCOutOpValue(MI, 8, Fixups, STI);
10441|      0|      Value |= (op & UINT64_C(1)) << 20;
10442|       |      // op: RdLo
10443|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10444|      0|      Value |= (op & UINT64_C(15)) << 12;
10445|       |      // op: RdHi
10446|      0|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10447|      0|      Value |= (op & UINT64_C(15)) << 16;
10448|       |      // op: Rm
10449|      0|      op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI);
10450|      0|      Value |= (op & UINT64_C(15)) << 8;
10451|       |      // op: Rn
10452|      0|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10453|      0|      Value |= op & UINT64_C(15);
10454|      0|      break;
10455|      0|    }
10456|      0|    case ARM::tPUSH: {
  ------------------
  |  Branch (10456:5): [True: 0, False: 29.4k]
  ------------------
10457|       |      // op: regs
10458|      0|      op = getRegisterListOpValue(MI, 2, Fixups, STI);
10459|      0|      Value |= (op & UINT64_C(16384)) >> 6;
10460|      0|      Value |= op & UINT64_C(255);
10461|      0|      break;
10462|      0|    }
10463|      0|    case ARM::tPOP: {
  ------------------
  |  Branch (10463:5): [True: 0, False: 29.4k]
  ------------------
10464|       |      // op: regs
10465|      0|      op = getRegisterListOpValue(MI, 2, Fixups, STI);
10466|      0|      Value |= (op & UINT64_C(32768)) >> 7;
10467|      0|      Value |= op & UINT64_C(255);
10468|      0|      break;
10469|      0|    }
10470|     65|    case ARM::t2MOVr:
  ------------------
  |  Branch (10470:5): [True: 65, False: 29.4k]
  ------------------
10471|     87|    case ARM::t2MVNr:
  ------------------
  |  Branch (10471:5): [True: 22, False: 29.4k]
  ------------------
10472|    113|    case ARM::t2RRX: {
  ------------------
  |  Branch (10472:5): [True: 26, False: 29.4k]
  ------------------
10473|       |      // op: s
10474|    113|      op = getCCOutOpValue(MI, 4, Fixups, STI);
10475|    113|      Value |= (op & UINT64_C(1)) << 20;
10476|       |      // op: Rd
10477|    113|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10478|    113|      Value |= (op & UINT64_C(15)) << 8;
10479|       |      // op: Rm
10480|    113|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10481|    113|      Value |= op & UINT64_C(15);
10482|    113|      break;
10483|     87|    }
10484|     31|    case ARM::t2MOVi:
  ------------------
  |  Branch (10484:5): [True: 31, False: 29.4k]
  ------------------
10485|     71|    case ARM::t2MVNi: {
  ------------------
  |  Branch (10485:5): [True: 40, False: 29.4k]
  ------------------
10486|       |      // op: s
10487|     71|      op = getCCOutOpValue(MI, 4, Fixups, STI);
10488|     71|      Value |= (op & UINT64_C(1)) << 20;
10489|       |      // op: Rd
10490|     71|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10491|     71|      Value |= (op & UINT64_C(15)) << 8;
10492|       |      // op: imm
10493|     71|      op = getT2SOImmOpValue(MI, 1, Fixups, STI);
10494|     71|      Value |= (op & UINT64_C(2048)) << 15;
10495|     71|      Value |= (op & UINT64_C(1792)) << 4;
10496|     71|      Value |= op & UINT64_C(255);
10497|     71|      break;
10498|     31|    }
10499|     13|    case ARM::t2ASRri:
  ------------------
  |  Branch (10499:5): [True: 13, False: 29.4k]
  ------------------
10500|     56|    case ARM::t2LSLri:
  ------------------
  |  Branch (10500:5): [True: 43, False: 29.4k]
  ------------------
10501|    115|    case ARM::t2LSRri:
  ------------------
  |  Branch (10501:5): [True: 59, False: 29.4k]
  ------------------
10502|    125|    case ARM::t2RORri: {
  ------------------
  |  Branch (10502:5): [True: 10, False: 29.4k]
  ------------------
10503|       |      // op: s
10504|    125|      op = getCCOutOpValue(MI, 5, Fixups, STI);
10505|    125|      Value |= (op & UINT64_C(1)) << 20;
10506|       |      // op: Rd
10507|    125|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10508|    125|      Value |= (op & UINT64_C(15)) << 8;
10509|       |      // op: Rm
10510|    125|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10511|    125|      Value |= op & UINT64_C(15);
10512|       |      // op: imm
10513|    125|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10514|    125|      Value |= (op & UINT64_C(28)) << 10;
10515|    125|      Value |= (op & UINT64_C(3)) << 6;
10516|    125|      break;
10517|    115|    }
10518|      9|    case ARM::t2ADCrr:
  ------------------
  |  Branch (10518:5): [True: 9, False: 29.4k]
  ------------------
10519|     66|    case ARM::t2ADDrr:
  ------------------
  |  Branch (10519:5): [True: 57, False: 29.4k]
  ------------------
10520|    159|    case ARM::t2ANDrr:
  ------------------
  |  Branch (10520:5): [True: 93, False: 29.3k]
  ------------------
10521|    266|    case ARM::t2ASRrr:
  ------------------
  |  Branch (10521:5): [True: 107, False: 29.3k]
  ------------------
10522|    270|    case ARM::t2BICrr:
  ------------------
  |  Branch (10522:5): [True: 4, False: 29.4k]
  ------------------
10523|    273|    case ARM::t2EORrr:
  ------------------
  |  Branch (10523:5): [True: 3, False: 29.4k]
  ------------------
10524|    308|    case ARM::t2LSLrr:
  ------------------
  |  Branch (10524:5): [True: 35, False: 29.4k]
  ------------------
10525|    349|    case ARM::t2LSRrr:
  ------------------
  |  Branch (10525:5): [True: 41, False: 29.4k]
  ------------------
10526|    359|    case ARM::t2ORNrr:
  ------------------
  |  Branch (10526:5): [True: 10, False: 29.4k]
  ------------------
10527|    372|    case ARM::t2ORRrr:
  ------------------
  |  Branch (10527:5): [True: 13, False: 29.4k]
  ------------------
10528|    408|    case ARM::t2RORrr:
  ------------------
  |  Branch (10528:5): [True: 36, False: 29.4k]
  ------------------
10529|    418|    case ARM::t2RSBrr:
  ------------------
  |  Branch (10529:5): [True: 10, False: 29.4k]
  ------------------
10530|    426|    case ARM::t2SBCrr:
  ------------------
  |  Branch (10530:5): [True: 8, False: 29.4k]
  ------------------
10531|    435|    case ARM::t2SUBrr: {
  ------------------
  |  Branch (10531:5): [True: 9, False: 29.4k]
  ------------------
10532|       |      // op: s
10533|    435|      op = getCCOutOpValue(MI, 5, Fixups, STI);
10534|    435|      Value |= (op & UINT64_C(1)) << 20;
10535|       |      // op: Rd
10536|    435|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10537|    435|      Value |= (op & UINT64_C(15)) << 8;
10538|       |      // op: Rn
10539|    435|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10540|    435|      Value |= (op & UINT64_C(15)) << 16;
10541|       |      // op: Rm
10542|    435|      op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
10543|    435|      Value |= op & UINT64_C(15);
10544|    435|      break;
10545|    426|    }
10546|      3|    case ARM::t2ADCri:
  ------------------
  |  Branch (10546:5): [True: 3, False: 29.4k]
  ------------------
10547|    379|    case ARM::t2ADDri:
  ------------------
  |  Branch (10547:5): [True: 376, False: 29.1k]
  ------------------
10548|    401|    case ARM::t2ANDri:
  ------------------
  |  Branch (10548:5): [True: 22, False: 29.4k]
  ------------------
10549|    407|    case ARM::t2BICri:
  ------------------
  |  Branch (10549:5): [True: 6, False: 29.4k]
  ------------------
10550|    408|    case ARM::t2EORri:
  ------------------
  |  Branch (10550:5): [True: 1, False: 29.4k]
  ------------------
10551|    411|    case ARM::t2ORNri:
  ------------------
  |  Branch (10551:5): [True: 3, False: 29.4k]
  ------------------
10552|    421|    case ARM::t2ORRri:
  ------------------
  |  Branch (10552:5): [True: 10, False: 29.4k]
  ------------------
10553|    425|    case ARM::t2RSBri:
  ------------------
  |  Branch (10553:5): [True: 4, False: 29.4k]
  ------------------
10554|    431|    case ARM::t2SBCri:
  ------------------
  |  Branch (10554:5): [True: 6, False: 29.4k]
  ------------------
10555|    531|    case ARM::t2SUBri: {
  ------------------
  |  Branch (10555:5): [True: 100, False: 29.3k]
  ------------------
10556|       |      // op: s
10557|    531|      op = getCCOutOpValue(MI, 5, Fixups, STI);
10558|    531|      Value |= (op & UINT64_C(1)) << 20;
10559|       |      // op: Rd
10560|    531|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10561|    531|      Value |= (op & UINT64_C(15)) << 8;
10562|       |      // op: Rn
10563|    531|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10564|    531|      Value |= (op & UINT64_C(15)) << 16;
10565|       |      // op: imm
10566|    531|      op = getT2SOImmOpValue(MI, 2, Fixups, STI);
10567|    531|      Value |= (op & UINT64_C(2048)) << 15;
10568|    531|      Value |= (op & UINT64_C(1792)) << 4;
10569|    531|      Value |= op & UINT64_C(255);
10570|    531|      break;
10571|    431|    }
10572|      3|    case ARM::t2MVNs: {
  ------------------
  |  Branch (10572:5): [True: 3, False: 29.4k]
  ------------------
10573|       |      // op: s
10574|      3|      op = getCCOutOpValue(MI, 5, Fixups, STI);
10575|      3|      Value |= (op & UINT64_C(1)) << 20;
10576|       |      // op: Rd
10577|      3|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10578|      3|      Value |= (op & UINT64_C(15)) << 8;
10579|       |      // op: ShiftedRm
10580|      3|      op = getT2SORegOpValue(MI, 1, Fixups, STI);
10581|      3|      Value |= (op & UINT64_C(3584)) << 3;
10582|      3|      Value |= (op & UINT64_C(480)) >> 1;
10583|      3|      Value |= op & UINT64_C(15);
10584|      3|      break;
10585|    431|    }
10586|      0|    case ARM::t2ADCrs:
  ------------------
  |  Branch (10586:5): [True: 0, False: 29.4k]
  ------------------
10587|      6|    case ARM::t2ADDrs:
  ------------------
  |  Branch (10587:5): [True: 6, False: 29.4k]
  ------------------
10588|      9|    case ARM::t2ANDrs:
  ------------------
  |  Branch (10588:5): [True: 3, False: 29.4k]
  ------------------
10589|     10|    case ARM::t2BICrs:
  ------------------
  |  Branch (10589:5): [True: 1, False: 29.4k]
  ------------------
10590|     10|    case ARM::t2EORrs:
  ------------------
  |  Branch (10590:5): [True: 0, False: 29.4k]
  ------------------
10591|     20|    case ARM::t2ORNrs:
  ------------------
  |  Branch (10591:5): [True: 10, False: 29.4k]
  ------------------
10592|     26|    case ARM::t2ORRrs:
  ------------------
  |  Branch (10592:5): [True: 6, False: 29.4k]
  ------------------
10593|     32|    case ARM::t2RSBrs:
  ------------------
  |  Branch (10593:5): [True: 6, False: 29.4k]
  ------------------
10594|     35|    case ARM::t2SBCrs:
  ------------------
  |  Branch (10594:5): [True: 3, False: 29.4k]
  ------------------
10595|     50|    case ARM::t2SUBrs: {
  ------------------
  |  Branch (10595:5): [True: 15, False: 29.4k]
  ------------------
10596|       |      // op: s
10597|     50|      op = getCCOutOpValue(MI, 6, Fixups, STI);
10598|     50|      Value |= (op & UINT64_C(1)) << 20;
10599|       |      // op: Rd
10600|     50|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10601|     50|      Value |= (op & UINT64_C(15)) << 8;
10602|       |      // op: Rn
10603|     50|      op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
10604|     50|      Value |= (op & UINT64_C(15)) << 16;
10605|       |      // op: ShiftedRm
10606|     50|      op = getT2SORegOpValue(MI, 2, Fixups, STI);
10607|     50|      Value |= (op & UINT64_C(3584)) << 3;
10608|     50|      Value |= (op & UINT64_C(480)) >> 1;
10609|     50|      Value |= op & UINT64_C(15);
10610|     50|      break;
10611|     35|    }
10612|      0|    case ARM::PLDWrs:
  ------------------
  |  Branch (10612:5): [True: 0, False: 29.4k]
  ------------------
10613|      0|    case ARM::PLDrs:
  ------------------
  |  Branch (10613:5): [True: 0, False: 29.4k]
  ------------------
10614|      0|    case ARM::PLIrs: {
  ------------------
  |  Branch (10614:5): [True: 0, False: 29.4k]
  ------------------
10615|       |      // op: shift
10616|      0|      op = getLdStSORegOpValue(MI, 0, Fixups, STI);
10617|      0|      Value |= (op & UINT64_C(4096)) << 11;
10618|      0|      Value |= (op & UINT64_C(122880)) << 3;
10619|      0|      Value |= op & UINT64_C(4064);
10620|      0|      Value |= op & UINT64_C(15);
10621|      0|      break;
10622|      0|    }
10623|    416|    case ARM::BLXi: {
  ------------------
  |  Branch (10623:5): [True: 416, False: 29.0k]
  ------------------
10624|       |      // op: target
10625|    416|      op = getARMBLXTargetOpValue(MI, 0, Fixups, STI);
10626|    416|      Value |= (op & UINT64_C(1)) << 24;
10627|    416|      Value |= (op & UINT64_C(33554430)) >> 1;
10628|    416|      break;
10629|      0|    }
10630|  1.53k|    case ARM::tB: {
  ------------------
  |  Branch (10630:5): [True: 1.53k, False: 27.9k]
  ------------------
10631|       |      // op: target
10632|  1.53k|      op = getThumbBRTargetOpValue(MI, 0, Fixups, STI);
10633|  1.53k|      Value |= op & UINT64_C(2047);
10634|  1.53k|      break;
10635|      0|    }
10636|     26|    case ARM::tCBNZ:
  ------------------
  |  Branch (10636:5): [True: 26, False: 29.4k]
  ------------------
10637|     55|    case ARM::tCBZ: {
  ------------------
  |  Branch (10637:5): [True: 29, False: 29.4k]
  ------------------
10638|       |      // op: target
10639|     55|      op = getThumbCBTargetOpValue(MI, 1, Fixups, STI);
10640|     55|      Value |= (op & UINT64_C(32)) << 4;
10641|     55|      Value |= (op & UINT64_C(31)) << 3;
10642|       |      // op: Rn
10643|     55|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10644|     55|      Value |= op & UINT64_C(7);
10645|     55|      break;
10646|     26|    }
10647|    425|    case ARM::t2B: {
  ------------------
  |  Branch (10647:5): [True: 425, False: 29.0k]
  ------------------
10648|       |      // op: target
10649|    425|      op = getUnconditionalBranchTargetOpValue(MI, 0, Fixups, STI);
10650|    425|      Value |= (op & UINT64_C(8388608)) << 3;
10651|    425|      Value |= (op & UINT64_C(2095104)) << 5;
10652|    425|      Value |= (op & UINT64_C(4194304)) >> 9;
10653|    425|      Value |= (op & UINT64_C(2097152)) >> 10;
10654|    425|      Value |= op & UINT64_C(2047);
10655|    425|      break;
10656|     26|    }
10657|     27|    case ARM::BKPT:
  ------------------
  |  Branch (10657:5): [True: 27, False: 29.4k]
  ------------------
10658|     27|    case ARM::HLT: {
  ------------------
  |  Branch (10658:5): [True: 0, False: 29.4k]
  ------------------
10659|       |      // op: val
10660|     27|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10661|     27|      Value |= (op & UINT64_C(65520)) << 4;
10662|     27|      Value |= op & UINT64_C(15);
10663|     27|      break;
10664|     27|    }
10665|     20|    case ARM::tBKPT: {
  ------------------
  |  Branch (10665:5): [True: 20, False: 29.4k]
  ------------------
10666|       |      // op: val
10667|     20|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10668|     20|      Value |= op & UINT64_C(255);
10669|     20|      break;
10670|     27|    }
10671|      0|    case ARM::tHLT: {
  ------------------
  |  Branch (10671:5): [True: 0, False: 29.4k]
  ------------------
10672|       |      // op: val
10673|      0|      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
10674|      0|      Value |= op & UINT64_C(63);
10675|      0|      break;
10676|     27|    }
10677|      0|  default:
  ------------------
  |  Branch (10677:3): [True: 0, False: 29.4k]
  ------------------
10678|      0|    std::string msg;
10679|      0|    raw_string_ostream Msg(msg);
10680|      0|    Msg << "Not supported instr: " << MI;
10681|      0|    report_fatal_error(Msg.str());
10682|  29.4k|  }
10683|  29.4k|  return Value;
10684|  29.4k|}

ARMMCTargetDesc.cpp:_ZN7llvm_ksL21InitARMMCRegisterInfoEPNS_14MCRegisterInfoEjjjj:
 3195|  20.9k|static inline void InitARMMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
 3196|  20.9k|  RI->InitMCRegisterInfo(ARMRegDesc, 289, RA, PC, ARMMCRegisterClasses, 100, ARMRegUnitRoots, 77, ARMRegDiffLists, ARMLaneMaskLists, ARMRegStrings, ARMRegClassStrings, ARMSubRegIdxLists, 57,
 3197|  20.9k|ARMSubRegIdxRanges, ARMRegEncodingTable);
 3198|       |
 3199|  20.9k|  switch (DwarfFlavour) {
 3200|      0|  default:
  ------------------
  |  Branch (3200:3): [True: 0, False: 20.9k]
  ------------------
 3201|      0|    llvm_unreachable("Unknown DWARF flavour");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 3202|  20.9k|  case 0:
  ------------------
  |  Branch (3202:3): [True: 20.9k, False: 0]
  ------------------
 3203|  20.9k|    RI->mapDwarfRegsToLLVMRegs(ARMDwarfFlavour0Dwarf2L, ARMDwarfFlavour0Dwarf2LSize, false);
 3204|  20.9k|    break;
 3205|  20.9k|  }
 3206|  20.9k|  switch (EHFlavour) {
 3207|      0|  default:
  ------------------
  |  Branch (3207:3): [True: 0, False: 20.9k]
  ------------------
 3208|      0|    llvm_unreachable("Unknown DWARF flavour");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 3209|  20.9k|  case 0:
  ------------------
  |  Branch (3209:3): [True: 20.9k, False: 0]
  ------------------
 3210|  20.9k|    RI->mapDwarfRegsToLLVMRegs(ARMEHFlavour0Dwarf2L, ARMEHFlavour0Dwarf2LSize, true);
 3211|  20.9k|    break;
 3212|  20.9k|  }
 3213|  20.9k|  switch (DwarfFlavour) {
 3214|      0|  default:
  ------------------
  |  Branch (3214:3): [True: 0, False: 20.9k]
  ------------------
 3215|      0|    llvm_unreachable("Unknown DWARF flavour");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 3216|  20.9k|  case 0:
  ------------------
  |  Branch (3216:3): [True: 20.9k, False: 0]
  ------------------
 3217|  20.9k|    RI->mapLLVMRegsToDwarfRegs(ARMDwarfFlavour0L2Dwarf, ARMDwarfFlavour0L2DwarfSize, false);
 3218|  20.9k|    break;
 3219|  20.9k|  }
 3220|  20.9k|  switch (EHFlavour) {
 3221|      0|  default:
  ------------------
  |  Branch (3221:3): [True: 0, False: 20.9k]
  ------------------
 3222|      0|    llvm_unreachable("Unknown DWARF flavour");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 3223|  20.9k|  case 0:
  ------------------
  |  Branch (3223:3): [True: 20.9k, False: 0]
  ------------------
 3224|  20.9k|    RI->mapLLVMRegsToDwarfRegs(ARMEHFlavour0L2Dwarf, ARMEHFlavour0L2DwarfSize, true);
 3225|  20.9k|    break;
 3226|  20.9k|  }
 3227|  20.9k|}

ARMMCTargetDesc.cpp:_ZN7llvm_ksL28createARMMCSubtargetInfoImplERKNS_6TripleENS_9StringRefES3_:
  339|  41.9k|static inline MCSubtargetInfo *createARMMCSubtargetInfoImpl(const Triple &TT, StringRef CPU, StringRef FS) {
  340|       |  return new MCSubtargetInfo(TT, CPU, FS, ARMFeatureKV, ARMSubTypeKV, NULL);
  341|  41.9k|}

LLVMInitializeARMAsmParser:
10210|      1|extern "C" void LLVMInitializeARMAsmParser() {
10211|      1|  RegisterMCAsmParser<ARMAsmParser> X(TheARMLETarget);
10212|      1|  RegisterMCAsmParser<ARMAsmParser> Y(TheARMBETarget);
10213|      1|  RegisterMCAsmParser<ARMAsmParser> A(TheThumbLETarget);
10214|      1|  RegisterMCAsmParser<ARMAsmParser> B(TheThumbBETarget);
10215|      1|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParserC2ERKN7llvm_ks15MCSubtargetInfoERNS1_11MCAsmParserERKNS1_11MCInstrInfoERKNS1_15MCTargetOptionsE:
  364|  20.9k|    : MCTargetAsmParser(Options, STI), MII(MII), UC(Parser) {
  365|  20.9k|    MCAsmParserExtension::Initialize(Parser);
  366|       |
  367|  20.9k|    MCStreamer &S = getParser().getStreamer();
  368|  20.9k|    if (S.getTargetStreamer() == nullptr)
  ------------------
  |  Branch (368:9): [True: 20.9k, False: 0]
  ------------------
  369|  20.9k|      new ARMTargetStreamer(S);
  370|       |
  371|       |    // Cache the MCRegisterInfo.
  372|  20.9k|    MRI = getContext().getRegisterInfo();
  373|       |
  374|       |    // Initialize the set of available features.
  375|  20.9k|    setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
  376|       |
  377|       |    // Not in an ITBlock to start with.
  378|  20.9k|    ITState.CurPosition = ~0U;
  379|       |
  380|  20.9k|    NextSymbolIsThumb = false;
  381|  20.9k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContextC2ERN7llvm_ks11MCAsmParserE:
   73|  20.9k|  UnwindContext(MCAsmParser &P) : Parser(P), FPReg(ARM::SP) {}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser13ParseRegisterERjRN7llvm_ks5SMLocES4_S1_:
 2967|      3|                                 SMLoc &StartLoc, SMLoc &EndLoc, unsigned int &ErrorCode) {
 2968|      3|  const AsmToken &Tok = getParser().getTok();
 2969|      3|  StartLoc = Tok.getLoc();
 2970|      3|  EndLoc = Tok.getEndLoc();
 2971|      3|  RegNo = tryParseRegister();
 2972|       |
 2973|      3|  return (RegNo == (unsigned)-1);
 2974|      3|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser16tryParseRegisterEv:
 2980|  77.2k|int ARMAsmParser::tryParseRegister() {
 2981|  77.2k|  MCAsmParser &Parser = getParser();
 2982|  77.2k|  const AsmToken &Tok = Parser.getTok();
 2983|  77.2k|  if (Tok.isNot(AsmToken::Identifier)) return -1;
  ------------------
  |  Branch (2983:7): [True: 768, False: 76.5k]
  ------------------
 2984|       |
 2985|  76.5k|  std::string lowerCase = Tok.getString().lower();
 2986|  76.5k|  unsigned RegNum = MatchRegisterName(lowerCase);
 2987|  76.5k|  if (!RegNum) {
  ------------------
  |  Branch (2987:7): [True: 63.2k, False: 13.3k]
  ------------------
 2988|  63.2k|    RegNum = StringSwitch<unsigned>(lowerCase)
 2989|  63.2k|      .Case("r13", ARM::SP)
 2990|  63.2k|      .Case("r14", ARM::LR)
 2991|  63.2k|      .Case("r15", ARM::PC)
 2992|  63.2k|      .Case("ip", ARM::R12)
 2993|       |      // Additional register name aliases for 'gas' compatibility.
 2994|  63.2k|      .Case("a1", ARM::R0)
 2995|  63.2k|      .Case("a2", ARM::R1)
 2996|  63.2k|      .Case("a3", ARM::R2)
 2997|  63.2k|      .Case("a4", ARM::R3)
 2998|  63.2k|      .Case("v1", ARM::R4)
 2999|  63.2k|      .Case("v2", ARM::R5)
 3000|  63.2k|      .Case("v3", ARM::R6)
 3001|  63.2k|      .Case("v4", ARM::R7)
 3002|  63.2k|      .Case("v5", ARM::R8)
 3003|  63.2k|      .Case("v6", ARM::R9)
 3004|  63.2k|      .Case("v7", ARM::R10)
 3005|  63.2k|      .Case("v8", ARM::R11)
 3006|  63.2k|      .Case("sb", ARM::R9)
 3007|  63.2k|      .Case("sl", ARM::R10)
 3008|  63.2k|      .Case("fp", ARM::R11)
 3009|  63.2k|      .Default(0);
 3010|  63.2k|  }
 3011|  76.5k|  if (!RegNum) {
  ------------------
  |  Branch (3011:7): [True: 43.4k, False: 33.0k]
  ------------------
 3012|       |    // Check for aliases registered via .req. Canonicalize to lower case.
 3013|       |    // That's more consistent since register names are case insensitive, and
 3014|       |    // it's how the original entry was passed in from MC/MCParser/AsmParser.
 3015|  43.4k|    StringMap<unsigned>::const_iterator Entry = RegisterReqs.find(lowerCase);
 3016|       |    // If no match, return failure.
 3017|  43.4k|    if (Entry == RegisterReqs.end())
  ------------------
  |  Branch (3017:9): [True: 43.4k, False: 0]
  ------------------
 3018|  43.4k|      return -1;
 3019|      0|    Parser.Lex(); // Eat identifier token.
 3020|      0|    return Entry->getValue();
 3021|  43.4k|  }
 3022|       |
 3023|       |  // Some FPUs only have 16 D registers, so D16-D31 are invalid
 3024|  33.0k|  if (hasD16() && RegNum >= ARM::D16 && RegNum <= ARM::D31)
  ------------------
  |  Branch (3024:7): [True: 246, False: 32.7k]
  |  Branch (3024:19): [True: 235, False: 11]
  |  Branch (3024:41): [True: 3, False: 232]
  ------------------
 3025|      3|    return -1;
 3026|       |
 3027|  33.0k|  Parser.Lex(); // Eat identifier token.
 3028|       |
 3029|  33.0k|  return RegNum;
 3030|  33.0k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser6hasD16Ev:
  288|  33.0k|  bool hasD16() const {
  289|  33.0k|    return getSTI().getFeatureBits()[ARM::FeatureD16];
  290|  33.0k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser16ParseInstructionERN7llvm_ks20ParseInstructionInfoENS1_9StringRefENS1_5SMLocERNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS7_14default_deleteIS9_EEEEEERj:
 5867|  51.4k|{
 5868|  51.4k|  MCAsmParser &Parser = getParser();
 5869|       |  // FIXME: Can this be done via tablegen in some fashion?
 5870|  51.4k|  bool RequireVFPRegisterListCheck;
 5871|  51.4k|  bool AcceptSinglePrecisionOnly;
 5872|  51.4k|  bool AcceptDoublePrecisionOnly;
 5873|  51.4k|  RequireVFPRegisterListCheck =
 5874|  51.4k|    RequiresVFPRegListValidation(Name, AcceptSinglePrecisionOnly,
 5875|  51.4k|                                 AcceptDoublePrecisionOnly);
 5876|       |
 5877|       |  // Apply mnemonic aliases before doing anything else, as the destination
 5878|       |  // mnemonic may include suffices and we want to handle them normally.
 5879|       |  // The generic tblgen'erated code does this later, at the start of
 5880|       |  // MatchInstructionImpl(), but that's too late for aliases that include
 5881|       |  // any sort of suffix.
 5882|  51.4k|  uint64_t AvailableFeatures = getAvailableFeatures();
 5883|  51.4k|  unsigned AssemblerDialect = getParser().getAssemblerDialect();
 5884|  51.4k|  applyMnemonicAliases(Name, AvailableFeatures, AssemblerDialect);
 5885|       |
 5886|       |  // First check for the ARM-specific .req directive.
 5887|  51.4k|  if (Parser.getTok().is(AsmToken::Identifier) &&
  ------------------
  |  Branch (5887:7): [True: 30.6k, False: 20.8k]
  |  Branch (5887:7): [True: 3, False: 51.4k]
  ------------------
 5888|  30.6k|      Parser.getTok().getIdentifier() == ".req") {
  ------------------
  |  Branch (5888:7): [True: 3, False: 30.6k]
  ------------------
 5889|      3|    parseDirectiveReq(Name, NameLoc);
 5890|       |    // We always return 'error' for this, as we're done with this
 5891|       |    // statement and don't need to match the 'instruction."
 5892|      3|    ErrorCode = KS_ERR_ASM_DIRECTIVE_INVALID;
 5893|      3|    return true;
 5894|      3|  }
 5895|       |
 5896|       |  // Create the leading tokens for the mnemonic, split by '.' characters.
 5897|  51.4k|  size_t Start = 0, Next = Name.find('.');
 5898|  51.4k|  StringRef Mnemonic = Name.slice(Start, Next);
 5899|       |
 5900|       |  // Split out the predication code and carry setting flag from the mnemonic.
 5901|  51.4k|  unsigned PredicationCode;
 5902|  51.4k|  unsigned ProcessorIMod;
 5903|  51.4k|  bool CarrySetting;
 5904|  51.4k|  StringRef ITMask;
 5905|  51.4k|  Mnemonic = splitMnemonic(Mnemonic, PredicationCode, CarrySetting,
 5906|  51.4k|                           ProcessorIMod, ITMask);
 5907|       |
 5908|       |  // In Thumb1, only the branch (B) instruction can be predicated.
 5909|  51.4k|  if (isThumbOne() && PredicationCode != ARMCC::AL && Mnemonic != "b") {
  ------------------
  |  Branch (5909:7): [True: 1.15k, False: 50.2k]
  |  Branch (5909:7): [True: 6, False: 51.4k]
  |  Branch (5909:23): [True: 184, False: 975]
  |  Branch (5909:55): [True: 6, False: 178]
  ------------------
 5910|      6|    Parser.eatToEndOfStatement();
 5911|       |    //return Error(NameLoc, "conditional execution not supported in Thumb1");
 5912|      6|    ErrorCode = KS_ERR_ASM_MNEMONICFAIL;
 5913|      6|    return true;
 5914|      6|  }
 5915|       |
 5916|  51.4k|  Operands.push_back(ARMOperand::CreateToken(Mnemonic, NameLoc));
 5917|       |
 5918|       |  // Handle the IT instruction ITMask. Convert it to a bitmask. This
 5919|       |  // is the mask as it will be for the IT encoding if the conditional
 5920|       |  // encoding has a '1' as it's bit0 (i.e. 't' ==> '1'). In the case
 5921|       |  // where the conditional bit0 is zero, the instruction post-processing
 5922|       |  // will adjust the mask accordingly.
 5923|  51.4k|  if (Mnemonic == "it") {
  ------------------
  |  Branch (5923:7): [True: 596, False: 50.8k]
  ------------------
 5924|    596|    SMLoc Loc = SMLoc::getFromPointer(NameLoc.getPointer() + 2);
 5925|    596|    if (ITMask.size() > 3) {
  ------------------
  |  Branch (5925:9): [True: 2, False: 594]
  ------------------
 5926|      2|      Parser.eatToEndOfStatement();
 5927|       |      //return Error(Loc, "too many conditions on IT instruction");
 5928|      2|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 5929|      2|      return true;
 5930|      2|    }
 5931|    594|    unsigned Mask = 8;
 5932|    867|    for (unsigned i = ITMask.size(); i != 0; --i) {
  ------------------
  |  Branch (5932:38): [True: 286, False: 581]
  ------------------
 5933|    286|      char pos = ITMask[i - 1];
 5934|    286|      if (pos != 't' && pos != 'e') {
  ------------------
  |  Branch (5934:11): [True: 23, False: 263]
  |  Branch (5934:25): [True: 13, False: 10]
  ------------------
 5935|     13|        Parser.eatToEndOfStatement();
 5936|       |        //return Error(Loc, "illegal IT block condition mask '" + ITMask + "'");
 5937|     13|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 5938|     13|        return true;
 5939|     13|      }
 5940|    273|      Mask >>= 1;
 5941|    273|      if (ITMask[i - 1] == 't')
  ------------------
  |  Branch (5941:11): [True: 263, False: 10]
  ------------------
 5942|    263|        Mask |= 8;
 5943|    273|    }
 5944|    581|    Operands.push_back(ARMOperand::CreateITMask(Mask, Loc));
 5945|    581|  }
 5946|       |
 5947|       |  // FIXME: This is all a pretty gross hack. We should automatically handle
 5948|       |  // optional operands like this via tblgen.
 5949|       |
 5950|       |  // Next, add the CCOut and ConditionCode operands, if needed.
 5951|       |  //
 5952|       |  // For mnemonics which can ever incorporate a carry setting bit or predication
 5953|       |  // code, our matching model involves us always generating CCOut and
 5954|       |  // ConditionCode operands to match the mnemonic "as written" and then we let
 5955|       |  // the matcher deal with finding the right instruction or generating an
 5956|       |  // appropriate error.
 5957|  51.4k|  bool CanAcceptCarrySet, CanAcceptPredicationCode;
 5958|  51.4k|  getMnemonicAcceptInfo(Mnemonic, Name, CanAcceptCarrySet, CanAcceptPredicationCode);
 5959|       |
 5960|       |  // If we had a carry-set on an instruction that can't do that, issue an
 5961|       |  // error.
 5962|  51.4k|  if (!CanAcceptCarrySet && CarrySetting) {
  ------------------
  |  Branch (5962:7): [True: 41.3k, False: 10.0k]
  |  Branch (5962:29): [True: 202, False: 41.1k]
  ------------------
 5963|    202|    Parser.eatToEndOfStatement();
 5964|       |    //return Error(NameLoc, "instruction '" + Mnemonic +
 5965|       |    //             "' can not set flags, but 's' suffix specified");
 5966|    202|    ErrorCode = KS_ERR_ASM_MNEMONICFAIL;
 5967|    202|    return true;
 5968|    202|  }
 5969|       |  // If we had a predication code on an instruction that can't do that, issue an
 5970|       |  // error.
 5971|  51.2k|  if (!CanAcceptPredicationCode && PredicationCode != ARMCC::AL) {
  ------------------
  |  Branch (5971:7): [True: 3.86k, False: 47.3k]
  |  Branch (5971:36): [True: 3, False: 3.86k]
  ------------------
 5972|      3|    Parser.eatToEndOfStatement();
 5973|       |    //return Error(NameLoc, "instruction '" + Mnemonic +
 5974|       |    //             "' is not predicable, but condition code specified");
 5975|      3|    ErrorCode = KS_ERR_ASM_MNEMONICFAIL;
 5976|      3|    return true;
 5977|      3|  }
 5978|       |
 5979|       |  // Add the carry setting operand, if necessary.
 5980|  51.2k|  if (CanAcceptCarrySet) {
  ------------------
  |  Branch (5980:7): [True: 10.0k, False: 41.1k]
  ------------------
 5981|  10.0k|    SMLoc Loc = SMLoc::getFromPointer(NameLoc.getPointer() + Mnemonic.size());
 5982|  10.0k|    Operands.push_back(ARMOperand::CreateCCOut(CarrySetting ? ARM::CPSR : 0,
  ------------------
  |  Branch (5982:48): [True: 3.64k, False: 6.42k]
  ------------------
 5983|  10.0k|                                               Loc));
 5984|  10.0k|  }
 5985|       |
 5986|       |  // Add the predication code operand, if necessary.
 5987|  51.2k|  if (CanAcceptPredicationCode) {
  ------------------
  |  Branch (5987:7): [True: 47.3k, False: 3.86k]
  ------------------
 5988|  47.3k|    SMLoc Loc = SMLoc::getFromPointer(NameLoc.getPointer() + Mnemonic.size() +
 5989|  47.3k|                                      CarrySetting);
 5990|  47.3k|    Operands.push_back(ARMOperand::CreateCondCode(
 5991|  47.3k|                         ARMCC::CondCodes(PredicationCode), Loc));
 5992|  47.3k|  }
 5993|       |
 5994|       |  // Add the processor imod operand, if necessary.
 5995|  51.2k|  if (ProcessorIMod) {
  ------------------
  |  Branch (5995:7): [True: 119, False: 51.1k]
  ------------------
 5996|    119|    Operands.push_back(ARMOperand::CreateImm(
 5997|    119|          MCConstantExpr::create(ProcessorIMod, getContext()),
 5998|    119|                                 NameLoc, NameLoc));
 5999|  51.1k|  } else if (Mnemonic == "cps" && isMClass()) {
  ------------------
  |  Branch (5999:14): [True: 149, False: 50.9k]
  |  Branch (5999:14): [True: 1, False: 51.1k]
  |  Branch (5999:35): [True: 1, False: 148]
  ------------------
 6000|       |    //return Error(NameLoc, "instruction 'cps' requires effect for M-class");
 6001|      1|    ErrorCode = KS_ERR_ASM_MNEMONICFAIL;
 6002|      1|    return true;
 6003|      1|  }
 6004|       |
 6005|       |  // Add the remaining tokens in the mnemonic.
 6006|  69.0k|  while (Next != StringRef::npos) {
  ------------------
  |  Branch (6006:10): [True: 17.8k, False: 51.2k]
  ------------------
 6007|  17.8k|    Start = Next;
 6008|  17.8k|    Next = Name.find('.', Start + 1);
 6009|  17.8k|    StringRef ExtraToken = Name.slice(Start, Next);
 6010|       |
 6011|       |    // Some NEON instructions have an optional datatype suffix that is
 6012|       |    // completely ignored. Check for that.
 6013|  17.8k|    if (isDataTypeToken(ExtraToken) &&
  ------------------
  |  Branch (6013:9): [True: 3.94k, False: 13.8k]
  ------------------
 6014|  3.94k|        doesIgnoreDataTypeSuffix(Mnemonic, ExtraToken))
  ------------------
  |  Branch (6014:9): [True: 46, False: 3.89k]
  ------------------
 6015|     46|      continue;
 6016|       |
 6017|       |    // For for ARM mode generate an error if the .n qualifier is used.
 6018|  17.7k|    if (ExtraToken == ".n" && !isThumb()) {
  ------------------
  |  Branch (6018:9): [True: 21, False: 17.7k]
  |  Branch (6018:9): [True: 3, False: 17.7k]
  |  Branch (6018:31): [True: 3, False: 18]
  ------------------
 6019|       |      //SMLoc Loc = SMLoc::getFromPointer(NameLoc.getPointer() + Start);
 6020|      3|      Parser.eatToEndOfStatement();
 6021|       |      //return Error(Loc, "instruction with .n (narrow) qualifier not allowed in "
 6022|       |      //             "arm mode");
 6023|      3|      ErrorCode = KS_ERR_ASM_MNEMONICFAIL;
 6024|      3|      return true;
 6025|      3|    }
 6026|       |
 6027|       |    // The .n qualifier is always discarded as that is what the tables
 6028|       |    // and matcher expect.  In ARM mode the .w qualifier has no effect,
 6029|       |    // so discard it to avoid errors that can be caused by the matcher.
 6030|  17.7k|    if (ExtraToken != ".n" && (isThumb() || ExtraToken != ".w")) {
  ------------------
  |  Branch (6030:9): [True: 17.7k, False: 18]
  |  Branch (6030:9): [True: 17.6k, False: 155]
  |  Branch (6030:32): [True: 744, False: 17.0k]
  |  Branch (6030:45): [True: 16.8k, False: 137]
  ------------------
 6031|  17.6k|      SMLoc Loc = SMLoc::getFromPointer(NameLoc.getPointer() + Start);
 6032|  17.6k|      Operands.push_back(ARMOperand::CreateToken(ExtraToken, Loc));
 6033|  17.6k|    }
 6034|  17.7k|  }
 6035|       |
 6036|       |  // Read the remaining operands.
 6037|  51.2k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (6037:7): [True: 47.2k, False: 4.02k]
  ------------------
 6038|       |    // Read the first operand.
 6039|  47.2k|    if (parseOperand(Operands, Mnemonic, ErrorCode)) {
  ------------------
  |  Branch (6039:9): [True: 11.8k, False: 35.3k]
  ------------------
 6040|  11.8k|      Parser.eatToEndOfStatement();
 6041|  11.8k|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 6042|  11.8k|      return true;
 6043|  11.8k|    }
 6044|       |
 6045|  90.1k|    while (getLexer().is(AsmToken::Comma)) {
  ------------------
  |  Branch (6045:12): [True: 57.3k, False: 32.8k]
  ------------------
 6046|  57.3k|      Parser.Lex();  // Eat the comma.
 6047|       |
 6048|       |      // Parse and remember the operand.
 6049|  57.3k|      if (parseOperand(Operands, Mnemonic, ErrorCode)) {
  ------------------
  |  Branch (6049:11): [True: 2.50k, False: 54.8k]
  ------------------
 6050|  2.50k|        Parser.eatToEndOfStatement();
 6051|  2.50k|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 6052|  2.50k|        return true;
 6053|  2.50k|      }
 6054|  57.3k|    }
 6055|  35.3k|  }
 6056|       |
 6057|  36.8k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (6057:7): [True: 1.15k, False: 35.6k]
  ------------------
 6058|       |    //SMLoc Loc = getLexer().getLoc();
 6059|  1.15k|    Parser.eatToEndOfStatement();
 6060|       |    //return Error(Loc, "unexpected token in argument list");
 6061|  1.15k|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 6062|  1.15k|    return true;
 6063|  1.15k|  }
 6064|       |
 6065|  35.6k|  Parser.Lex(); // Consume the EndOfStatement
 6066|       |
 6067|  35.6k|  if (RequireVFPRegisterListCheck) {
  ------------------
  |  Branch (6067:7): [True: 28, False: 35.6k]
  ------------------
 6068|     28|    ARMOperand &Op = static_cast<ARMOperand &>(*Operands.back());
 6069|     28|    if (AcceptSinglePrecisionOnly && !Op.isSPRRegList()) {
  ------------------
  |  Branch (6069:9): [True: 7, False: 21]
  |  Branch (6069:38): [True: 7, False: 0]
  ------------------
 6070|       |      //return Error(Op.getStartLoc(),
 6071|       |      //             "VFP/Neon single precision register expected");
 6072|      7|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 6073|      7|      return true;
 6074|      7|    }
 6075|     21|    if (AcceptDoublePrecisionOnly && !Op.isDPRRegList()) {
  ------------------
  |  Branch (6075:9): [True: 12, False: 9]
  |  Branch (6075:38): [True: 12, False: 0]
  ------------------
 6076|       |      //return Error(Op.getStartLoc(),
 6077|       |      //             "VFP/Neon double precision register expected");
 6078|     12|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 6079|     12|      return true;
 6080|     12|    }
 6081|     21|  }
 6082|       |
 6083|  35.6k|  tryConvertingToTwoOperandForm(Mnemonic, CarrySetting, Operands);
 6084|       |
 6085|       |  // Some instructions, mostly Thumb, have forms for the same mnemonic that
 6086|       |  // do and don't have a cc_out optional-def operand. With some spot-checks
 6087|       |  // of the operand list, we can figure out which variant we're trying to
 6088|       |  // parse and adjust accordingly before actually matching. We shouldn't ever
 6089|       |  // try to remove a cc_out operand that was explicitly set on the
 6090|       |  // mnemonic, of course (CarrySetting == true). Reason number #317 the
 6091|       |  // table driven matcher doesn't fit well with the ARM instruction set.
 6092|  35.6k|  if (!CarrySetting && shouldOmitCCOutOperand(Mnemonic, Operands))
  ------------------
  |  Branch (6092:7): [True: 32.0k, False: 3.58k]
  |  Branch (6092:24): [True: 1.26k, False: 30.8k]
  ------------------
 6093|  1.26k|    Operands.erase(Operands.begin() + 1);
 6094|       |
 6095|       |  // Some instructions have the same mnemonic, but don't always
 6096|       |  // have a predicate. Distinguish them here and delete the
 6097|       |  // predicate if needed.
 6098|  35.6k|  if (shouldOmitPredicateOperand(Mnemonic, Operands))
  ------------------
  |  Branch (6098:7): [True: 0, False: 35.6k]
  ------------------
 6099|      0|    Operands.erase(Operands.begin() + 1);
 6100|       |
 6101|       |  // ARM mode 'blx' need special handling, as the register operand version
 6102|       |  // is predicable, but the label operand version is not. So, we can't rely
 6103|       |  // on the Mnemonic based checking to correctly figure out when to put
 6104|       |  // a k_CondCode operand in the list. If we're trying to match the label
 6105|       |  // version, remove the k_CondCode operand here.
 6106|  35.6k|  if (!isThumb() && Mnemonic == "blx" && Operands.size() == 3 &&
  ------------------
  |  Branch (6106:7): [True: 24.8k, False: 10.8k]
  |  Branch (6106:7): [True: 416, False: 35.2k]
  |  Branch (6106:21): [True: 444, False: 24.4k]
  |  Branch (6106:42): [True: 440, False: 4]
  ------------------
 6107|    440|      static_cast<ARMOperand &>(*Operands[2]).isImm())
  ------------------
  |  Branch (6107:7): [True: 416, False: 24]
  ------------------
 6108|    416|    Operands.erase(Operands.begin() + 1);
 6109|       |
 6110|       |  // Adjust operands of ldrexd/strexd to MCK_GPRPair.
 6111|       |  // ldrexd/strexd require even/odd GPR pair. To enforce this constraint,
 6112|       |  // a single GPRPair reg operand is used in the .td file to replace the two
 6113|       |  // GPRs. However, when parsing from asm, the two GRPs cannot be automatically
 6114|       |  // expressed as a GPRPair, so we have to manually merge them.
 6115|       |  // FIXME: We would really like to be able to tablegen'erate this.
 6116|  35.6k|  if (!isThumb() && Operands.size() > 4 &&
  ------------------
  |  Branch (6116:7): [True: 24.8k, False: 10.8k]
  |  Branch (6116:7): [True: 10, False: 35.6k]
  |  Branch (6116:21): [True: 8.00k, False: 16.8k]
  ------------------
 6117|  8.00k|      (Mnemonic == "ldrexd" || Mnemonic == "strexd" || Mnemonic == "ldaexd" ||
  ------------------
  |  Branch (6117:8): [True: 1, False: 8.00k]
  |  Branch (6117:32): [True: 1, False: 8.00k]
  |  Branch (6117:56): [True: 0, False: 8.00k]
  ------------------
 6118|  8.00k|       Mnemonic == "stlexd")) {
  ------------------
  |  Branch (6118:8): [True: 8, False: 7.99k]
  ------------------
 6119|     10|    bool isLoad = (Mnemonic == "ldrexd" || Mnemonic == "ldaexd");
  ------------------
  |  Branch (6119:20): [True: 1, False: 9]
  |  Branch (6119:44): [True: 0, False: 9]
  ------------------
 6120|     10|    unsigned Idx = isLoad ? 2 : 3;
  ------------------
  |  Branch (6120:20): [True: 1, False: 9]
  ------------------
 6121|     10|    ARMOperand &Op1 = static_cast<ARMOperand &>(*Operands[Idx]);
 6122|     10|    ARMOperand &Op2 = static_cast<ARMOperand &>(*Operands[Idx + 1]);
 6123|       |
 6124|     10|    const MCRegisterClass& MRC = MRI->getRegClass(ARM::GPRRegClassID);
 6125|       |    // Adjust only if Op1 and Op2 are GPRs.
 6126|     10|    if (Op1.isReg() && Op2.isReg() && MRC.contains(Op1.getReg()) &&
  ------------------
  |  Branch (6126:9): [True: 7, False: 3]
  |  Branch (6126:24): [True: 6, False: 1]
  |  Branch (6126:39): [True: 4, False: 2]
  ------------------
 6127|      4|        MRC.contains(Op2.getReg())) {
  ------------------
  |  Branch (6127:9): [True: 2, False: 2]
  ------------------
 6128|      2|      unsigned Reg1 = Op1.getReg();
 6129|      2|      unsigned Reg2 = Op2.getReg();
 6130|      2|      unsigned Rt = MRI->getEncodingValue(Reg1);
 6131|      2|      unsigned Rt2 = MRI->getEncodingValue(Reg2);
 6132|       |
 6133|       |      // Rt2 must be Rt + 1 and Rt must be even.
 6134|      2|      if (Rt + 1 != Rt2 || (Rt & 1)) {
  ------------------
  |  Branch (6134:11): [True: 1, False: 1]
  |  Branch (6134:28): [True: 0, False: 1]
  ------------------
 6135|       |        //Error(Op2.getStartLoc(), isLoad
 6136|       |        //                             ? "destination operands must be sequential"
 6137|       |        //                             : "source operands must be sequential");
 6138|      1|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 6139|      1|        return true;
 6140|      1|      }
 6141|      1|      unsigned NewReg = MRI->getMatchingSuperReg(Reg1, ARM::gsub_0,
 6142|      1|          &(MRI->getRegClass(ARM::GPRPairRegClassID)));
 6143|      1|      Operands[Idx] =
 6144|      1|          ARMOperand::CreateReg(NewReg, Op1.getStartLoc(), Op2.getEndLoc());
 6145|      1|      Operands.erase(Operands.begin() + Idx + 1);
 6146|      1|    }
 6147|     10|  }
 6148|       |
 6149|       |  // GNU Assembler extension (compatibility)
 6150|  35.6k|  if ((Mnemonic == "ldrd" || Mnemonic == "strd")) {
  ------------------
  |  Branch (6150:7): [True: 96, False: 35.5k]
  |  Branch (6150:8): [True: 55, False: 35.6k]
  |  Branch (6150:30): [True: 41, False: 35.5k]
  ------------------
 6151|     96|    if (Operands.size() < 4) {
  ------------------
  |  Branch (6151:9): [True: 2, False: 94]
  ------------------
 6152|      2|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 6153|      2|        return true;
 6154|      2|    }
 6155|     94|    ARMOperand &Op2 = static_cast<ARMOperand &>(*Operands[2]);
 6156|     94|    ARMOperand &Op3 = static_cast<ARMOperand &>(*Operands[3]);
 6157|     94|    if (Op3.isMem()) {
  ------------------
  |  Branch (6157:9): [True: 27, False: 67]
  ------------------
 6158|     27|      assert(Op2.isReg() && "expected register argument");
  ------------------
  |  Branch (6158:7): [True: 27, False: 0]
  |  Branch (6158:7): [True: 27, Folded]
  |  Branch (6158:7): [True: 27, False: 0]
  ------------------
 6159|       |
 6160|     27|      unsigned SuperReg = MRI->getMatchingSuperReg(
 6161|     27|          Op2.getReg(), ARM::gsub_0, &MRI->getRegClass(ARM::GPRPairRegClassID));
 6162|       |
 6163|     27|      assert(SuperReg && "expected register pair");
  ------------------
  |  Branch (6163:7): [True: 27, False: 0]
  |  Branch (6163:7): [True: 27, Folded]
  |  Branch (6163:7): [True: 27, False: 0]
  ------------------
 6164|       |
 6165|     27|      unsigned PairedReg = MRI->getSubReg(SuperReg, ARM::gsub_1);
 6166|       |
 6167|     27|      Operands.insert(
 6168|     27|          Operands.begin() + 3,
 6169|     27|          ARMOperand::CreateReg(PairedReg, Op2.getStartLoc(), Op2.getEndLoc()));
 6170|     27|    }
 6171|     94|  }
 6172|       |
 6173|       |  // FIXME: As said above, this is all a pretty gross hack.  This instruction
 6174|       |  // does not fit with other "subs" and tblgen.
 6175|       |  // Adjust operands of B9.3.19 SUBS PC, LR, #imm (Thumb2) system instruction
 6176|       |  // so the Mnemonic is the original name "subs" and delete the predicate
 6177|       |  // operand so it will match the table entry.
 6178|  35.6k|  if (isThumbTwo() && Mnemonic == "sub" && Operands.size() == 6 &&
  ------------------
  |  Branch (6178:7): [True: 10.0k, False: 25.6k]
  |  Branch (6178:7): [True: 0, False: 35.6k]
  |  Branch (6178:23): [True: 178, False: 9.84k]
  |  Branch (6178:44): [True: 32, False: 146]
  ------------------
 6179|     32|      static_cast<ARMOperand &>(*Operands[3]).isReg() &&
  ------------------
  |  Branch (6179:7): [True: 24, False: 8]
  ------------------
 6180|     24|      static_cast<ARMOperand &>(*Operands[3]).getReg() == ARM::PC &&
  ------------------
  |  Branch (6180:7): [True: 0, False: 24]
  ------------------
 6181|      0|      static_cast<ARMOperand &>(*Operands[4]).isReg() &&
  ------------------
  |  Branch (6181:7): [True: 0, False: 0]
  ------------------
 6182|      0|      static_cast<ARMOperand &>(*Operands[4]).getReg() == ARM::LR &&
  ------------------
  |  Branch (6182:7): [True: 0, False: 0]
  ------------------
 6183|      0|      static_cast<ARMOperand &>(*Operands[5]).isImm()) {
  ------------------
  |  Branch (6183:7): [True: 0, False: 0]
  ------------------
 6184|      0|    Operands.front() = ARMOperand::CreateToken(Name, NameLoc);
 6185|      0|    Operands.erase(Operands.begin() + 1);
 6186|      0|  }
 6187|  35.6k|  return false;
 6188|  35.6k|}
ARMAsmParser.cpp:_ZL28RequiresVFPRegListValidationN7llvm_ks9StringRefERbS1_:
 5847|  51.4k|                                         bool &AcceptDoublePrecisionOnly) {
 5848|  51.4k|  if (Inst.size() < 7)
  ------------------
  |  Branch (5848:7): [True: 46.5k, False: 4.91k]
  ------------------
 5849|  46.5k|    return false;
 5850|       |
 5851|  4.91k|  if (Inst.startswith("fldm") || Inst.startswith("fstm")) {
  ------------------
  |  Branch (5851:7): [True: 137, False: 4.77k]
  |  Branch (5851:7): [True: 170, False: 4.74k]
  |  Branch (5851:34): [True: 33, False: 4.74k]
  ------------------
 5852|    170|    StringRef AddressingMode = Inst.substr(4, 2);
 5853|    170|    if (AddressingMode == "ia" || AddressingMode == "db" ||
  ------------------
  |  Branch (5853:9): [True: 37, False: 133]
  |  Branch (5853:9): [True: 126, False: 44]
  |  Branch (5853:35): [True: 8, False: 125]
  ------------------
 5854|    126|        AddressingMode == "ea" || AddressingMode == "fd") {
  ------------------
  |  Branch (5854:9): [True: 70, False: 55]
  |  Branch (5854:35): [True: 11, False: 44]
  ------------------
 5855|    126|      AcceptSinglePrecisionOnly = Inst[6] == 's';
 5856|    126|      AcceptDoublePrecisionOnly = Inst[6] == 'd' || Inst[6] == 'x';
  ------------------
  |  Branch (5856:35): [True: 74, False: 52]
  |  Branch (5856:53): [True: 14, False: 38]
  ------------------
 5857|    126|      return true;
 5858|    126|    }
 5859|    170|  }
 5860|       |
 5861|  4.78k|  return false;
 5862|  4.91k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17parseDirectiveReqEN7llvm_ks9StringRefENS1_5SMLocE:
 9287|      3|bool ARMAsmParser::parseDirectiveReq(StringRef Name, SMLoc L) {
 9288|      3|  MCAsmParser &Parser = getParser();
 9289|      3|  Parser.Lex(); // Eat the '.req' token.
 9290|      3|  unsigned Reg;
 9291|      3|  SMLoc SRegLoc, ERegLoc;
 9292|      3|  unsigned int ErrorCode;
 9293|      3|  if (ParseRegister(Reg, SRegLoc, ERegLoc, ErrorCode)) {
  ------------------
  |  Branch (9293:7): [True: 1, False: 2]
  ------------------
 9294|      1|    Parser.eatToEndOfStatement();
 9295|       |    //Error(SRegLoc, "register name expected");
 9296|      1|    return false;
 9297|      1|  }
 9298|       |
 9299|       |  // Shouldn't be anything else.
 9300|      2|  if (Parser.getTok().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9300:7): [True: 1, False: 1]
  ------------------
 9301|      1|    Parser.eatToEndOfStatement();
 9302|       |    //Error(Parser.getTok().getLoc(), "unexpected input in .req directive.");
 9303|      1|    return false;
 9304|      1|  }
 9305|       |
 9306|      1|  Parser.Lex(); // Consume the EndOfStatement
 9307|       |
 9308|      1|  if (RegisterReqs.insert(std::make_pair(Name, Reg)).first->second != Reg) {
  ------------------
  |  Branch (9308:7): [True: 0, False: 1]
  ------------------
 9309|       |    //Error(SRegLoc, "redefinition of '" + Name + "' does not match original.");
 9310|      0|    return false;
 9311|      0|  }
 9312|       |
 9313|      1|  return false;
 9314|      1|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser13splitMnemonicEN7llvm_ks9StringRefERjRbS3_RS2_:
 5447|  51.4k|                                      StringRef &ITMask) {
 5448|  51.4k|  PredicationCode = ARMCC::AL;
 5449|  51.4k|  CarrySetting = false;
 5450|  51.4k|  ProcessorIMod = 0;
 5451|       |
 5452|       |  // Ignore some mnemonics we know aren't predicated forms.
 5453|       |  //
 5454|       |  // FIXME: Would be nice to autogen this.
 5455|  51.4k|  if ((Mnemonic == "movs" && isThumb()) ||
  ------------------
  |  Branch (5455:7): [True: 518, False: 50.9k]
  |  Branch (5455:8): [True: 201, False: 51.2k]
  |  Branch (5455:30): [True: 81, False: 120]
  ------------------
 5456|  51.3k|      Mnemonic == "teq"   || Mnemonic == "vceq"   || Mnemonic == "svc"   ||
  ------------------
  |  Branch (5456:7): [True: 72, False: 51.3k]
  |  Branch (5456:30): [True: 4, False: 51.2k]
  |  Branch (5456:54): [True: 124, False: 51.1k]
  ------------------
 5457|  51.1k|      Mnemonic == "mls"   || Mnemonic == "smmls"  || Mnemonic == "vcls"  ||
  ------------------
  |  Branch (5457:7): [True: 4, False: 51.1k]
  |  Branch (5457:30): [True: 1, False: 51.1k]
  |  Branch (5457:54): [True: 1, False: 51.1k]
  ------------------
 5458|  51.1k|      Mnemonic == "vmls"  || Mnemonic == "vnmls"  || Mnemonic == "vacge" ||
  ------------------
  |  Branch (5458:7): [True: 2, False: 51.1k]
  |  Branch (5458:30): [True: 1, False: 51.1k]
  |  Branch (5458:54): [True: 1, False: 51.1k]
  ------------------
 5459|  51.1k|      Mnemonic == "vcge"  || Mnemonic == "vclt"   || Mnemonic == "vacgt" ||
  ------------------
  |  Branch (5459:7): [True: 1, False: 51.1k]
  |  Branch (5459:30): [True: 11, False: 51.1k]
  |  Branch (5459:54): [True: 1, False: 51.1k]
  ------------------
 5460|  51.1k|      Mnemonic == "vaclt" || Mnemonic == "vacle"  || Mnemonic == "hlt" ||
  ------------------
  |  Branch (5460:7): [True: 1, False: 51.1k]
  |  Branch (5460:30): [True: 1, False: 51.1k]
  |  Branch (5460:54): [True: 139, False: 51.0k]
  ------------------
 5461|  51.0k|      Mnemonic == "vcgt"  || Mnemonic == "vcle"   || Mnemonic == "smlal" ||
  ------------------
  |  Branch (5461:7): [True: 2, False: 51.0k]
  |  Branch (5461:30): [True: 1, False: 51.0k]
  |  Branch (5461:54): [True: 1, False: 51.0k]
  ------------------
 5462|  51.0k|      Mnemonic == "umaal" || Mnemonic == "umlal"  || Mnemonic == "vabal" ||
  ------------------
  |  Branch (5462:7): [True: 1, False: 51.0k]
  |  Branch (5462:30): [True: 12, False: 50.9k]
  |  Branch (5462:54): [True: 1, False: 50.9k]
  ------------------
 5463|  50.9k|      Mnemonic == "vmlal" || Mnemonic == "vpadal" || Mnemonic == "vqdmlal" ||
  ------------------
  |  Branch (5463:7): [True: 1, False: 50.9k]
  |  Branch (5463:30): [True: 1, False: 50.9k]
  |  Branch (5463:54): [True: 1, False: 50.9k]
  ------------------
 5464|  50.9k|      Mnemonic == "fmuls" || Mnemonic == "vmaxnm" || Mnemonic == "vminnm" ||
  ------------------
  |  Branch (5464:7): [True: 3, False: 50.9k]
  |  Branch (5464:30): [True: 1, False: 50.9k]
  |  Branch (5464:54): [True: 1, False: 50.9k]
  ------------------
 5465|  50.9k|      Mnemonic == "vcvta" || Mnemonic == "vcvtn"  || Mnemonic == "vcvtp" ||
  ------------------
  |  Branch (5465:7): [True: 1, False: 50.9k]
  |  Branch (5465:30): [True: 1, False: 50.9k]
  |  Branch (5465:54): [True: 3, False: 50.9k]
  ------------------
 5466|  50.9k|      Mnemonic == "vcvtm" || Mnemonic == "vrinta" || Mnemonic == "vrintn" ||
  ------------------
  |  Branch (5466:7): [True: 1, False: 50.9k]
  |  Branch (5466:30): [True: 1, False: 50.9k]
  |  Branch (5466:54): [True: 1, False: 50.9k]
  ------------------
 5467|  50.9k|      Mnemonic == "vrintp" || Mnemonic == "vrintm" || Mnemonic == "hvc" ||
  ------------------
  |  Branch (5467:7): [True: 6, False: 50.9k]
  |  Branch (5467:31): [True: 1, False: 50.9k]
  |  Branch (5467:55): [True: 23, False: 50.9k]
  ------------------
 5468|  50.9k|      Mnemonic.startswith("vsel") || Mnemonic == "vins" || Mnemonic == "vmovx" ||
  ------------------
  |  Branch (5468:7): [True: 3, False: 50.9k]
  |  Branch (5468:38): [True: 3, False: 50.9k]
  |  Branch (5468:60): [True: 1, False: 50.9k]
  ------------------
 5469|  50.9k|      Mnemonic == "bxns"  || Mnemonic == "blxns")
  ------------------
  |  Branch (5469:7): [True: 1, False: 50.9k]
  |  Branch (5469:30): [True: 1, False: 50.9k]
  ------------------
 5470|    518|    return Mnemonic;
 5471|       |
 5472|       |  // First, split out any predication code. Ignore mnemonics we know aren't
 5473|       |  // predicated but do have a carry-set and so weren't caught above.
 5474|  50.9k|  if (Mnemonic != "adcs" && Mnemonic != "bics" && Mnemonic != "movs" &&
  ------------------
  |  Branch (5474:7): [True: 50.8k, False: 62]
  |  Branch (5474:7): [True: 49.9k, False: 972]
  |  Branch (5474:29): [True: 50.8k, False: 56]
  |  Branch (5474:51): [True: 50.7k, False: 120]
  ------------------
 5475|  50.7k|      Mnemonic != "muls" && Mnemonic != "smlals" && Mnemonic != "smulls" &&
  ------------------
  |  Branch (5475:7): [True: 50.6k, False: 56]
  |  Branch (5475:29): [True: 50.6k, False: 1]
  |  Branch (5475:53): [True: 50.6k, False: 1]
  ------------------
 5476|  50.6k|      Mnemonic != "umlals" && Mnemonic != "umulls" && Mnemonic != "lsls" &&
  ------------------
  |  Branch (5476:7): [True: 50.6k, False: 1]
  |  Branch (5476:31): [True: 50.6k, False: 1]
  |  Branch (5476:55): [True: 49.9k, False: 670]
  ------------------
 5477|  49.9k|      Mnemonic != "sbcs" && Mnemonic != "rscs") {
  ------------------
  |  Branch (5477:7): [True: 49.9k, False: 1]
  |  Branch (5477:29): [True: 49.9k, False: 3]
  ------------------
 5478|  49.9k|    unsigned CC = StringSwitch<unsigned>(Mnemonic.substr(Mnemonic.size()-2))
 5479|  49.9k|      .Case("eq", ARMCC::EQ)
 5480|  49.9k|      .Case("ne", ARMCC::NE)
 5481|  49.9k|      .Case("hs", ARMCC::HS)
 5482|  49.9k|      .Case("cs", ARMCC::HS)
 5483|  49.9k|      .Case("lo", ARMCC::LO)
 5484|  49.9k|      .Case("cc", ARMCC::LO)
 5485|  49.9k|      .Case("mi", ARMCC::MI)
 5486|  49.9k|      .Case("pl", ARMCC::PL)
 5487|  49.9k|      .Case("vs", ARMCC::VS)
 5488|  49.9k|      .Case("vc", ARMCC::VC)
 5489|  49.9k|      .Case("hi", ARMCC::HI)
 5490|  49.9k|      .Case("ls", ARMCC::LS)
 5491|  49.9k|      .Case("ge", ARMCC::GE)
 5492|  49.9k|      .Case("lt", ARMCC::LT)
 5493|  49.9k|      .Case("gt", ARMCC::GT)
 5494|  49.9k|      .Case("le", ARMCC::LE)
 5495|  49.9k|      .Case("al", ARMCC::AL)
 5496|  49.9k|      .Default(~0U);
 5497|  49.9k|    if (CC != ~0U) {
  ------------------
  |  Branch (5497:9): [True: 2.73k, False: 47.2k]
  ------------------
 5498|  2.73k|      Mnemonic = Mnemonic.slice(0, Mnemonic.size() - 2);
 5499|  2.73k|      PredicationCode = CC;
 5500|  2.73k|    }
 5501|  49.9k|  }
 5502|       |
 5503|       |  // Next, determine if we have a carry setting bit. We explicitly ignore all
 5504|       |  // the instructions we know end in 's'.
 5505|  50.9k|  if (Mnemonic.endswith("s") &&
  ------------------
  |  Branch (5505:7): [True: 4.19k, False: 46.7k]
  |  Branch (5505:7): [True: 3.84k, False: 47.0k]
  ------------------
 5506|  4.19k|      !(Mnemonic == "cps" || Mnemonic == "mls" ||
  ------------------
  |  Branch (5506:9): [True: 150, False: 4.04k]
  |  Branch (5506:30): [True: 1, False: 4.03k]
  ------------------
 5507|  4.03k|        Mnemonic == "mrs" || Mnemonic == "smmls" || Mnemonic == "vabs" ||
  ------------------
  |  Branch (5507:9): [True: 10, False: 4.02k]
  |  Branch (5507:30): [True: 0, False: 4.02k]
  |  Branch (5507:53): [True: 17, False: 4.01k]
  ------------------
 5508|  4.01k|        Mnemonic == "vcls" || Mnemonic == "vmls" || Mnemonic == "vmrs" ||
  ------------------
  |  Branch (5508:9): [True: 1, False: 4.01k]
  |  Branch (5508:31): [True: 1, False: 4.01k]
  |  Branch (5508:53): [True: 34, False: 3.97k]
  ------------------
 5509|  3.97k|        Mnemonic == "vnmls" || Mnemonic == "vqabs" || Mnemonic == "vrecps" ||
  ------------------
  |  Branch (5509:9): [True: 1, False: 3.97k]
  |  Branch (5509:32): [True: 1, False: 3.97k]
  |  Branch (5509:55): [True: 1, False: 3.97k]
  ------------------
 5510|  3.97k|        Mnemonic == "vrsqrts" || Mnemonic == "srs" || Mnemonic == "flds" ||
  ------------------
  |  Branch (5510:9): [True: 1, False: 3.97k]
  |  Branch (5510:34): [True: 6, False: 3.96k]
  |  Branch (5510:55): [True: 2, False: 3.96k]
  ------------------
 5511|  3.96k|        Mnemonic == "fmrs" || Mnemonic == "fsqrts" || Mnemonic == "fsubs" ||
  ------------------
  |  Branch (5511:9): [True: 6, False: 3.95k]
  |  Branch (5511:31): [True: 3, False: 3.95k]
  |  Branch (5511:55): [True: 1, False: 3.95k]
  ------------------
 5512|  3.95k|        Mnemonic == "fsts" || Mnemonic == "fcpys" || Mnemonic == "fdivs" ||
  ------------------
  |  Branch (5512:9): [True: 3, False: 3.95k]
  |  Branch (5512:31): [True: 3, False: 3.94k]
  |  Branch (5512:54): [True: 0, False: 3.94k]
  ------------------
 5513|  3.94k|        Mnemonic == "fmuls" || Mnemonic == "fcmps" || Mnemonic == "fcmpzs" ||
  ------------------
  |  Branch (5513:9): [True: 1, False: 3.94k]
  |  Branch (5513:32): [True: 1, False: 3.94k]
  |  Branch (5513:55): [True: 0, False: 3.94k]
  ------------------
 5514|  3.94k|        Mnemonic == "vfms" || Mnemonic == "vfnms" || Mnemonic == "fconsts" ||
  ------------------
  |  Branch (5514:9): [True: 1, False: 3.94k]
  |  Branch (5514:31): [True: 1, False: 3.94k]
  |  Branch (5514:54): [True: 95, False: 3.84k]
  ------------------
 5515|  3.84k|        (Mnemonic == "movs" && isThumb()))) {
  ------------------
  |  Branch (5515:10): [True: 120, False: 3.72k]
  |  Branch (5515:32): [True: 0, False: 120]
  ------------------
 5516|  3.84k|    Mnemonic = Mnemonic.slice(0, Mnemonic.size() - 1);
 5517|  3.84k|    CarrySetting = true;
 5518|  3.84k|  }
 5519|       |
 5520|       |  // The "cps" instruction can have a interrupt mode operand which is glued into
 5521|       |  // the mnemonic. Check if this is the case, split it and parse the imod op
 5522|  50.9k|  if (Mnemonic.startswith("cps")) {
  ------------------
  |  Branch (5522:7): [True: 286, False: 50.6k]
  ------------------
 5523|       |    // Split out any imod code.
 5524|    286|    unsigned IMod =
 5525|    286|      StringSwitch<unsigned>(Mnemonic.substr(Mnemonic.size()-2, 2))
 5526|    286|      .Case("ie", ARM_PROC::IE)
 5527|    286|      .Case("id", ARM_PROC::ID)
 5528|    286|      .Default(~0U);
 5529|    286|    if (IMod != ~0U) {
  ------------------
  |  Branch (5529:9): [True: 119, False: 167]
  ------------------
 5530|    119|      Mnemonic = Mnemonic.slice(0, Mnemonic.size()-2);
 5531|    119|      ProcessorIMod = IMod;
 5532|    119|    }
 5533|    286|  }
 5534|       |
 5535|       |  // The "it" instruction has the condition mask on the end of the mnemonic.
 5536|  50.9k|  if (Mnemonic.startswith("it")) {
  ------------------
  |  Branch (5536:7): [True: 596, False: 50.3k]
  ------------------
 5537|    596|    ITMask = Mnemonic.slice(2, Mnemonic.size());
 5538|    596|    Mnemonic = Mnemonic.slice(0, 2);
 5539|    596|  }
 5540|       |
 5541|  50.9k|  return Mnemonic;
 5542|  51.4k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser10isThumbOneEv:
  252|  95.4k|  bool isThumbOne() const {
  253|  95.4k|    return isThumb() && !getSTI().getFeatureBits()[ARM::FeatureThumb2];
  ------------------
  |  Branch (253:12): [True: 36.2k, False: 59.2k]
  |  Branch (253:25): [True: 3.31k, False: 32.8k]
  ------------------
  254|  95.4k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand11CreateTokenEN7llvm_ks9StringRefENS1_5SMLocE:
 2589|  69.2k|  static std::unique_ptr<ARMOperand> CreateToken(StringRef Str, SMLoc S) {
 2590|  69.2k|    auto Op = make_unique<ARMOperand>(k_Token);
 2591|  69.2k|    Op->Tok.Data = Str.data();
 2592|  69.2k|    Op->Tok.Length = Str.size();
 2593|  69.2k|    Op->StartLoc = S;
 2594|  69.2k|    Op->EndLoc = S;
 2595|  69.2k|    return Op;
 2596|  69.2k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperandC2ENS0_6KindTyE:
  581|   217k|  ARMOperand(KindTy K) : MCParsedAsmOperand(), Kind(K) {}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand7isTokenEv:
 1045|   581k|  bool isToken() const override { return Kind == k_Token; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand5isImmEv:
  665|   128k|  bool isImm() const override { return Kind == k_Immediate; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand5isRegEv:
 1041|   272k|  bool isReg() const override { return Kind == k_Register; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand6getRegEv:
  612|   206k|  unsigned getReg() const override {
  613|   206k|    assert((Kind == k_Register || Kind == k_CCOut) && "Invalid access!");
  ------------------
  |  Branch (613:5): [True: 198k, False: 8.44k]
  |  Branch (613:5): [True: 8.44k, False: 0]
  |  Branch (613:5): [True: 206k, Folded]
  |  Branch (613:5): [True: 206k, False: 0]
  ------------------
  614|   206k|    return Reg.RegNum;
  615|   206k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand5isMemEv:
 1048|  16.7k|  bool isMem() const override { return Kind == k_Memory; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11getStartLocEv:
  584|    194|  SMLoc getStartLoc() const override { return StartLoc; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9getEndLocEv:
  586|     28|  SMLoc getEndLoc() const override { return EndLoc; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11getCondCodeEv:
  597|  57.7k|  ARMCC::CondCodes getCondCode() const {
  598|  57.7k|    assert(Kind == k_CondCode && "Invalid access!");
  ------------------
  |  Branch (598:5): [True: 57.7k, False: 0]
  |  Branch (598:5): [True: 57.7k, Folded]
  |  Branch (598:5): [True: 57.7k, False: 0]
  ------------------
  599|  57.7k|    return CC.Val;
  600|  57.7k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9getCoprocEv:
  602|    622|  unsigned getCoproc() const {
  603|    622|    assert((Kind == k_CoprocNum || Kind == k_CoprocReg) && "Invalid access!");
  ------------------
  |  Branch (603:5): [True: 311, False: 311]
  |  Branch (603:5): [True: 311, False: 0]
  |  Branch (603:5): [True: 622, Folded]
  |  Branch (603:5): [True: 622, False: 0]
  ------------------
  604|    622|    return Cop.Val;
  605|    622|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10getMSRMaskEv:
  648|     83|  unsigned getMSRMask() const {
  649|     83|    assert(Kind == k_MSRMask && "Invalid access!");
  ------------------
  |  Branch (649:5): [True: 83, False: 0]
  |  Branch (649:5): [True: 83, Folded]
  |  Branch (649:5): [True: 83, False: 0]
  ------------------
  650|     83|    return MMask.Val;
  651|     83|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand6getImmEv:
  623|  42.5k|  const MCExpr *getImm() const {
  624|  42.5k|    assert(isImm() && "Invalid access!");
  ------------------
  |  Branch (624:5): [True: 42.5k, False: 0]
  |  Branch (624:5): [True: 42.5k, Folded]
  |  Branch (624:5): [True: 42.5k, False: 0]
  ------------------
  625|  42.5k|    return Imm.Val;
  626|  42.5k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16getMemBarrierOptEv:
  633|    754|  ARM_MB::MemBOpt getMemBarrierOpt() const {
  634|    754|    assert(Kind == k_MemBarrierOpt && "Invalid access!");
  ------------------
  |  Branch (634:5): [True: 754, False: 0]
  |  Branch (634:5): [True: 754, Folded]
  |  Branch (634:5): [True: 754, False: 0]
  ------------------
  635|    754|    return MBOpt.Val;
  636|    754|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21getInstSyncBarrierOptEv:
  638|    264|  ARM_ISB::InstSyncBOpt getInstSyncBarrierOpt() const {
  639|    264|    assert(Kind == k_InstSyncBarrierOpt && "Invalid access!");
  ------------------
  |  Branch (639:5): [True: 264, False: 0]
  |  Branch (639:5): [True: 264, Folded]
  |  Branch (639:5): [True: 264, False: 0]
  ------------------
  640|    264|    return ISBOpt.Val;
  641|    264|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand13getProcIFlagsEv:
  643|     40|  ARM_PROC::IFlags getProcIFlags() const {
  644|     40|    assert(Kind == k_ProcIFlags && "Invalid access!");
  ------------------
  |  Branch (644:5): [True: 40, False: 0]
  |  Branch (644:5): [True: 40, Folded]
  |  Branch (644:5): [True: 40, False: 0]
  ------------------
  645|     40|    return IFlags.Val;
  646|     40|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8getTokenEv:
  607|  70.8k|  StringRef getToken() const {
  608|  70.8k|    assert(Kind == k_Token && "Invalid access!");
  ------------------
  |  Branch (608:5): [True: 70.8k, False: 0]
  |  Branch (608:5): [True: 70.8k, Folded]
  |  Branch (608:5): [True: 70.8k, False: 0]
  ------------------
  609|  70.8k|    return StringRef(Tok.Data, Tok.Length);
  610|  70.8k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand12CreateITMaskEjN7llvm_ks5SMLocE:
 2539|    581|  static std::unique_ptr<ARMOperand> CreateITMask(unsigned Mask, SMLoc S) {
 2540|    581|    auto Op = make_unique<ARMOperand>(k_ITCondMask);
 2541|    581|    Op->ITMask.Mask = Mask;
 2542|    581|    Op->StartLoc = S;
 2543|    581|    Op->EndLoc = S;
 2544|    581|    return Op;
 2545|    581|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21getMnemonicAcceptInfoEN7llvm_ks9StringRefES2_RbS3_:
 5550|  51.4k|                                         bool &CanAcceptPredicationCode) {
 5551|  51.4k|  CanAcceptCarrySet =
 5552|  51.4k|      Mnemonic == "and" || Mnemonic == "lsl" || Mnemonic == "lsr" ||
  ------------------
  |  Branch (5552:7): [True: 491, False: 50.9k]
  |  Branch (5552:28): [True: 777, False: 50.1k]
  |  Branch (5552:49): [True: 557, False: 49.6k]
  ------------------
 5553|  49.6k|      Mnemonic == "rrx" || Mnemonic == "ror" || Mnemonic == "sub" ||
  ------------------
  |  Branch (5553:7): [True: 17, False: 49.5k]
  |  Branch (5553:28): [True: 153, False: 49.4k]
  |  Branch (5553:49): [True: 333, False: 49.1k]
  ------------------
 5554|  49.1k|      Mnemonic == "add" || Mnemonic == "adc" || Mnemonic == "mul" ||
  ------------------
  |  Branch (5554:7): [True: 4.25k, False: 44.8k]
  |  Branch (5554:28): [True: 118, False: 44.7k]
  |  Branch (5554:49): [True: 466, False: 44.2k]
  ------------------
 5555|  44.2k|      Mnemonic == "bic" || Mnemonic == "asr" || Mnemonic == "orr" ||
  ------------------
  |  Branch (5555:7): [True: 179, False: 44.0k]
  |  Branch (5555:28): [True: 350, False: 43.7k]
  |  Branch (5555:49): [True: 280, False: 43.4k]
  ------------------
 5556|  43.4k|      Mnemonic == "mvn" || Mnemonic == "rsb" || Mnemonic == "rsc" ||
  ------------------
  |  Branch (5556:7): [True: 388, False: 43.0k]
  |  Branch (5556:28): [True: 331, False: 42.7k]
  |  Branch (5556:49): [True: 141, False: 42.6k]
  ------------------
 5557|  42.6k|      Mnemonic == "orn" || Mnemonic == "sbc" || Mnemonic == "eor" ||
  ------------------
  |  Branch (5557:7): [True: 26, False: 42.5k]
  |  Branch (5557:28): [True: 129, False: 42.4k]
  |  Branch (5557:49): [True: 53, False: 42.3k]
  ------------------
 5558|  42.3k|      Mnemonic == "neg" || Mnemonic == "vfm" || Mnemonic == "vfnm" ||
  ------------------
  |  Branch (5558:7): [True: 15, False: 42.3k]
  |  Branch (5558:28): [True: 3, False: 42.3k]
  |  Branch (5558:49): [True: 2, False: 42.3k]
  ------------------
 5559|  42.3k|      (!isThumb() &&
  ------------------
  |  Branch (5559:8): [True: 32.4k, False: 9.91k]
  ------------------
 5560|  32.4k|       (Mnemonic == "smull" || Mnemonic == "mov" || Mnemonic == "mla" ||
  ------------------
  |  Branch (5560:9): [True: 1, False: 32.4k]
  |  Branch (5560:32): [True: 987, False: 31.4k]
  |  Branch (5560:53): [True: 7, False: 31.4k]
  ------------------
 5561|  31.4k|        Mnemonic == "smlal" || Mnemonic == "umlal" || Mnemonic == "umull"));
  ------------------
  |  Branch (5561:9): [True: 2, False: 31.4k]
  |  Branch (5561:32): [True: 13, False: 31.4k]
  |  Branch (5561:55): [True: 1, False: 31.4k]
  ------------------
 5562|       |
 5563|  51.4k|  if (Mnemonic == "bkpt" || Mnemonic == "cbnz" || Mnemonic == "setend" ||
  ------------------
  |  Branch (5563:7): [True: 52, False: 51.3k]
  |  Branch (5563:7): [True: 1.59k, False: 49.8k]
  |  Branch (5563:29): [True: 27, False: 51.3k]
  |  Branch (5563:51): [True: 64, False: 51.2k]
  ------------------
 5564|  51.2k|      Mnemonic == "cps" || Mnemonic == "it" || Mnemonic == "cbz" ||
  ------------------
  |  Branch (5564:7): [True: 270, False: 51.0k]
  |  Branch (5564:28): [True: 581, False: 50.4k]
  |  Branch (5564:48): [True: 35, False: 50.4k]
  ------------------
 5565|  50.4k|      Mnemonic == "trap" || Mnemonic == "hlt" || Mnemonic == "udf" ||
  ------------------
  |  Branch (5565:7): [True: 188, False: 50.2k]
  |  Branch (5565:29): [True: 139, False: 50.0k]
  |  Branch (5565:50): [True: 122, False: 49.9k]
  ------------------
 5566|  49.9k|      Mnemonic.startswith("crc32") || Mnemonic.startswith("cps") ||
  ------------------
  |  Branch (5566:7): [True: 2, False: 49.9k]
  |  Branch (5566:39): [True: 16, False: 49.9k]
  ------------------
 5567|  49.9k|      Mnemonic.startswith("vsel") || Mnemonic == "vmaxnm" ||
  ------------------
  |  Branch (5567:7): [True: 3, False: 49.9k]
  |  Branch (5567:38): [True: 1, False: 49.9k]
  ------------------
 5568|  49.9k|      Mnemonic == "vminnm" || Mnemonic == "vcvta" || Mnemonic == "vcvtn" ||
  ------------------
  |  Branch (5568:7): [True: 1, False: 49.9k]
  |  Branch (5568:31): [True: 1, False: 49.9k]
  |  Branch (5568:54): [True: 1, False: 49.9k]
  ------------------
 5569|  49.9k|      Mnemonic == "vcvtp" || Mnemonic == "vcvtm" || Mnemonic == "vrinta" ||
  ------------------
  |  Branch (5569:7): [True: 3, False: 49.9k]
  |  Branch (5569:30): [True: 1, False: 49.9k]
  |  Branch (5569:53): [True: 1, False: 49.9k]
  ------------------
 5570|  49.9k|      Mnemonic == "vrintn" || Mnemonic == "vrintp" || Mnemonic == "vrintm" ||
  ------------------
  |  Branch (5570:7): [True: 1, False: 49.9k]
  |  Branch (5570:31): [True: 6, False: 49.9k]
  |  Branch (5570:55): [True: 1, False: 49.9k]
  ------------------
 5571|  49.9k|      Mnemonic.startswith("aes") || Mnemonic == "hvc" || Mnemonic == "setpan" ||
  ------------------
  |  Branch (5571:7): [True: 1, False: 49.9k]
  |  Branch (5571:37): [True: 23, False: 49.8k]
  |  Branch (5571:58): [True: 45, False: 49.8k]
  ------------------
 5572|  49.8k|      Mnemonic.startswith("sha1") || Mnemonic.startswith("sha256") ||
  ------------------
  |  Branch (5572:7): [True: 1, False: 49.8k]
  |  Branch (5572:38): [True: 1, False: 49.8k]
  ------------------
 5573|  49.8k|      (FullInst.startswith("vmull") && FullInst.endswith(".p64")) ||
  ------------------
  |  Branch (5573:8): [True: 4, False: 49.8k]
  |  Branch (5573:40): [True: 0, False: 4]
  ------------------
 5574|  49.8k|      Mnemonic == "vmovx" || Mnemonic == "vins") {
  ------------------
  |  Branch (5574:7): [True: 1, False: 49.8k]
  |  Branch (5574:30): [True: 3, False: 49.8k]
  ------------------
 5575|       |    // These mnemonics are never predicable
 5576|  1.59k|    CanAcceptPredicationCode = false;
 5577|  49.8k|  } else if (!isThumb()) {
  ------------------
  |  Branch (5577:14): [True: 37.3k, False: 12.4k]
  ------------------
 5578|       |    // Some instructions are only predicable in Thumb mode
 5579|  37.3k|    CanAcceptPredicationCode =
 5580|  37.3k|        Mnemonic != "cdp2" && Mnemonic != "clrex" && Mnemonic != "mcr2" &&
  ------------------
  |  Branch (5580:9): [True: 37.3k, False: 13]
  |  Branch (5580:31): [True: 37.2k, False: 55]
  |  Branch (5580:54): [True: 37.2k, False: 1]
  ------------------
 5581|  37.2k|        Mnemonic != "mcrr2" && Mnemonic != "mrc2" && Mnemonic != "mrrc2" &&
  ------------------
  |  Branch (5581:9): [True: 37.2k, False: 11]
  |  Branch (5581:32): [True: 37.2k, False: 4]
  |  Branch (5581:54): [True: 37.2k, False: 2]
  ------------------
 5582|  37.2k|        Mnemonic != "dmb" && Mnemonic != "dsb" && Mnemonic != "isb" &&
  ------------------
  |  Branch (5582:9): [True: 36.3k, False: 882]
  |  Branch (5582:30): [True: 36.2k, False: 163]
  |  Branch (5582:51): [True: 35.6k, False: 588]
  ------------------
 5583|  35.6k|        Mnemonic != "pld" && Mnemonic != "pli" && Mnemonic != "pldw" &&
  ------------------
  |  Branch (5583:9): [True: 35.5k, False: 100]
  |  Branch (5583:30): [True: 35.5k, False: 13]
  |  Branch (5583:51): [True: 35.5k, False: 1]
  ------------------
 5584|  35.5k|        Mnemonic != "ldc2" && Mnemonic != "ldc2l" && Mnemonic != "stc2" &&
  ------------------
  |  Branch (5584:9): [True: 35.5k, False: 18]
  |  Branch (5584:31): [True: 35.5k, False: 2]
  |  Branch (5584:54): [True: 35.4k, False: 24]
  ------------------
 5585|  35.4k|        Mnemonic != "stc2l" && !Mnemonic.startswith("rfe") &&
  ------------------
  |  Branch (5585:9): [True: 35.4k, False: 8]
  |  Branch (5585:32): [True: 35.3k, False: 122]
  ------------------
 5586|  35.3k|        !Mnemonic.startswith("srs");
  ------------------
  |  Branch (5586:9): [True: 35.1k, False: 235]
  ------------------
 5587|  37.3k|  } else if (isThumbOne()) {
  ------------------
  |  Branch (5587:14): [True: 1.15k, False: 11.3k]
  ------------------
 5588|  1.15k|    if (hasV6MOps())
  ------------------
  |  Branch (5588:9): [True: 839, False: 311]
  ------------------
 5589|    839|      CanAcceptPredicationCode = Mnemonic != "movs";
 5590|    311|    else
 5591|    311|      CanAcceptPredicationCode = Mnemonic != "nop" && Mnemonic != "movs";
  ------------------
  |  Branch (5591:34): [True: 281, False: 30]
  |  Branch (5591:55): [True: 281, False: 0]
  ------------------
 5592|  1.15k|  } else
 5593|  11.3k|    CanAcceptPredicationCode = true;
 5594|  51.4k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser9hasV6MOpsEv:
  264|  1.18k|  bool hasV6MOps() const {
  265|  1.18k|    return getSTI().getFeatureBits()[ARM::HasV6MOps];
  266|  1.18k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand11CreateCCOutEjN7llvm_ks5SMLocE:
 2581|  10.0k|  static std::unique_ptr<ARMOperand> CreateCCOut(unsigned RegNum, SMLoc S) {
 2582|  10.0k|    auto Op = make_unique<ARMOperand>(k_CCOut);
 2583|  10.0k|    Op->Reg.RegNum = RegNum;
 2584|  10.0k|    Op->StartLoc = S;
 2585|  10.0k|    Op->EndLoc = S;
 2586|  10.0k|    return Op;
 2587|  10.0k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand14CreateCondCodeEN7llvm_ks5ARMCC9CondCodesENS1_5SMLocE:
 2548|  47.8k|                                                    SMLoc S) {
 2549|  47.8k|    auto Op = make_unique<ARMOperand>(k_CondCode);
 2550|  47.8k|    Op->CC.Val = CC;
 2551|  47.8k|    Op->StartLoc = S;
 2552|  47.8k|    Op->EndLoc = S;
 2553|  47.8k|    return Op;
 2554|  47.8k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand9CreateImmEPKN7llvm_ks6MCExprENS1_5SMLocES5_:
 2744|  53.8k|                                               SMLoc E) {
 2745|  53.8k|    auto Op = make_unique<ARMOperand>(k_Immediate);
 2746|  53.8k|    Op->Imm.Val = Val;
 2747|  53.8k|    Op->StartLoc = S;
 2748|  53.8k|    Op->EndLoc = E;
 2749|  53.8k|    return Op;
 2750|  53.8k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser8isMClassEv:
  300|  1.84k|  bool isMClass() const {
  301|  1.84k|    return getSTI().getFeatureBits()[ARM::FeatureMClass];
  302|  1.84k|  }
ARMAsmParser.cpp:_ZL15isDataTypeTokenN7llvm_ks9StringRefE:
 5827|  17.8k|static bool isDataTypeToken(StringRef Tok) {
 5828|  17.8k|  return Tok == ".8" || Tok == ".16" || Tok == ".32" || Tok == ".64" ||
  ------------------
  |  Branch (5828:10): [True: 76, False: 17.7k]
  |  Branch (5828:25): [True: 105, False: 17.6k]
  |  Branch (5828:41): [True: 106, False: 17.5k]
  |  Branch (5828:57): [True: 23, False: 17.5k]
  ------------------
 5829|  17.5k|    Tok == ".i8" || Tok == ".i16" || Tok == ".i32" || Tok == ".i64" ||
  ------------------
  |  Branch (5829:5): [True: 26, False: 17.4k]
  |  Branch (5829:21): [True: 92, False: 17.3k]
  |  Branch (5829:38): [True: 238, False: 17.1k]
  |  Branch (5829:55): [True: 159, False: 17.0k]
  ------------------
 5830|  17.0k|    Tok == ".u8" || Tok == ".u16" || Tok == ".u32" || Tok == ".u64" ||
  ------------------
  |  Branch (5830:5): [True: 153, False: 16.8k]
  |  Branch (5830:21): [True: 223, False: 16.6k]
  |  Branch (5830:38): [True: 70, False: 16.5k]
  |  Branch (5830:55): [True: 562, False: 15.9k]
  ------------------
 5831|  15.9k|    Tok == ".s8" || Tok == ".s16" || Tok == ".s32" || Tok == ".s64" ||
  ------------------
  |  Branch (5831:5): [True: 161, False: 15.8k]
  |  Branch (5831:21): [True: 129, False: 15.7k]
  |  Branch (5831:38): [True: 286, False: 15.4k]
  |  Branch (5831:55): [True: 147, False: 15.2k]
  ------------------
 5832|  15.2k|    Tok == ".p8" || Tok == ".p16" || Tok == ".f32" || Tok == ".f64" ||
  ------------------
  |  Branch (5832:5): [True: 17, False: 15.2k]
  |  Branch (5832:21): [True: 96, False: 15.1k]
  |  Branch (5832:38): [True: 160, False: 14.9k]
  |  Branch (5832:55): [True: 376, False: 14.6k]
  ------------------
 5833|  14.6k|    Tok == ".f" || Tok == ".d";
  ------------------
  |  Branch (5833:5): [True: 697, False: 13.9k]
  |  Branch (5833:20): [True: 42, False: 13.8k]
  ------------------
 5834|  17.8k|}
ARMAsmParser.cpp:_ZL24doesIgnoreDataTypeSuffixN7llvm_ks9StringRefES0_:
 5839|  3.94k|static bool doesIgnoreDataTypeSuffix(StringRef Mnemonic, StringRef DT) {
 5840|  3.94k|  return Mnemonic.startswith("vldm") || Mnemonic.startswith("vstm");
  ------------------
  |  Branch (5840:10): [True: 36, False: 3.90k]
  |  Branch (5840:41): [True: 10, False: 3.89k]
  ------------------
 5841|  3.94k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser7isThumbEv:
  248|   570k|  bool isThumb() const {
  249|       |    // FIXME: Can tablegen auto-generate this?
  250|   570k|    return getSTI().getFeatureBits()[ARM::ModeThumb];
  251|   570k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser12parseOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEENS1_9StringRefERj:
 5223|   104k|{
 5224|   104k|  MCAsmParser &Parser = getParser();
 5225|   104k|  SMLoc S, E;
 5226|       |
 5227|       |  // Check if the current operand has a custom associated parser, if so, try to
 5228|       |  // custom parse the operand, or fallback to the general approach.
 5229|   104k|  OperandMatchResultTy ResTy = MatchOperandParserImpl(Operands, Mnemonic, ErrorCode);
 5230|   104k|  if (ResTy == MatchOperand_Success)
  ------------------
  |  Branch (5230:7): [True: 6.17k, False: 98.3k]
  ------------------
 5231|  6.17k|    return false;
 5232|       |  // If there wasn't a custom match, try the generic matcher below. Otherwise,
 5233|       |  // there was a match, but an error occurred, in which case, just return that
 5234|       |  // the operand parsing failed.
 5235|  98.3k|  if (ResTy == MatchOperand_ParseFail)
  ------------------
  |  Branch (5235:7): [True: 2.07k, False: 96.2k]
  ------------------
 5236|  2.07k|    return true;
 5237|       |
 5238|  96.2k|  switch (getLexer().getKind()) {
 5239|  1.37k|  default:
  ------------------
  |  Branch (5239:3): [True: 1.37k, False: 94.8k]
  ------------------
 5240|       |    //Error(Parser.getTok().getLoc(), "unexpected token in operand");
 5241|  1.37k|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 5242|  1.37k|    return true;
 5243|  62.1k|  case AsmToken::Identifier: {
  ------------------
  |  Branch (5243:3): [True: 62.1k, False: 34.0k]
  ------------------
 5244|       |    // If we've seen a branch mnemonic, the next operand must be a label.  This
 5245|       |    // is true even if the label is a register name.  So "br r1" means branch to
 5246|       |    // label "r1".
 5247|  62.1k|    bool ExpectLabel = Mnemonic == "b" || Mnemonic == "bl";
  ------------------
  |  Branch (5247:24): [True: 2.02k, False: 60.1k]
  |  Branch (5247:43): [True: 2.25k, False: 57.9k]
  ------------------
 5248|  62.1k|    if (!ExpectLabel) {
  ------------------
  |  Branch (5248:9): [True: 57.9k, False: 4.27k]
  ------------------
 5249|  57.9k|      if (!tryParseRegisterWithWriteBack(Operands))
  ------------------
  |  Branch (5249:11): [True: 29.9k, False: 27.9k]
  ------------------
 5250|  29.9k|        return false;
 5251|  27.9k|      int Res = tryParseShiftRegister(Operands);
 5252|  27.9k|      if (Res == 0) // success
  ------------------
  |  Branch (5252:11): [True: 404, False: 27.5k]
  ------------------
 5253|    404|        return false;
 5254|  27.5k|      else if (Res == -1) // irrecoverable error
  ------------------
  |  Branch (5254:16): [True: 102, False: 27.4k]
  ------------------
 5255|    102|        return true;
 5256|       |      // If this is VMRS, check for the apsr_nzcv operand.
 5257|  27.4k|      if (Mnemonic == "vmrs" &&
  ------------------
  |  Branch (5257:11): [True: 156, False: 27.3k]
  |  Branch (5257:11): [True: 0, False: 27.4k]
  ------------------
 5258|    156|          Parser.getTok().getString().equals_lower("apsr_nzcv")) {
  ------------------
  |  Branch (5258:11): [True: 0, False: 156]
  ------------------
 5259|      0|        S = Parser.getTok().getLoc();
 5260|      0|        Parser.Lex();
 5261|      0|        Operands.push_back(ARMOperand::CreateToken("APSR_nzcv", S));
 5262|      0|        return false;
 5263|      0|      }
 5264|  27.4k|    }
 5265|       |
 5266|       |    // Fall though for the Identifier case that is not a register or a
 5267|       |    // special name.
 5268|  62.1k|  }
 5269|  34.5k|  case AsmToken::LParen:  // parenthesized expressions like (_strcmp-4)
  ------------------
  |  Branch (5269:3): [True: 2.85k, False: 93.4k]
  ------------------
 5270|  44.2k|  case AsmToken::Integer: // things like 1f and 2b as a branch targets
  ------------------
  |  Branch (5270:3): [True: 9.68k, False: 86.5k]
  ------------------
 5271|  44.4k|  case AsmToken::String:  // quoted label names.
  ------------------
  |  Branch (5271:3): [True: 204, False: 96.0k]
  ------------------
 5272|  54.4k|  case AsmToken::Dot: {   // . as a branch target
  ------------------
  |  Branch (5272:3): [True: 9.97k, False: 86.2k]
  ------------------
 5273|       |    // This was not a register so parse other operands that start with an
 5274|       |    // identifier (like labels) as expressions and create them as immediates.
 5275|  54.4k|    const MCExpr *IdVal;
 5276|  54.4k|    S = Parser.getTok().getLoc();
 5277|  54.4k|    if (getParser().parseExpression(IdVal))
  ------------------
  |  Branch (5277:9): [True: 7.18k, False: 47.2k]
  ------------------
 5278|  7.18k|      return true;
 5279|  47.2k|    E = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
 5280|  47.2k|    Operands.push_back(ARMOperand::CreateImm(IdVal, S, E));
 5281|  47.2k|    return false;
 5282|  54.4k|  }
 5283|  1.22k|  case AsmToken::LBrac:
  ------------------
  |  Branch (5283:3): [True: 1.22k, False: 95.0k]
  ------------------
 5284|  1.22k|    return parseMemory(Operands);
 5285|    348|  case AsmToken::LCurly:
  ------------------
  |  Branch (5285:3): [True: 348, False: 95.9k]
  ------------------
 5286|    348|    return parseRegisterList(Operands);
 5287|    532|  case AsmToken::Dollar:
  ------------------
  |  Branch (5287:3): [True: 532, False: 95.7k]
  ------------------
 5288|  6.49k|  case AsmToken::Hash: {
  ------------------
  |  Branch (5288:3): [True: 5.96k, False: 90.3k]
  ------------------
 5289|       |    // #42 -> immediate.
 5290|  6.49k|    S = Parser.getTok().getLoc();
 5291|  6.49k|    Parser.Lex();
 5292|       |
 5293|  6.49k|    if (Parser.getTok().isNot(AsmToken::Colon)) {
  ------------------
  |  Branch (5293:9): [True: 6.49k, False: 4]
  ------------------
 5294|  6.49k|      bool isNegative = Parser.getTok().is(AsmToken::Minus);
 5295|  6.49k|      const MCExpr *ImmVal;
 5296|  6.49k|      if (getParser().parseExpression(ImmVal))
  ------------------
  |  Branch (5296:11): [True: 2.90k, False: 3.59k]
  ------------------
 5297|  2.90k|        return true;
 5298|  3.59k|      const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(ImmVal);
 5299|  3.59k|      if (CE) {
  ------------------
  |  Branch (5299:11): [True: 1.61k, False: 1.98k]
  ------------------
 5300|  1.61k|        int32_t Val = CE->getValue();
 5301|  1.61k|        if (isNegative && Val == 0)
  ------------------
  |  Branch (5301:13): [True: 269, False: 1.34k]
  |  Branch (5301:27): [True: 31, False: 238]
  ------------------
 5302|     31|          ImmVal = MCConstantExpr::create(INT32_MIN, getContext());
 5303|  1.61k|      }
 5304|  3.59k|      E = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
 5305|  3.59k|      Operands.push_back(ARMOperand::CreateImm(ImmVal, S, E));
 5306|       |
 5307|       |      // There can be a trailing '!' on operands that we want as a separate
 5308|       |      // '!' Token operand. Handle that here. For example, the compatibility
 5309|       |      // alias for 'srsdb sp!, #imm' is 'srsdb #imm!'.
 5310|  3.59k|      if (Parser.getTok().is(AsmToken::Exclaim)) {
  ------------------
  |  Branch (5310:11): [True: 28, False: 3.56k]
  ------------------
 5311|     28|        Operands.push_back(ARMOperand::CreateToken(Parser.getTok().getString(),
 5312|     28|                                                   Parser.getTok().getLoc()));
 5313|     28|        Parser.Lex(); // Eat exclaim token
 5314|     28|      }
 5315|  3.59k|      return false;
 5316|  6.49k|    }
 5317|       |    // w/ a ':' after the '#', it's just like a plain ':'.
 5318|       |    // FALLTHROUGH
 5319|  6.49k|  }
 5320|     26|  case AsmToken::Colon: {
  ------------------
  |  Branch (5320:3): [True: 22, False: 96.2k]
  ------------------
 5321|     26|    S = Parser.getTok().getLoc();
 5322|       |    // ":lower16:" and ":upper16:" expression prefixes
 5323|       |    // FIXME: Check it's an expression prefix,
 5324|       |    // e.g. (FOO - :lower16:BAR) isn't legal.
 5325|     26|    ARMMCExpr::VariantKind RefKind;
 5326|     26|    if (parsePrefix(RefKind))
  ------------------
  |  Branch (5326:9): [True: 14, False: 12]
  ------------------
 5327|     14|      return true;
 5328|       |
 5329|     12|    const MCExpr *SubExprVal;
 5330|     12|    if (getParser().parseExpression(SubExprVal))
  ------------------
  |  Branch (5330:9): [True: 1, False: 11]
  ------------------
 5331|      1|      return true;
 5332|       |
 5333|     11|    const MCExpr *ExprVal = ARMMCExpr::create(RefKind, SubExprVal,
 5334|     11|                                              getContext());
 5335|     11|    E = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
 5336|     11|    Operands.push_back(ARMOperand::CreateImm(ExprVal, S, E));
 5337|     11|    return false;
 5338|     12|  }
 5339|  1.89k|  case AsmToken::Equal: {
  ------------------
  |  Branch (5339:3): [True: 1.89k, False: 94.3k]
  ------------------
 5340|  1.89k|    S = Parser.getTok().getLoc();
 5341|  1.89k|    if (Mnemonic != "ldr") { // only parse for ldr pseudo (e.g. ldr r0, =val)
  ------------------
  |  Branch (5341:9): [True: 12, False: 1.88k]
  ------------------
 5342|       |        //return Error(S, "unexpected token in operand");
 5343|     12|        ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 5344|     12|        return true;
 5345|     12|    }
 5346|       |
 5347|  1.88k|    Parser.Lex(); // Eat '='
 5348|  1.88k|    const MCExpr *SubExprVal;
 5349|  1.88k|    if (getParser().parseExpression(SubExprVal))
  ------------------
  |  Branch (5349:9): [True: 293, False: 1.59k]
  ------------------
 5350|    293|      return true;
 5351|  1.59k|    E = SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
 5352|       |
 5353|  1.59k|    const MCExpr *CPLoc =
 5354|  1.59k|        getTargetStreamer().addConstantPoolEntry(SubExprVal, S);
 5355|  1.59k|    Operands.push_back(ARMOperand::CreateImm(CPLoc, S, E));
 5356|  1.59k|    return false;
 5357|  1.88k|  }
 5358|  96.2k|  }
 5359|  96.2k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser14parseAM3OffsetERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4718|     58|ARMAsmParser::parseAM3Offset(OperandVector &Operands, unsigned int &ErrorCode) {
 4719|       |  // Check for a post-index addressing register operand. Specifically:
 4720|       |  // am3offset := '+' register
 4721|       |  //              | '-' register
 4722|       |  //              | register
 4723|       |  //              | # imm
 4724|       |  //              | # + imm
 4725|       |  //              | # - imm
 4726|       |
 4727|       |  // This method must return MatchOperand_NoMatch without consuming any tokens
 4728|       |  // in the case where there is no match, as other alternatives take other
 4729|       |  // parse methods.
 4730|     58|  MCAsmParser &Parser = getParser();
 4731|     58|  AsmToken Tok = Parser.getTok();
 4732|     58|  SMLoc S = Tok.getLoc();
 4733|       |
 4734|       |  // Do immediates first, as we always parse those if we have a '#'.
 4735|     58|  if (Parser.getTok().is(AsmToken::Hash) ||
  ------------------
  |  Branch (4735:7): [True: 6, False: 52]
  ------------------
 4736|     52|      Parser.getTok().is(AsmToken::Dollar)) {
  ------------------
  |  Branch (4736:7): [True: 3, False: 49]
  ------------------
 4737|      9|    Parser.Lex(); // Eat '#' or '$'.
 4738|       |    // Explicitly look for a '-', as we need to encode negative zero
 4739|       |    // differently.
 4740|      9|    bool isNegative = Parser.getTok().is(AsmToken::Minus);
 4741|      9|    const MCExpr *Offset;
 4742|      9|    SMLoc E;
 4743|      9|    if (getParser().parseExpression(Offset, E))
  ------------------
  |  Branch (4743:9): [True: 3, False: 6]
  ------------------
 4744|      3|      return MatchOperand_ParseFail;
 4745|      6|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Offset);
 4746|      6|    if (!CE) {
  ------------------
  |  Branch (4746:9): [True: 1, False: 5]
  ------------------
 4747|       |      //Error(S, "constant expression expected");
 4748|      1|      return MatchOperand_ParseFail;
 4749|      1|    }
 4750|       |    // Negative zero is encoded as the flag value INT32_MIN.
 4751|      5|    int32_t Val = CE->getValue();
 4752|      5|    if (isNegative && Val == 0)
  ------------------
  |  Branch (4752:9): [True: 4, False: 1]
  |  Branch (4752:23): [True: 1, False: 3]
  ------------------
 4753|      1|      Val = INT32_MIN;
 4754|       |
 4755|      5|    Operands.push_back(
 4756|      5|      ARMOperand::CreateImm(MCConstantExpr::create(Val, getContext()), S, E));
 4757|       |
 4758|      5|    return MatchOperand_Success;
 4759|      6|  }
 4760|       |
 4761|       |
 4762|     49|  bool haveEaten = false;
 4763|     49|  bool isAdd = true;
 4764|     49|  if (Tok.is(AsmToken::Plus)) {
  ------------------
  |  Branch (4764:7): [True: 1, False: 48]
  ------------------
 4765|      1|    Parser.Lex(); // Eat the '+' token.
 4766|      1|    haveEaten = true;
 4767|     48|  } else if (Tok.is(AsmToken::Minus)) {
  ------------------
  |  Branch (4767:14): [True: 1, False: 47]
  ------------------
 4768|      1|    Parser.Lex(); // Eat the '-' token.
 4769|      1|    isAdd = false;
 4770|      1|    haveEaten = true;
 4771|      1|  }
 4772|       |
 4773|     49|  Tok = Parser.getTok();
 4774|     49|  int Reg = tryParseRegister();
 4775|     49|  if (Reg == -1) {
  ------------------
  |  Branch (4775:7): [True: 33, False: 16]
  ------------------
 4776|     33|    if (!haveEaten)
  ------------------
  |  Branch (4776:9): [True: 31, False: 2]
  ------------------
 4777|     31|      return MatchOperand_NoMatch;
 4778|       |    //Error(Tok.getLoc(), "register expected");
 4779|      2|    return MatchOperand_ParseFail;
 4780|     33|  }
 4781|       |
 4782|     16|  Operands.push_back(ARMOperand::CreatePostIdxReg(Reg, isAdd, ARM_AM::no_shift,
 4783|     16|                                                  0, S, Tok.getEndLoc()));
 4784|       |
 4785|     16|  return MatchOperand_Success;
 4786|     49|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand16CreatePostIdxRegEjbN7llvm_ks6ARM_AM8ShiftOpcEjNS1_5SMLocES4_:
 2773|     57|                   unsigned ShiftImm, SMLoc S, SMLoc E) {
 2774|     57|    auto Op = make_unique<ARMOperand>(k_PostIndexRegister);
 2775|     57|    Op->PostIdxReg.RegNum = RegNum;
 2776|     57|    Op->PostIdxReg.isAdd = isAdd;
 2777|     57|    Op->PostIdxReg.ShiftTy = ShiftTy;
 2778|     57|    Op->PostIdxReg.ShiftImm = ShiftImm;
 2779|     57|    Op->StartLoc = S;
 2780|     57|    Op->EndLoc = E;
 2781|     57|    return Op;
 2782|     57|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21parseBankedRegOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4190|     46|ARMAsmParser::parseBankedRegOperand(OperandVector &Operands, unsigned int &ErrorCode) {
 4191|     46|  MCAsmParser &Parser = getParser();
 4192|     46|  SMLoc S = Parser.getTok().getLoc();
 4193|     46|  const AsmToken &Tok = Parser.getTok();
 4194|     46|  if (!Tok.is(AsmToken::Identifier))
  ------------------
  |  Branch (4194:7): [True: 8, False: 38]
  ------------------
 4195|      8|    return MatchOperand_NoMatch;
 4196|     38|  StringRef RegName = Tok.getString();
 4197|       |
 4198|       |  // The values here come from B9.2.3 of the ARM ARM, where bits 4-0 are SysM
 4199|       |  // and bit 5 is R.
 4200|     38|  unsigned Encoding = StringSwitch<unsigned>(RegName.lower())
 4201|     38|                          .Case("r8_usr", 0x00)
 4202|     38|                          .Case("r9_usr", 0x01)
 4203|     38|                          .Case("r10_usr", 0x02)
 4204|     38|                          .Case("r11_usr", 0x03)
 4205|     38|                          .Case("r12_usr", 0x04)
 4206|     38|                          .Case("sp_usr", 0x05)
 4207|     38|                          .Case("lr_usr", 0x06)
 4208|     38|                          .Case("r8_fiq", 0x08)
 4209|     38|                          .Case("r9_fiq", 0x09)
 4210|     38|                          .Case("r10_fiq", 0x0a)
 4211|     38|                          .Case("r11_fiq", 0x0b)
 4212|     38|                          .Case("r12_fiq", 0x0c)
 4213|     38|                          .Case("sp_fiq", 0x0d)
 4214|     38|                          .Case("lr_fiq", 0x0e)
 4215|     38|                          .Case("lr_irq", 0x10)
 4216|     38|                          .Case("sp_irq", 0x11)
 4217|     38|                          .Case("lr_svc", 0x12)
 4218|     38|                          .Case("sp_svc", 0x13)
 4219|     38|                          .Case("lr_abt", 0x14)
 4220|     38|                          .Case("sp_abt", 0x15)
 4221|     38|                          .Case("lr_und", 0x16)
 4222|     38|                          .Case("sp_und", 0x17)
 4223|     38|                          .Case("lr_mon", 0x1c)
 4224|     38|                          .Case("sp_mon", 0x1d)
 4225|     38|                          .Case("elr_hyp", 0x1e)
 4226|     38|                          .Case("sp_hyp", 0x1f)
 4227|     38|                          .Case("spsr_fiq", 0x2e)
 4228|     38|                          .Case("spsr_irq", 0x30)
 4229|     38|                          .Case("spsr_svc", 0x32)
 4230|     38|                          .Case("spsr_abt", 0x34)
 4231|     38|                          .Case("spsr_und", 0x36)
 4232|     38|                          .Case("spsr_mon", 0x3c)
 4233|     38|                          .Case("spsr_hyp", 0x3e)
 4234|     38|                          .Default(~0U);
 4235|       |
 4236|     38|  if (Encoding == ~0U)
  ------------------
  |  Branch (4236:7): [True: 38, False: 0]
  ------------------
 4237|     38|    return MatchOperand_NoMatch;
 4238|       |
 4239|      0|  Parser.Lex(); // Eat identifier token.
 4240|      0|  Operands.push_back(ARMOperand::CreateBankedReg(Encoding, S));
 4241|      0|  return MatchOperand_Success;
 4242|     38|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser13parseBitfieldERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4590|    218|{
 4591|    218|  MCAsmParser &Parser = getParser();
 4592|    218|  SMLoc S = Parser.getTok().getLoc();
 4593|       |  // The bitfield descriptor is really two operands, the LSB and the width.
 4594|    218|  if (Parser.getTok().isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (4594:7): [True: 21, False: 197]
  ------------------
 4595|     21|      Parser.getTok().isNot(AsmToken::Dollar)) {
  ------------------
  |  Branch (4595:7): [True: 2, False: 19]
  ------------------
 4596|       |    // Error(Parser.getTok().getLoc(), "'#' expected");
 4597|      2|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4598|      2|    return MatchOperand_ParseFail;
 4599|      2|  }
 4600|    216|  Parser.Lex(); // Eat hash token.
 4601|       |
 4602|    216|  const MCExpr *LSBExpr;
 4603|    216|  SMLoc E = Parser.getTok().getLoc();
 4604|    216|  if (getParser().parseExpression(LSBExpr)) {
  ------------------
  |  Branch (4604:7): [True: 23, False: 193]
  ------------------
 4605|       |    // Error(E, "malformed immediate expression");
 4606|     23|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4607|     23|    return MatchOperand_ParseFail;
 4608|     23|  }
 4609|    193|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(LSBExpr);
 4610|    193|  if (!CE) {
  ------------------
  |  Branch (4610:7): [True: 2, False: 191]
  ------------------
 4611|       |    // Error(E, "'lsb' operand must be an immediate");
 4612|      2|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4613|      2|    return MatchOperand_ParseFail;
 4614|      2|  }
 4615|       |
 4616|    191|  int64_t LSB = CE->getValue();
 4617|       |  // The LSB must be in the range [0,31]
 4618|    191|  if (LSB < 0 || LSB > 31) {
  ------------------
  |  Branch (4618:7): [True: 35, False: 156]
  |  Branch (4618:18): [True: 34, False: 122]
  ------------------
 4619|       |    // Error(E, "'lsb' operand must be in the range [0,31]");
 4620|     69|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4621|     69|    return MatchOperand_ParseFail;
 4622|     69|  }
 4623|    122|  E = Parser.getTok().getLoc();
 4624|       |
 4625|       |  // Expect another immediate operand.
 4626|    122|  if (Parser.getTok().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (4626:7): [True: 2, False: 120]
  ------------------
 4627|       |    // Error(Parser.getTok().getLoc(), "too few operands");
 4628|      2|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4629|      2|    return MatchOperand_ParseFail;
 4630|      2|  }
 4631|    120|  Parser.Lex(); // Eat hash token.
 4632|    120|  if (Parser.getTok().isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (4632:7): [True: 37, False: 83]
  ------------------
 4633|     37|      Parser.getTok().isNot(AsmToken::Dollar)) {
  ------------------
  |  Branch (4633:7): [True: 2, False: 35]
  ------------------
 4634|       |    // Error(Parser.getTok().getLoc(), "'#' expected");
 4635|      2|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4636|      2|    return MatchOperand_ParseFail;
 4637|      2|  }
 4638|    118|  Parser.Lex(); // Eat hash token.
 4639|       |
 4640|    118|  const MCExpr *WidthExpr;
 4641|    118|  SMLoc EndLoc;
 4642|    118|  if (getParser().parseExpression(WidthExpr, EndLoc)) {
  ------------------
  |  Branch (4642:7): [True: 12, False: 106]
  ------------------
 4643|       |    // Error(E, "malformed immediate expression");
 4644|     12|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4645|     12|    return MatchOperand_ParseFail;
 4646|     12|  }
 4647|    106|  CE = dyn_cast<MCConstantExpr>(WidthExpr);
 4648|    106|  if (!CE) {
  ------------------
  |  Branch (4648:7): [True: 1, False: 105]
  ------------------
 4649|       |    // Error(E, "'width' operand must be an immediate");
 4650|      1|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4651|      1|    return MatchOperand_ParseFail;
 4652|      1|  }
 4653|       |
 4654|    105|  int64_t Width = CE->getValue();
 4655|       |  // The LSB must be in the range [1,32-lsb]
 4656|    105|  if (Width < 1 || Width > 32 - LSB) {
  ------------------
  |  Branch (4656:7): [True: 35, False: 70]
  |  Branch (4656:20): [True: 50, False: 20]
  ------------------
 4657|       |    // Error(E, "'width' operand must be in the range [1,32-lsb]");
 4658|     85|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4659|     85|    return MatchOperand_ParseFail;
 4660|     85|  }
 4661|       |
 4662|     20|  Operands.push_back(ARMOperand::CreateBitfield(LSB, Width, S, EndLoc));
 4663|       |
 4664|     20|  return MatchOperand_Success;
 4665|    105|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand14CreateBitfieldEjjN7llvm_ks5SMLocES2_:
 2663|     20|  CreateBitfield(unsigned LSB, unsigned Width, SMLoc S, SMLoc E) {
 2664|     20|    auto Op = make_unique<ARMOperand>(k_BitfieldDescriptor);
 2665|     20|    Op->Bitfield.LSB = LSB;
 2666|     20|    Op->Bitfield.Width = Width;
 2667|     20|    Op->StartLoc = S;
 2668|     20|    Op->EndLoc = E;
 2669|     20|    return Op;
 2670|     20|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21parseCoprocNumOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 3280|  1.16k|ARMAsmParser::parseCoprocNumOperand(OperandVector &Operands, unsigned int &ErrorCode) {
 3281|  1.16k|  MCAsmParser &Parser = getParser();
 3282|  1.16k|  SMLoc S = Parser.getTok().getLoc();
 3283|  1.16k|  const AsmToken &Tok = Parser.getTok();
 3284|  1.16k|  if (Tok.isNot(AsmToken::Identifier))
  ------------------
  |  Branch (3284:7): [True: 311, False: 849]
  ------------------
 3285|    311|    return MatchOperand_NoMatch;
 3286|       |
 3287|    849|  int Num = MatchCoprocessorOperandName(Tok.getString(), 'p');
 3288|    849|  if (Num == -1)
  ------------------
  |  Branch (3288:7): [True: 478, False: 371]
  ------------------
 3289|    478|    return MatchOperand_NoMatch;
 3290|       |  // ARMv7 and v8 don't allow cp10/cp11 due to VFP/NEON specific instructions
 3291|    371|  if ((hasV7Ops() || hasV8Ops()) && (Num == 10 || Num == 11))
  ------------------
  |  Branch (3291:8): [True: 361, False: 10]
  |  Branch (3291:22): [True: 0, False: 10]
  |  Branch (3291:38): [True: 6, False: 355]
  |  Branch (3291:51): [True: 7, False: 348]
  ------------------
 3292|     13|    return MatchOperand_NoMatch;
 3293|       |
 3294|    358|  Parser.Lex(); // Eat identifier token.
 3295|    358|  Operands.push_back(ARMOperand::CreateCoprocNum(Num, S));
 3296|    358|  return MatchOperand_Success;
 3297|    371|}
ARMAsmParser.cpp:_ZL27MatchCoprocessorOperandNameN7llvm_ks9StringRefEc:
 3200|  1.71k|static int MatchCoprocessorOperandName(StringRef Name, char CoprocOp) {
 3201|       |  // Use the same layout as the tablegen'erated register name matcher. Ugly,
 3202|       |  // but efficient.
 3203|  1.71k|  if (Name.size() < 2 || Name[0] != CoprocOp)
  ------------------
  |  Branch (3203:7): [True: 134, False: 1.57k]
  |  Branch (3203:26): [True: 666, False: 910]
  ------------------
 3204|    800|    return -1;
 3205|    910|  Name = (Name[1] == 'r') ? Name.drop_front(2) : Name.drop_front();
  ------------------
  |  Branch (3205:10): [True: 8, False: 902]
  ------------------
 3206|       |
 3207|    910|  switch (Name.size()) {
 3208|    126|  default: return -1;
  ------------------
  |  Branch (3208:3): [True: 126, False: 784]
  ------------------
 3209|    697|  case 1:
  ------------------
  |  Branch (3209:3): [True: 697, False: 213]
  ------------------
 3210|    697|    switch (Name[0]) {
 3211|     24|    default:  return -1;
  ------------------
  |  Branch (3211:5): [True: 24, False: 673]
  ------------------
 3212|     93|    case '0': return 0;
  ------------------
  |  Branch (3212:5): [True: 93, False: 604]
  ------------------
 3213|     85|    case '1': return 1;
  ------------------
  |  Branch (3213:5): [True: 85, False: 612]
  ------------------
 3214|      3|    case '2': return 2;
  ------------------
  |  Branch (3214:5): [True: 3, False: 694]
  ------------------
 3215|      4|    case '3': return 3;
  ------------------
  |  Branch (3215:5): [True: 4, False: 693]
  ------------------
 3216|     45|    case '4': return 4;
  ------------------
  |  Branch (3216:5): [True: 45, False: 652]
  ------------------
 3217|     46|    case '5': return 5;
  ------------------
  |  Branch (3217:5): [True: 46, False: 651]
  ------------------
 3218|     99|    case '6': return 6;
  ------------------
  |  Branch (3218:5): [True: 99, False: 598]
  ------------------
 3219|    132|    case '7': return 7;
  ------------------
  |  Branch (3219:5): [True: 132, False: 565]
  ------------------
 3220|      1|    case '8': return 8;
  ------------------
  |  Branch (3220:5): [True: 1, False: 696]
  ------------------
 3221|    165|    case '9': return 9;
  ------------------
  |  Branch (3221:5): [True: 165, False: 532]
  ------------------
 3222|    697|    }
 3223|     87|  case 2:
  ------------------
  |  Branch (3223:3): [True: 87, False: 823]
  ------------------
 3224|     87|    if (Name[0] != '1')
  ------------------
  |  Branch (3224:9): [True: 50, False: 37]
  ------------------
 3225|     50|      return -1;
 3226|     37|    switch (Name[1]) {
 3227|      7|    default:  return -1;
  ------------------
  |  Branch (3227:5): [True: 7, False: 30]
  ------------------
 3228|       |    // CP10 and CP11 are VFP/NEON and so vector instructions should be used.
 3229|       |    // However, old cores (v5/v6) did use them in that way.
 3230|      7|    case '0': return 10;
  ------------------
  |  Branch (3230:5): [True: 7, False: 30]
  ------------------
 3231|     17|    case '1': return 11;
  ------------------
  |  Branch (3231:5): [True: 17, False: 20]
  ------------------
 3232|      1|    case '2': return 12;
  ------------------
  |  Branch (3232:5): [True: 1, False: 36]
  ------------------
 3233|      1|    case '3': return 13;
  ------------------
  |  Branch (3233:5): [True: 1, False: 36]
  ------------------
 3234|      1|    case '4': return 14;
  ------------------
  |  Branch (3234:5): [True: 1, False: 36]
  ------------------
 3235|      3|    case '5': return 15;
  ------------------
  |  Branch (3235:5): [True: 3, False: 34]
  ------------------
 3236|     37|    }
 3237|    910|  }
 3238|    910|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser8hasV7OpsEv:
  267|    416|  bool hasV7Ops() const {
  268|    416|    return getSTI().getFeatureBits()[ARM::HasV7Ops];
  269|    416|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser8hasV8OpsEv:
  270|  9.24k|  bool hasV8Ops() const {
  271|  9.24k|    return getSTI().getFeatureBits()[ARM::HasV8Ops];
  272|  9.24k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand15CreateCoprocNumEjN7llvm_ks5SMLocE:
 2556|    358|  static std::unique_ptr<ARMOperand> CreateCoprocNum(unsigned CopVal, SMLoc S) {
 2557|    358|    auto Op = make_unique<ARMOperand>(k_CoprocNum);
 2558|    358|    Op->Cop.Val = CopVal;
 2559|    358|    Op->StartLoc = S;
 2560|    358|    Op->EndLoc = S;
 2561|    358|    return Op;
 2562|    358|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser24parseCoprocOptionOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 3323|    186|{
 3324|    186|  MCAsmParser &Parser = getParser();
 3325|    186|  SMLoc S = Parser.getTok().getLoc();
 3326|       |
 3327|       |  // If this isn't a '{', this isn't a coprocessor immediate operand.
 3328|    186|  if (Parser.getTok().isNot(AsmToken::LCurly))
  ------------------
  |  Branch (3328:7): [True: 141, False: 45]
  ------------------
 3329|    141|    return MatchOperand_NoMatch;
 3330|     45|  Parser.Lex(); // Eat the '{'
 3331|       |
 3332|     45|  const MCExpr *Expr;
 3333|       |  //SMLoc Loc = Parser.getTok().getLoc();
 3334|     45|  if (getParser().parseExpression(Expr)) {
  ------------------
  |  Branch (3334:7): [True: 7, False: 38]
  ------------------
 3335|       |    //Error(Loc, "illegal expression");
 3336|      7|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3337|      7|    return MatchOperand_ParseFail;
 3338|      7|  }
 3339|     38|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr);
 3340|     38|  if (!CE || CE->getValue() < 0 || CE->getValue() > 255) {
  ------------------
  |  Branch (3340:7): [True: 1, False: 37]
  |  Branch (3340:14): [True: 30, False: 7]
  |  Branch (3340:36): [True: 6, False: 1]
  ------------------
 3341|       |    //Error(Loc, "coprocessor option must be an immediate in range [0, 255]");
 3342|     37|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3343|     37|    return MatchOperand_ParseFail;
 3344|     37|  }
 3345|      1|  int Val = CE->getValue();
 3346|       |
 3347|       |  // Check for and consume the closing '}'
 3348|      1|  if (Parser.getTok().isNot(AsmToken::RCurly))
  ------------------
  |  Branch (3348:7): [True: 1, False: 0]
  ------------------
 3349|      1|    return MatchOperand_ParseFail;
 3350|      0|  SMLoc E = Parser.getTok().getEndLoc();
 3351|      0|  Parser.Lex(); // Eat the '}'
 3352|       |
 3353|      0|  Operands.push_back(ARMOperand::CreateCoprocOption(Val, S, E));
 3354|      0|  return MatchOperand_Success;
 3355|      1|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21parseCoprocRegOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 3303|  1.06k|ARMAsmParser::parseCoprocRegOperand(OperandVector &Operands, unsigned int &ErrorCode) {
 3304|  1.06k|  MCAsmParser &Parser = getParser();
 3305|  1.06k|  SMLoc S = Parser.getTok().getLoc();
 3306|  1.06k|  const AsmToken &Tok = Parser.getTok();
 3307|  1.06k|  if (Tok.isNot(AsmToken::Identifier))
  ------------------
  |  Branch (3307:7): [True: 200, False: 861]
  ------------------
 3308|    200|    return MatchOperand_NoMatch;
 3309|       |
 3310|    861|  int Reg = MatchCoprocessorOperandName(Tok.getString(), 'c');
 3311|    861|  if (Reg == -1)
  ------------------
  |  Branch (3311:7): [True: 529, False: 332]
  ------------------
 3312|    529|    return MatchOperand_NoMatch;
 3313|       |
 3314|    332|  Parser.Lex(); // Eat identifier token.
 3315|    332|  Operands.push_back(ARMOperand::CreateCoprocReg(Reg, S));
 3316|    332|  return MatchOperand_Success;
 3317|    861|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand15CreateCoprocRegEjN7llvm_ks5SMLocE:
 2564|    332|  static std::unique_ptr<ARMOperand> CreateCoprocReg(unsigned CopVal, SMLoc S) {
 2565|    332|    auto Op = make_unique<ARMOperand>(k_CoprocReg);
 2566|    332|    Op->Cop.Val = CopVal;
 2567|    332|    Op->StartLoc = S;
 2568|    332|    Op->EndLoc = S;
 2569|    332|    return Op;
 2570|    332|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser10parseFPImmERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 5133|  1.86k|ARMAsmParser::parseFPImm(OperandVector &Operands, unsigned int &ErrorCode) {
 5134|  1.86k|  MCAsmParser &Parser = getParser();
 5135|       |  // Anything that can accept a floating point constant as an operand
 5136|       |  // needs to go through here, as the regular parseExpression is
 5137|       |  // integer only.
 5138|       |  //
 5139|       |  // This routine still creates a generic Immediate operand, containing
 5140|       |  // a bitcast of the 64-bit floating point value. The various operands
 5141|       |  // that accept floats can check whether the value is valid for them
 5142|       |  // via the standard is*() predicates.
 5143|       |
 5144|  1.86k|  SMLoc S = Parser.getTok().getLoc();
 5145|       |
 5146|  1.86k|  if (Parser.getTok().isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (5146:7): [True: 1.82k, False: 36]
  ------------------
 5147|  1.82k|      Parser.getTok().isNot(AsmToken::Dollar))
  ------------------
  |  Branch (5147:7): [True: 1.60k, False: 224]
  ------------------
 5148|  1.60k|    return MatchOperand_NoMatch;
 5149|       |
 5150|       |  // Disambiguate the VMOV forms that can accept an FP immediate.
 5151|       |  // vmov.f32 <sreg>, #imm
 5152|       |  // vmov.f64 <dreg>, #imm
 5153|       |  // vmov.f32 <dreg>, #imm  @ vector f32x2
 5154|       |  // vmov.f32 <qreg>, #imm  @ vector f32x4
 5155|       |  //
 5156|       |  // There are also the NEON VMOV instructions which expect an
 5157|       |  // integer constant. Make sure we don't try to parse an FPImm
 5158|       |  // for these:
 5159|       |  // vmov.i{8|16|32|64} <dreg|qreg>, #imm
 5160|    260|  ARMOperand &TyOp = static_cast<ARMOperand &>(*Operands[2]);
 5161|    260|  bool isVmovf = TyOp.isToken() &&
  ------------------
  |  Branch (5161:18): [True: 171, False: 89]
  ------------------
 5162|    171|                 (TyOp.getToken() == ".f32" || TyOp.getToken() == ".f64" ||
  ------------------
  |  Branch (5162:19): [True: 52, False: 119]
  |  Branch (5162:48): [True: 1, False: 118]
  ------------------
 5163|    118|                  TyOp.getToken() == ".f16");
  ------------------
  |  Branch (5163:19): [True: 0, False: 118]
  ------------------
 5164|    260|  ARMOperand &Mnemonic = static_cast<ARMOperand &>(*Operands[0]);
 5165|    260|  bool isFconst = Mnemonic.isToken() && (Mnemonic.getToken() == "fconstd" ||
  ------------------
  |  Branch (5165:19): [True: 260, False: 0]
  |  Branch (5165:42): [True: 2, False: 258]
  ------------------
 5166|    258|                                         Mnemonic.getToken() == "fconsts");
  ------------------
  |  Branch (5166:42): [True: 89, False: 169]
  ------------------
 5167|    260|  if (!(isVmovf || isFconst))
  ------------------
  |  Branch (5167:9): [True: 53, False: 207]
  |  Branch (5167:20): [True: 91, False: 116]
  ------------------
 5168|    116|    return MatchOperand_NoMatch;
 5169|       |
 5170|    144|  Parser.Lex(); // Eat '#' or '$'.
 5171|       |
 5172|       |  // Handle negation, as that still comes through as a separate token.
 5173|    144|  bool isNegative = false;
 5174|    144|  if (Parser.getTok().is(AsmToken::Minus)) {
  ------------------
  |  Branch (5174:7): [True: 86, False: 58]
  ------------------
 5175|     86|    isNegative = true;
 5176|     86|    Parser.Lex();
 5177|     86|  }
 5178|    144|  const AsmToken &Tok = Parser.getTok();
 5179|       |  //SMLoc Loc = Tok.getLoc();
 5180|    144|  if (Tok.is(AsmToken::Real) && isVmovf) {
  ------------------
  |  Branch (5180:7): [True: 51, False: 93]
  |  Branch (5180:33): [True: 50, False: 1]
  ------------------
 5181|     50|    APFloat RealVal(APFloat::IEEEsingle, Tok.getString());
 5182|     50|    if (RealVal.bitcastToAPInt().getActiveBits() > 64)
  ------------------
  |  Branch (5182:9): [True: 0, False: 50]
  ------------------
 5183|      0|        return MatchOperand_ParseFail;
 5184|     50|    uint64_t IntVal = RealVal.bitcastToAPInt().getZExtValue();
 5185|       |    // If we had a '-' in front, toggle the sign bit.
 5186|     50|    IntVal ^= (uint64_t)isNegative << 31;
 5187|     50|    Parser.Lex(); // Eat the token.
 5188|     50|    Operands.push_back(ARMOperand::CreateImm(
 5189|     50|          MCConstantExpr::create(IntVal, getContext()),
 5190|     50|          S, Parser.getTok().getLoc()));
 5191|     50|    return MatchOperand_Success;
 5192|     50|  }
 5193|       |  // Also handle plain integers. Instructions which allow floating point
 5194|       |  // immediates also allow a raw encoded 8-bit value.
 5195|     94|  if (Tok.is(AsmToken::Integer) && isFconst) {
  ------------------
  |  Branch (5195:7): [True: 89, False: 5]
  |  Branch (5195:36): [True: 87, False: 2]
  ------------------
 5196|     87|    bool valid;
 5197|     87|    int64_t Val = Tok.getIntVal(valid);
 5198|     87|    if (!valid)
  ------------------
  |  Branch (5198:9): [True: 0, False: 87]
  ------------------
 5199|      0|      return MatchOperand_ParseFail;
 5200|     87|    Parser.Lex(); // Eat the token.
 5201|     87|    if (Val > 255 || Val < 0) {
  ------------------
  |  Branch (5201:9): [True: 1, False: 86]
  |  Branch (5201:22): [True: 0, False: 86]
  ------------------
 5202|       |      //Error(Loc, "encoded floating point value out of range");
 5203|      1|      return MatchOperand_ParseFail;
 5204|      1|    }
 5205|     86|    float RealVal = ARM_AM::getFPImmFloat(Val);
 5206|     86|    if (APFloat(RealVal).bitcastToAPInt().getActiveBits() > 64)
  ------------------
  |  Branch (5206:9): [True: 0, False: 86]
  ------------------
 5207|      0|        return MatchOperand_ParseFail;
 5208|     86|    Val = APFloat(RealVal).bitcastToAPInt().getZExtValue();
 5209|       |
 5210|     86|    Operands.push_back(ARMOperand::CreateImm(
 5211|     86|        MCConstantExpr::create(Val, getContext()), S,
 5212|     86|        Parser.getTok().getLoc()));
 5213|     86|    return MatchOperand_Success;
 5214|     86|  }
 5215|       |
 5216|       |  //Error(Loc, "invalid floating point immediate");
 5217|      7|  return MatchOperand_ParseFail;
 5218|     94|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser30parseInstSyncBarrierOptOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 3946|    370|ARMAsmParser::parseInstSyncBarrierOptOperand(OperandVector &Operands, unsigned int &ErrorCode) {
 3947|    370|  MCAsmParser &Parser = getParser();
 3948|    370|  SMLoc S = Parser.getTok().getLoc();
 3949|    370|  const AsmToken &Tok = Parser.getTok();
 3950|    370|  unsigned Opt;
 3951|       |
 3952|    370|  if (Tok.is(AsmToken::Identifier)) {
  ------------------
  |  Branch (3952:7): [True: 94, False: 276]
  ------------------
 3953|     94|    StringRef OptStr = Tok.getString();
 3954|       |
 3955|     94|    if (OptStr.equals_lower("sy"))
  ------------------
  |  Branch (3955:9): [True: 78, False: 16]
  ------------------
 3956|     78|      Opt = ARM_ISB::SY;
 3957|     16|    else
 3958|     16|      return MatchOperand_NoMatch;
 3959|       |
 3960|     78|    Parser.Lex(); // Eat identifier token.
 3961|    276|  } else if (Tok.is(AsmToken::Hash) ||
  ------------------
  |  Branch (3961:14): [True: 96, False: 180]
  ------------------
 3962|    180|             Tok.is(AsmToken::Dollar) ||
  ------------------
  |  Branch (3962:14): [True: 76, False: 104]
  ------------------
 3963|    270|             Tok.is(AsmToken::Integer)) {
  ------------------
  |  Branch (3963:14): [True: 98, False: 6]
  ------------------
 3964|    270|    if (Parser.getTok().isNot(AsmToken::Integer))
  ------------------
  |  Branch (3964:9): [True: 172, False: 98]
  ------------------
 3965|    172|      Parser.Lex(); // Eat '#' or '$'.
 3966|       |
 3967|       |    //SMLoc Loc = Parser.getTok().getLoc();
 3968|       |
 3969|    270|    const MCExpr *ISBarrierID;
 3970|    270|    if (getParser().parseExpression(ISBarrierID)) {
  ------------------
  |  Branch (3970:9): [True: 69, False: 201]
  ------------------
 3971|       |      //Error(Loc, "illegal expression");
 3972|     69|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3973|     69|      return MatchOperand_ParseFail;
 3974|     69|    }
 3975|       |
 3976|    201|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(ISBarrierID);
 3977|    201|    if (!CE) {
  ------------------
  |  Branch (3977:9): [True: 5, False: 196]
  ------------------
 3978|       |      //Error(Loc, "constant expression expected");
 3979|      5|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3980|      5|      return MatchOperand_ParseFail;
 3981|      5|    }
 3982|       |
 3983|    196|    int Val = CE->getValue();
 3984|    196|    if (Val & ~0xf) {
  ------------------
  |  Branch (3984:9): [True: 8, False: 188]
  ------------------
 3985|       |      //Error(Loc, "immediate value out of range");
 3986|      8|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3987|      8|      return MatchOperand_ParseFail;
 3988|      8|    }
 3989|       |
 3990|    188|    Opt = ARM_ISB::RESERVED_0 + Val;
 3991|    188|  } else
 3992|      6|    return MatchOperand_ParseFail;
 3993|       |
 3994|    266|  Operands.push_back(ARMOperand::CreateInstSyncBarrierOpt(
 3995|    266|          (ARM_ISB::InstSyncBOpt)Opt, S));
 3996|    266|  return MatchOperand_Success;
 3997|    370|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand24CreateInstSyncBarrierOptEN7llvm_ks7ARM_ISB12InstSyncBOptENS1_5SMLocE:
 2794|    266|  CreateInstSyncBarrierOpt(ARM_ISB::InstSyncBOpt Opt, SMLoc S) {
 2795|    266|    auto Op = make_unique<ARMOperand>(k_InstSyncBarrierOpt);
 2796|    266|    Op->ISBOpt.Val = Opt;
 2797|    266|    Op->StartLoc = S;
 2798|    266|    Op->EndLoc = S;
 2799|    266|    return Op;
 2800|    266|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseMSRMaskOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4037|  1.75k|ARMAsmParser::parseMSRMaskOperand(OperandVector &Operands, unsigned int &ErrorCode) {
 4038|  1.75k|  MCAsmParser &Parser = getParser();
 4039|  1.75k|  SMLoc S = Parser.getTok().getLoc();
 4040|  1.75k|  const AsmToken &Tok = Parser.getTok();
 4041|  1.75k|  if (!Tok.is(AsmToken::Identifier))
  ------------------
  |  Branch (4041:7): [True: 61, False: 1.69k]
  ------------------
 4042|     61|    return MatchOperand_NoMatch;
 4043|  1.69k|  StringRef Mask = Tok.getString();
 4044|       |
 4045|  1.69k|  if (isMClass()) {
  ------------------
  |  Branch (4045:7): [True: 337, False: 1.35k]
  ------------------
 4046|       |    // See ARMv6-M 10.1.1
 4047|    337|    std::string Name = Mask.lower();
 4048|    337|    unsigned FlagsVal = StringSwitch<unsigned>(Name)
 4049|       |      // Note: in the documentation:
 4050|       |      //  ARM deprecates using MSR APSR without a _<bits> qualifier as an alias
 4051|       |      //  for MSR APSR_nzcvq.
 4052|       |      // but we do make it an alias here.  This is so to get the "mask encoding"
 4053|       |      // bits correct on MSR APSR writes.
 4054|       |      //
 4055|       |      // FIXME: Note the 0xc00 "mask encoding" bits version of the registers
 4056|       |      // should really only be allowed when writing a special register.  Note
 4057|       |      // they get dropped in the MRS instruction reading a special register as
 4058|       |      // the SYSm field is only 8 bits.
 4059|    337|      .Case("apsr", 0x800)
 4060|    337|      .Case("apsr_nzcvq", 0x800)
 4061|    337|      .Case("apsr_g", 0x400)
 4062|    337|      .Case("apsr_nzcvqg", 0xc00)
 4063|    337|      .Case("iapsr", 0x801)
 4064|    337|      .Case("iapsr_nzcvq", 0x801)
 4065|    337|      .Case("iapsr_g", 0x401)
 4066|    337|      .Case("iapsr_nzcvqg", 0xc01)
 4067|    337|      .Case("eapsr", 0x802)
 4068|    337|      .Case("eapsr_nzcvq", 0x802)
 4069|    337|      .Case("eapsr_g", 0x402)
 4070|    337|      .Case("eapsr_nzcvqg", 0xc02)
 4071|    337|      .Case("xpsr", 0x803)
 4072|    337|      .Case("xpsr_nzcvq", 0x803)
 4073|    337|      .Case("xpsr_g", 0x403)
 4074|    337|      .Case("xpsr_nzcvqg", 0xc03)
 4075|    337|      .Case("ipsr", 0x805)
 4076|    337|      .Case("epsr", 0x806)
 4077|    337|      .Case("iepsr", 0x807)
 4078|    337|      .Case("msp", 0x808)
 4079|    337|      .Case("psp", 0x809)
 4080|    337|      .Case("primask", 0x810)
 4081|    337|      .Case("basepri", 0x811)
 4082|    337|      .Case("basepri_max", 0x812)
 4083|    337|      .Case("faultmask", 0x813)
 4084|    337|      .Case("control", 0x814)
 4085|    337|      .Case("msplim", 0x80a)
 4086|    337|      .Case("psplim", 0x80b)
 4087|    337|      .Case("msp_ns", 0x888)
 4088|    337|      .Case("psp_ns", 0x889)
 4089|    337|      .Case("msplim_ns", 0x88a)
 4090|    337|      .Case("psplim_ns", 0x88b)
 4091|    337|      .Case("primask_ns", 0x890)
 4092|    337|      .Case("basepri_ns", 0x891)
 4093|    337|      .Case("basepri_max_ns", 0x892)
 4094|    337|      .Case("faultmask_ns", 0x893)
 4095|    337|      .Case("control_ns", 0x894)
 4096|    337|      .Case("sp_ns", 0x898)
 4097|    337|      .Default(~0U);
 4098|       |
 4099|    337|    if (FlagsVal == ~0U)
  ------------------
  |  Branch (4099:9): [True: 260, False: 77]
  ------------------
 4100|    260|      return MatchOperand_NoMatch;
 4101|       |
 4102|     77|    if (!hasDSP() && (FlagsVal & 0x400))
  ------------------
  |  Branch (4102:9): [True: 77, False: 0]
  |  Branch (4102:22): [True: 32, False: 45]
  ------------------
 4103|       |      // The _g and _nzcvqg versions are only valid if the DSP extension is
 4104|       |      // available.
 4105|     32|      return MatchOperand_NoMatch;
 4106|       |
 4107|     45|    if (!hasV7Ops() && FlagsVal >= 0x811 && FlagsVal <= 0x813)
  ------------------
  |  Branch (4107:9): [True: 22, False: 23]
  |  Branch (4107:24): [True: 5, False: 17]
  |  Branch (4107:45): [True: 1, False: 4]
  ------------------
 4108|       |      // basepri, basepri_max and faultmask only valid for V7m.
 4109|      1|      return MatchOperand_NoMatch;
 4110|       |
 4111|     44|    if (!has8MSecExt() && (FlagsVal == 0x80a || FlagsVal == 0x80b ||
  ------------------
  |  Branch (4111:9): [True: 21, False: 23]
  |  Branch (4111:28): [True: 0, False: 21]
  |  Branch (4111:49): [True: 0, False: 21]
  ------------------
 4112|     21|                             (FlagsVal > 0x814 && FlagsVal < 0xc00)))
  ------------------
  |  Branch (4112:31): [True: 3, False: 18]
  |  Branch (4112:51): [True: 3, False: 0]
  ------------------
 4113|      3|      return MatchOperand_NoMatch;
 4114|       |
 4115|     41|    if (!hasV8MMainline() && (FlagsVal == 0x88a || FlagsVal == 0x88b ||
  ------------------
  |  Branch (4115:9): [True: 18, False: 23]
  |  Branch (4115:31): [True: 0, False: 18]
  |  Branch (4115:52): [True: 0, False: 18]
  ------------------
 4116|     18|                              (FlagsVal > 0x890 && FlagsVal <= 0x893)))
  ------------------
  |  Branch (4116:32): [True: 0, False: 18]
  |  Branch (4116:52): [True: 0, False: 0]
  ------------------
 4117|      0|      return MatchOperand_NoMatch;
 4118|       |
 4119|     41|    Parser.Lex(); // Eat identifier token.
 4120|     41|    Operands.push_back(ARMOperand::CreateMSRMask(FlagsVal, S));
 4121|     41|    return MatchOperand_Success;
 4122|     41|  }
 4123|       |
 4124|       |  // Split spec_reg from flag, example: CPSR_sxf => "CPSR" and "sxf"
 4125|  1.35k|  size_t Start = 0, Next = Mask.find('_');
 4126|  1.35k|  StringRef Flags = "";
 4127|  1.35k|  std::string SpecReg = Mask.slice(Start, Next).lower();
 4128|  1.35k|  if (Next != StringRef::npos)
  ------------------
  |  Branch (4128:7): [True: 373, False: 982]
  ------------------
 4129|    373|    Flags = Mask.slice(Next+1, Mask.size());
 4130|       |
 4131|       |  // FlagsVal contains the complete mask:
 4132|       |  // 3-0: Mask
 4133|       |  // 4: Special Reg (cpsr, apsr => 0; spsr => 1)
 4134|  1.35k|  unsigned FlagsVal = 0;
 4135|       |
 4136|  1.35k|  if (SpecReg == "apsr") {
  ------------------
  |  Branch (4136:7): [True: 109, False: 1.24k]
  ------------------
 4137|    109|    FlagsVal = StringSwitch<unsigned>(Flags)
 4138|    109|    .Case("nzcvq",  0x8) // same as CPSR_f
 4139|    109|    .Case("g",      0x4) // same as CPSR_s
 4140|    109|    .Case("nzcvqg", 0xc) // same as CPSR_fs
 4141|    109|    .Default(~0U);
 4142|       |
 4143|    109|    if (FlagsVal == ~0U) {
  ------------------
  |  Branch (4143:9): [True: 74, False: 35]
  ------------------
 4144|     74|      if (!Flags.empty())
  ------------------
  |  Branch (4144:11): [True: 41, False: 33]
  ------------------
 4145|     41|        return MatchOperand_NoMatch;
 4146|     33|      else
 4147|     33|        FlagsVal = 8; // No flag
 4148|     74|    }
 4149|  1.24k|  } else if (SpecReg == "cpsr" || SpecReg == "spsr") {
  ------------------
  |  Branch (4149:14): [True: 60, False: 1.18k]
  |  Branch (4149:35): [True: 44, False: 1.14k]
  ------------------
 4150|       |    // cpsr_all is an alias for cpsr_fc, as is plain cpsr.
 4151|    104|    if (Flags == "all" || Flags == "")
  ------------------
  |  Branch (4151:9): [True: 0, False: 104]
  |  Branch (4151:9): [True: 40, False: 64]
  |  Branch (4151:27): [True: 40, False: 64]
  ------------------
 4152|     40|      Flags = "fc";
 4153|    263|    for (int i = 0, e = Flags.size(); i != e; ++i) {
  ------------------
  |  Branch (4153:39): [True: 215, False: 48]
  ------------------
 4154|    215|      unsigned Flag = StringSwitch<unsigned>(Flags.substr(i, 1))
 4155|    215|      .Case("c", 1)
 4156|    215|      .Case("x", 2)
 4157|    215|      .Case("s", 4)
 4158|    215|      .Case("f", 8)
 4159|    215|      .Default(~0U);
 4160|       |
 4161|       |      // If some specific flag is already set, it means that some letter is
 4162|       |      // present more than once, this is not acceptable.
 4163|    215|      if (FlagsVal == ~0U || (FlagsVal & Flag))
  ------------------
  |  Branch (4163:11): [True: 37, False: 178]
  |  Branch (4163:30): [True: 19, False: 159]
  ------------------
 4164|     56|        return MatchOperand_NoMatch;
 4165|    159|      FlagsVal |= Flag;
 4166|    159|    }
 4167|    104|  } else // No match for special register.
 4168|  1.14k|    return MatchOperand_NoMatch;
 4169|       |
 4170|       |  // Special register without flags is NOT equivalent to "fc" flags.
 4171|       |  // NOTE: This is a divergence from gas' behavior.  Uncommenting the following
 4172|       |  // two lines would enable gas compatibility at the expense of breaking
 4173|       |  // round-tripping.
 4174|       |  //
 4175|       |  // if (!FlagsVal)
 4176|       |  //  FlagsVal = 0x9;
 4177|       |
 4178|       |  // Bit 4: Special Reg (cpsr, apsr => 0; spsr => 1)
 4179|    116|  if (SpecReg == "spsr")
  ------------------
  |  Branch (4179:7): [True: 23, False: 93]
  ------------------
 4180|     23|    FlagsVal |= 16;
 4181|       |
 4182|    116|  Parser.Lex(); // Eat identifier token.
 4183|    116|  Operands.push_back(ARMOperand::CreateMSRMask(FlagsVal, S));
 4184|    116|  return MatchOperand_Success;
 4185|  1.35k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser6hasDSPEv:
  285|     77|  bool hasDSP() const {
  286|     77|    return getSTI().getFeatureBits()[ARM::FeatureDSP];
  287|     77|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser11has8MSecExtEv:
  279|     44|  bool has8MSecExt() const {
  280|     44|    return getSTI().getFeatureBits()[ARM::Feature8MSecExt];
  281|     44|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser14hasV8MMainlineEv:
  276|     41|  bool hasV8MMainline() const {
  277|     41|    return getSTI().getFeatureBits()[ARM::HasV8MMainlineOps];
  278|     41|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand13CreateMSRMaskEjN7llvm_ks5SMLocE:
 2811|    157|  static std::unique_ptr<ARMOperand> CreateMSRMask(unsigned MMask, SMLoc S) {
 2812|    157|    auto Op = make_unique<ARMOperand>(k_MSRMask);
 2813|    157|    Op->MMask.Val = MMask;
 2814|    157|    Op->StartLoc = S;
 2815|    157|    Op->EndLoc = S;
 2816|    157|    return Op;
 2817|    157|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser25parseMemBarrierOptOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 3870|  2.12k|ARMAsmParser::parseMemBarrierOptOperand(OperandVector &Operands, unsigned int &ErrorCode) {
 3871|  2.12k|  MCAsmParser &Parser = getParser();
 3872|  2.12k|  SMLoc S = Parser.getTok().getLoc();
 3873|  2.12k|  const AsmToken &Tok = Parser.getTok();
 3874|  2.12k|  unsigned Opt;
 3875|       |
 3876|  2.12k|  if (Tok.is(AsmToken::Identifier)) {
  ------------------
  |  Branch (3876:7): [True: 1.99k, False: 131]
  ------------------
 3877|  1.99k|    StringRef OptStr = Tok.getString();
 3878|       |
 3879|  1.99k|    Opt = StringSwitch<unsigned>(OptStr.slice(0, OptStr.size()).lower())
 3880|  1.99k|      .Case("sy",    ARM_MB::SY)
 3881|  1.99k|      .Case("st",    ARM_MB::ST)
 3882|  1.99k|      .Case("ld",    ARM_MB::LD)
 3883|  1.99k|      .Case("sh",    ARM_MB::ISH)
 3884|  1.99k|      .Case("ish",   ARM_MB::ISH)
 3885|  1.99k|      .Case("shst",  ARM_MB::ISHST)
 3886|  1.99k|      .Case("ishst", ARM_MB::ISHST)
 3887|  1.99k|      .Case("ishld", ARM_MB::ISHLD)
 3888|  1.99k|      .Case("nsh",   ARM_MB::NSH)
 3889|  1.99k|      .Case("un",    ARM_MB::NSH)
 3890|  1.99k|      .Case("nshst", ARM_MB::NSHST)
 3891|  1.99k|      .Case("nshld", ARM_MB::NSHLD)
 3892|  1.99k|      .Case("unst",  ARM_MB::NSHST)
 3893|  1.99k|      .Case("osh",   ARM_MB::OSH)
 3894|  1.99k|      .Case("oshst", ARM_MB::OSHST)
 3895|  1.99k|      .Case("oshld", ARM_MB::OSHLD)
 3896|  1.99k|      .Default(~0U);
 3897|       |
 3898|       |    // ishld, oshld, nshld and ld are only available from ARMv8.
 3899|  1.99k|    if (!hasV8Ops() && (Opt == ARM_MB::ISHLD || Opt == ARM_MB::OSHLD ||
  ------------------
  |  Branch (3899:9): [True: 1.98k, False: 11]
  |  Branch (3899:25): [True: 1, False: 1.98k]
  |  Branch (3899:49): [True: 1, False: 1.98k]
  ------------------
 3900|  1.98k|                        Opt == ARM_MB::NSHLD || Opt == ARM_MB::LD))
  ------------------
  |  Branch (3900:25): [True: 1, False: 1.98k]
  |  Branch (3900:49): [True: 1, False: 1.98k]
  ------------------
 3901|      4|      Opt = ~0U;
 3902|       |
 3903|  1.99k|    if (Opt == ~0U)
  ------------------
  |  Branch (3903:9): [True: 1.29k, False: 698]
  ------------------
 3904|  1.29k|      return MatchOperand_NoMatch;
 3905|       |
 3906|    698|    Parser.Lex(); // Eat identifier token.
 3907|    698|  } else if (Tok.is(AsmToken::Hash) ||
  ------------------
  |  Branch (3907:14): [True: 56, False: 75]
  ------------------
 3908|     75|             Tok.is(AsmToken::Dollar) ||
  ------------------
  |  Branch (3908:14): [True: 27, False: 48]
  ------------------
 3909|    123|             Tok.is(AsmToken::Integer)) {
  ------------------
  |  Branch (3909:14): [True: 40, False: 8]
  ------------------
 3910|    123|    if (Parser.getTok().isNot(AsmToken::Integer))
  ------------------
  |  Branch (3910:9): [True: 83, False: 40]
  ------------------
 3911|     83|      Parser.Lex(); // Eat '#' or '$'.
 3912|       |
 3913|       |    //SMLoc Loc = Parser.getTok().getLoc();
 3914|       |
 3915|    123|    const MCExpr *MemBarrierID;
 3916|    123|    if (getParser().parseExpression(MemBarrierID)) {
  ------------------
  |  Branch (3916:9): [True: 39, False: 84]
  ------------------
 3917|       |      //Error(Loc, "illegal expression");
 3918|     39|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3919|     39|      return MatchOperand_ParseFail;
 3920|     39|    }
 3921|       |
 3922|     84|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(MemBarrierID);
 3923|     84|    if (!CE) {
  ------------------
  |  Branch (3923:9): [True: 2, False: 82]
  ------------------
 3924|       |      //Error(Loc, "constant expression expected");
 3925|      2|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3926|      2|      return MatchOperand_ParseFail;
 3927|      2|    }
 3928|       |
 3929|     82|    int Val = CE->getValue();
 3930|     82|    if (Val & ~0xf) {
  ------------------
  |  Branch (3930:9): [True: 18, False: 64]
  ------------------
 3931|       |      //Error(Loc, "immediate value out of range");
 3932|     18|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3933|     18|      return MatchOperand_ParseFail;
 3934|     18|    }
 3935|       |
 3936|     64|    Opt = ARM_MB::RESERVED_0 + Val;
 3937|     64|  } else
 3938|      8|    return MatchOperand_ParseFail;
 3939|       |
 3940|    762|  Operands.push_back(ARMOperand::CreateMemBarrierOpt((ARM_MB::MemBOpt)Opt, S));
 3941|    762|  return MatchOperand_Success;
 3942|  2.12k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand19CreateMemBarrierOptEN7llvm_ks6ARM_MB7MemBOptENS1_5SMLocE:
 2785|    762|                                                         SMLoc S) {
 2786|    762|    auto Op = make_unique<ARMOperand>(k_MemBarrierOpt);
 2787|    762|    Op->MBOpt.Val = Opt;
 2788|    762|    Op->StartLoc = S;
 2789|    762|    Op->EndLoc = S;
 2790|    762|    return Op;
 2791|    762|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser11parseModImmERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4466|  7.85k|{
 4467|  7.85k|  MCAsmParser &Parser = getParser();
 4468|  7.85k|  MCAsmLexer &Lexer = getLexer();
 4469|  7.85k|  int64_t Imm1, Imm2;
 4470|       |
 4471|  7.85k|  SMLoc S = Parser.getTok().getLoc();
 4472|       |
 4473|       |  // 1) A mod_imm operand can appear in the place of a register name:
 4474|       |  //   add r0, #mod_imm
 4475|       |  //   add r0, r0, #mod_imm
 4476|       |  // to correctly handle the latter, we bail out as soon as we see an
 4477|       |  // identifier.
 4478|       |  //
 4479|       |  // 2) Similarly, we do not want to parse into complex operands:
 4480|       |  //   mov r0, #mod_imm
 4481|       |  //   mov r0, :lower16:(_foo)
 4482|  7.85k|  if (Parser.getTok().is(AsmToken::Identifier) ||
  ------------------
  |  Branch (4482:7): [True: 3.03k, False: 4.81k]
  ------------------
 4483|  4.81k|      Parser.getTok().is(AsmToken::Colon))
  ------------------
  |  Branch (4483:7): [True: 1, False: 4.81k]
  ------------------
 4484|  3.03k|    return MatchOperand_NoMatch;
 4485|       |
 4486|       |  // Hash (dollar) is optional as per the ARMARM
 4487|  4.81k|  if (Parser.getTok().is(AsmToken::Hash) ||
  ------------------
  |  Branch (4487:7): [True: 495, False: 4.32k]
  ------------------
 4488|  4.32k|      Parser.getTok().is(AsmToken::Dollar)) {
  ------------------
  |  Branch (4488:7): [True: 315, False: 4.00k]
  ------------------
 4489|       |    // Avoid parsing into complex operands (#:)
 4490|    810|    if (Lexer.peekTok().is(AsmToken::Colon))
  ------------------
  |  Branch (4490:9): [True: 1, False: 809]
  ------------------
 4491|      1|      return MatchOperand_NoMatch;
 4492|       |
 4493|       |    // Eat the hash (dollar)
 4494|    809|    Parser.Lex();
 4495|    809|  }
 4496|       |
 4497|  4.81k|  SMLoc Sx1, Ex1;
 4498|  4.81k|  Sx1 = Parser.getTok().getLoc();
 4499|  4.81k|  const MCExpr *Imm1Exp;
 4500|  4.81k|  if (getParser().parseExpression(Imm1Exp, Ex1)) {
  ------------------
  |  Branch (4500:7): [True: 924, False: 3.89k]
  ------------------
 4501|       |    //Error(Sx1, "malformed expression");
 4502|    924|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4503|    924|    return MatchOperand_ParseFail;
 4504|    924|  }
 4505|       |
 4506|  3.89k|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Imm1Exp);
 4507|       |
 4508|  3.89k|  if (CE) {
  ------------------
  |  Branch (4508:7): [True: 3.65k, False: 240]
  ------------------
 4509|       |    // Immediate must fit within 32-bits
 4510|  3.65k|    Imm1 = CE->getValue();
 4511|  3.65k|    int Enc = ARM_AM::getSOImmVal(Imm1);
 4512|  3.65k|    if (Enc != -1 && Parser.getTok().is(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4512:9): [True: 2.76k, False: 890]
  |  Branch (4512:22): [True: 2.29k, False: 461]
  ------------------
 4513|       |      // We have a match!
 4514|  2.29k|      Operands.push_back(ARMOperand::CreateModImm((Enc & 0xFF),
 4515|  2.29k|                                                  (Enc & 0xF00) >> 7,
 4516|  2.29k|                                                  Sx1, Ex1));
 4517|  2.29k|      return MatchOperand_Success;
 4518|  2.29k|    }
 4519|       |
 4520|       |    // We have parsed an immediate which is not for us, fallback to a plain
 4521|       |    // immediate. This can happen for instruction aliases. For an example,
 4522|       |    // ARMInstrInfo.td defines the alias [mov <-> mvn] which can transform
 4523|       |    // a mov (mvn) with a mod_imm_neg/mod_imm_not operand into the opposite
 4524|       |    // instruction with a mod_imm operand. The alias is defined such that the
 4525|       |    // parser method is shared, that's why we have to do this here.
 4526|  1.35k|    if (Parser.getTok().is(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (4526:9): [True: 829, False: 522]
  ------------------
 4527|    829|      Operands.push_back(ARMOperand::CreateImm(Imm1Exp, Sx1, Ex1));
 4528|    829|      return MatchOperand_Success;
 4529|    829|    }
 4530|  1.35k|  } else {
 4531|       |    // Operands like #(l1 - l2) can only be evaluated at a later stage (via an
 4532|       |    // MCFixup). Fallback to a plain immediate.
 4533|    240|    Operands.push_back(ARMOperand::CreateImm(Imm1Exp, Sx1, Ex1));
 4534|    240|    return MatchOperand_Success;
 4535|    240|  }
 4536|       |
 4537|       |  // From this point onward, we expect the input to be a (#bits, #rot) pair
 4538|    522|  if (Parser.getTok().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (4538:7): [True: 17, False: 505]
  ------------------
 4539|       |    //Error(Sx1, "expected modified immediate operand: #[0, 255], #even[0-30]");
 4540|     17|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4541|     17|    return MatchOperand_ParseFail;
 4542|     17|  }
 4543|       |
 4544|    505|  if (Imm1 & ~0xFF) {
  ------------------
  |  Branch (4544:7): [True: 53, False: 452]
  ------------------
 4545|       |    // Error(Sx1, "immediate operand must a number in the range [0, 255]");
 4546|     53|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4547|     53|    return MatchOperand_ParseFail;
 4548|     53|  }
 4549|       |
 4550|       |  // Eat the comma
 4551|    452|  Parser.Lex();
 4552|       |
 4553|       |  // Repeat for #rot
 4554|    452|  SMLoc Sx2, Ex2;
 4555|    452|  Sx2 = Parser.getTok().getLoc();
 4556|       |
 4557|       |  // Eat the optional hash (dollar)
 4558|    452|  if (Parser.getTok().is(AsmToken::Hash) ||
  ------------------
  |  Branch (4558:7): [True: 128, False: 324]
  ------------------
 4559|    324|      Parser.getTok().is(AsmToken::Dollar))
  ------------------
  |  Branch (4559:7): [True: 13, False: 311]
  ------------------
 4560|    141|    Parser.Lex();
 4561|       |
 4562|    452|  const MCExpr *Imm2Exp;
 4563|    452|  if (getParser().parseExpression(Imm2Exp, Ex2)) {
  ------------------
  |  Branch (4563:7): [True: 258, False: 194]
  ------------------
 4564|       |    // Error(Sx2, "malformed expression");
 4565|    258|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4566|    258|    return MatchOperand_ParseFail;
 4567|    258|  }
 4568|       |
 4569|    194|  CE = dyn_cast<MCConstantExpr>(Imm2Exp);
 4570|       |
 4571|    194|  if (CE) {
  ------------------
  |  Branch (4571:7): [True: 186, False: 8]
  ------------------
 4572|    186|    Imm2 = CE->getValue();
 4573|    186|    if (!(Imm2 & ~0x1E)) {
  ------------------
  |  Branch (4573:9): [True: 124, False: 62]
  ------------------
 4574|       |      // We have a match!
 4575|    124|      Operands.push_back(ARMOperand::CreateModImm(Imm1, Imm2, S, Ex2));
 4576|    124|      return MatchOperand_Success;
 4577|    124|    }
 4578|       |    // Error(Sx2, "immediate operand must an even number in the range [0, 30]");
 4579|     62|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4580|     62|    return MatchOperand_ParseFail;
 4581|    186|  } else {
 4582|       |    // Error(Sx2, "constant expression expected");
 4583|      8|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 4584|      8|    return MatchOperand_ParseFail;
 4585|      8|  }
 4586|    194|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand12CreateModImmEjjN7llvm_ks5SMLocES2_:
 2653|  2.42k|                                                  SMLoc S, SMLoc E) {
 2654|  2.42k|    auto Op = make_unique<ARMOperand>(k_ModifiedImmediate);
 2655|  2.42k|    Op->ModImm.Bits = Bits;
 2656|  2.42k|    Op->ModImm.Rot = Rot;
 2657|  2.42k|    Op->StartLoc = S;
 2658|  2.42k|    Op->EndLoc = E;
 2659|  2.42k|    return Op;
 2660|  2.42k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser15parsePostIdxRegERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4668|    685|ARMAsmParser::parsePostIdxReg(OperandVector &Operands, unsigned int &ErrorCode) {
 4669|       |  // Check for a post-index addressing register operand. Specifically:
 4670|       |  // postidx_reg := '+' register {, shift}
 4671|       |  //              | '-' register {, shift}
 4672|       |  //              | register {, shift}
 4673|       |
 4674|       |  // This method must return MatchOperand_NoMatch without consuming any tokens
 4675|       |  // in the case where there is no match, as other alternatives take other
 4676|       |  // parse methods.
 4677|    685|  MCAsmParser &Parser = getParser();
 4678|    685|  AsmToken Tok = Parser.getTok();
 4679|    685|  SMLoc S = Tok.getLoc();
 4680|    685|  bool haveEaten = false;
 4681|    685|  bool isAdd = true;
 4682|    685|  if (Tok.is(AsmToken::Plus)) {
  ------------------
  |  Branch (4682:7): [True: 1, False: 684]
  ------------------
 4683|      1|    Parser.Lex(); // Eat the '+' token.
 4684|      1|    haveEaten = true;
 4685|    684|  } else if (Tok.is(AsmToken::Minus)) {
  ------------------
  |  Branch (4685:14): [True: 1, False: 683]
  ------------------
 4686|      1|    Parser.Lex(); // Eat the '-' token.
 4687|      1|    isAdd = false;
 4688|      1|    haveEaten = true;
 4689|      1|  }
 4690|       |
 4691|    685|  SMLoc E = Parser.getTok().getEndLoc();
 4692|    685|  int Reg = tryParseRegister();
 4693|    685|  if (Reg == -1) {
  ------------------
  |  Branch (4693:7): [True: 642, False: 43]
  ------------------
 4694|    642|    if (!haveEaten)
  ------------------
  |  Branch (4694:9): [True: 640, False: 2]
  ------------------
 4695|    640|      return MatchOperand_NoMatch;
 4696|       |    //Error(Parser.getTok().getLoc(), "register expected");
 4697|      2|    return MatchOperand_ParseFail;
 4698|    642|  }
 4699|       |
 4700|     43|  ARM_AM::ShiftOpc ShiftTy = ARM_AM::no_shift;
 4701|     43|  unsigned ShiftImm = 0;
 4702|     43|  if (Parser.getTok().is(AsmToken::Comma)) {
  ------------------
  |  Branch (4702:7): [True: 3, False: 40]
  ------------------
 4703|      3|    Parser.Lex(); // Eat the ','.
 4704|      3|    if (parseMemRegOffsetShift(ShiftTy, ShiftImm))
  ------------------
  |  Branch (4704:9): [True: 2, False: 1]
  ------------------
 4705|      2|      return MatchOperand_ParseFail;
 4706|       |
 4707|       |    // FIXME: Only approximates end...may include intervening whitespace.
 4708|      1|    E = Parser.getTok().getLoc();
 4709|      1|  }
 4710|       |
 4711|     41|  Operands.push_back(ARMOperand::CreatePostIdxReg(Reg, isAdd, ShiftTy,
 4712|     41|                                                  ShiftImm, S, E));
 4713|       |
 4714|     41|  return MatchOperand_Success;
 4715|     43|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser22parseMemRegOffsetShiftERN7llvm_ks6ARM_AM8ShiftOpcERj:
 5068|     99|                                          unsigned &Amount) {
 5069|     99|  MCAsmParser &Parser = getParser();
 5070|     99|  SMLoc Loc = Parser.getTok().getLoc();
 5071|     99|  const AsmToken &Tok = Parser.getTok();
 5072|     99|  if (Tok.isNot(AsmToken::Identifier))
  ------------------
  |  Branch (5072:7): [True: 1, False: 98]
  ------------------
 5073|      1|    return true;
 5074|     98|  StringRef ShiftName = Tok.getString();
 5075|     98|  if (ShiftName == "lsl" || ShiftName == "LSL" ||
  ------------------
  |  Branch (5075:7): [True: 10, False: 88]
  |  Branch (5075:7): [True: 39, False: 59]
  |  Branch (5075:29): [True: 27, False: 61]
  ------------------
 5076|     61|      ShiftName == "asl" || ShiftName == "ASL")
  ------------------
  |  Branch (5076:7): [True: 2, False: 59]
  |  Branch (5076:29): [True: 0, False: 59]
  ------------------
 5077|     39|    St = ARM_AM::lsl;
 5078|     59|  else if (ShiftName == "lsr" || ShiftName == "LSR")
  ------------------
  |  Branch (5078:12): [True: 11, False: 48]
  |  Branch (5078:12): [True: 23, False: 36]
  |  Branch (5078:34): [True: 12, False: 36]
  ------------------
 5079|     23|    St = ARM_AM::lsr;
 5080|     36|  else if (ShiftName == "asr" || ShiftName == "ASR")
  ------------------
  |  Branch (5080:12): [True: 8, False: 28]
  |  Branch (5080:12): [True: 9, False: 27]
  |  Branch (5080:34): [True: 1, False: 27]
  ------------------
 5081|      9|    St = ARM_AM::asr;
 5082|     27|  else if (ShiftName == "ror" || ShiftName == "ROR")
  ------------------
  |  Branch (5082:12): [True: 1, False: 26]
  |  Branch (5082:12): [True: 11, False: 16]
  |  Branch (5082:34): [True: 10, False: 16]
  ------------------
 5083|     11|    St = ARM_AM::ror;
 5084|     16|  else if (ShiftName == "rrx" || ShiftName == "RRX")
  ------------------
  |  Branch (5084:12): [True: 1, False: 15]
  |  Branch (5084:12): [True: 1, False: 15]
  |  Branch (5084:34): [True: 0, False: 15]
  ------------------
 5085|      1|    St = ARM_AM::rrx;
 5086|     15|  else
 5087|       |    //return Error(Loc, "illegal shift operator");
 5088|     15|    return true;
 5089|     83|  Parser.Lex(); // Eat shift type token.
 5090|       |
 5091|       |  // rrx stands alone.
 5092|     83|  Amount = 0;
 5093|     83|  if (St != ARM_AM::rrx) {
  ------------------
  |  Branch (5093:7): [True: 82, False: 1]
  ------------------
 5094|     82|    Loc = Parser.getTok().getLoc();
 5095|       |    // A '#' and a shift amount.
 5096|     82|    const AsmToken &HashTok = Parser.getTok();
 5097|     82|    if (HashTok.isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (5097:9): [True: 1, False: 81]
  ------------------
 5098|      1|        HashTok.isNot(AsmToken::Dollar))
  ------------------
  |  Branch (5098:9): [True: 1, False: 0]
  ------------------
 5099|       |      //return Error(HashTok.getLoc(), "'#' expected");
 5100|      1|      return true;
 5101|     81|    Parser.Lex(); // Eat hash token.
 5102|       |
 5103|     81|    const MCExpr *Expr;
 5104|     81|    if (getParser().parseExpression(Expr))
  ------------------
  |  Branch (5104:9): [True: 24, False: 57]
  ------------------
 5105|     24|      return true;
 5106|       |    // Range check the immediate.
 5107|       |    // lsl, ror: 0 <= imm <= 31
 5108|       |    // lsr, asr: 0 <= imm <= 32
 5109|     57|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr);
 5110|     57|    if (!CE)
  ------------------
  |  Branch (5110:9): [True: 1, False: 56]
  ------------------
 5111|       |      //return Error(Loc, "shift amount must be an immediate");
 5112|      1|      return true;
 5113|     56|    int64_t Imm = CE->getValue();
 5114|     56|    if (Imm < 0 ||
  ------------------
  |  Branch (5114:9): [True: 15, False: 41]
  ------------------
 5115|     41|        ((St == ARM_AM::lsl || St == ARM_AM::ror) && Imm > 31) ||
  ------------------
  |  Branch (5115:11): [True: 25, False: 16]
  |  Branch (5115:32): [True: 1, False: 15]
  |  Branch (5115:54): [True: 24, False: 2]
  ------------------
 5116|     17|        ((St == ARM_AM::lsr || St == ARM_AM::asr) && Imm > 32))
  ------------------
  |  Branch (5116:11): [True: 13, False: 4]
  |  Branch (5116:32): [True: 2, False: 2]
  |  Branch (5116:54): [True: 12, False: 3]
  ------------------
 5117|       |      //return Error(Loc, "immediate shift value out of range");
 5118|     51|      return true;
 5119|       |    // If <ShiftTy> #0, turn it into a no_shift.
 5120|      5|    if (Imm == 0)
  ------------------
  |  Branch (5120:9): [True: 1, False: 4]
  ------------------
 5121|      1|      St = ARM_AM::lsl;
 5122|       |    // For consistency, treat lsr #32 and asr #32 as having immediate value 0.
 5123|      5|    if (Imm == 32)
  ------------------
  |  Branch (5123:9): [True: 1, False: 4]
  ------------------
 5124|      1|      Imm = 0;
 5125|      5|    Amount = Imm;
 5126|      5|  }
 5127|       |
 5128|      6|  return false;
 5129|     83|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser22parseProcIFlagsOperandERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4002|    328|ARMAsmParser::parseProcIFlagsOperand(OperandVector &Operands, unsigned int &ErrorCode) {
 4003|    328|  MCAsmParser &Parser = getParser();
 4004|    328|  SMLoc S = Parser.getTok().getLoc();
 4005|    328|  const AsmToken &Tok = Parser.getTok();
 4006|    328|  if (!Tok.is(AsmToken::Identifier)) 
  ------------------
  |  Branch (4006:7): [True: 73, False: 255]
  ------------------
 4007|     73|    return MatchOperand_NoMatch;
 4008|    255|  StringRef IFlagsStr = Tok.getString();
 4009|       |
 4010|       |  // An iflags string of "none" is interpreted to mean that none of the AIF
 4011|       |  // bits are set.  Not a terribly useful instruction, but a valid encoding.
 4012|    255|  unsigned IFlags = 0;
 4013|    255|  if (IFlagsStr != "none") {
  ------------------
  |  Branch (4013:7): [True: 255, False: 0]
  ------------------
 4014|    439|        for (int i = 0, e = IFlagsStr.size(); i != e; ++i) {
  ------------------
  |  Branch (4014:47): [True: 392, False: 47]
  ------------------
 4015|    392|      unsigned Flag = StringSwitch<unsigned>(IFlagsStr.substr(i, 1))
 4016|    392|        .Case("a", ARM_PROC::A)
 4017|    392|        .Case("i", ARM_PROC::I)
 4018|    392|        .Case("f", ARM_PROC::F)
 4019|    392|        .Default(~0U);
 4020|       |
 4021|       |      // If some specific iflag is already set, it means that some letter is
 4022|       |      // present more than once, this is not acceptable.
 4023|    392|      if (Flag == ~0U || (IFlags & Flag))
  ------------------
  |  Branch (4023:11): [True: 195, False: 197]
  |  Branch (4023:26): [True: 13, False: 184]
  ------------------
 4024|    208|        return MatchOperand_NoMatch;
 4025|       |
 4026|    184|      IFlags |= Flag;
 4027|    184|    }
 4028|    255|  }
 4029|       |
 4030|     47|  Parser.Lex(); // Eat identifier token.
 4031|     47|  Operands.push_back(ARMOperand::CreateProcIFlags((ARM_PROC::IFlags)IFlags, S));
 4032|     47|  return MatchOperand_Success;
 4033|    255|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand16CreateProcIFlagsEN7llvm_ks8ARM_PROC6IFlagsENS1_5SMLocE:
 2803|     47|                                                      SMLoc S) {
 2804|     47|    auto Op = make_unique<ARMOperand>(k_ProcIFlags);
 2805|     47|    Op->IFlags.Val = IFlags;
 2806|     47|    Op->StartLoc = S;
 2807|     47|    Op->EndLoc = S;
 2808|     47|    return Op;
 2809|     47|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser11parseRotImmERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4414|    131|ARMAsmParser::parseRotImm(OperandVector &Operands, unsigned int &ErrorCode) {
 4415|    131|  MCAsmParser &Parser = getParser();
 4416|    131|  const AsmToken &Tok = Parser.getTok();
 4417|    131|  SMLoc S = Tok.getLoc();
 4418|    131|  if (Tok.isNot(AsmToken::Identifier))
  ------------------
  |  Branch (4418:7): [True: 6, False: 125]
  ------------------
 4419|      6|    return MatchOperand_NoMatch;
 4420|    125|  StringRef ShiftName = Tok.getString();
 4421|    125|  if (ShiftName != "ror" && ShiftName != "ROR")
  ------------------
  |  Branch (4421:7): [True: 124, False: 1]
  |  Branch (4421:7): [True: 12, False: 113]
  |  Branch (4421:29): [True: 12, False: 112]
  ------------------
 4422|     12|    return MatchOperand_NoMatch;
 4423|    113|  Parser.Lex(); // Eat the operator.
 4424|       |
 4425|       |  // A '#' and a rotate amount.
 4426|    113|  if (Parser.getTok().isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (4426:7): [True: 2, False: 111]
  ------------------
 4427|      2|      Parser.getTok().isNot(AsmToken::Dollar)) {
  ------------------
  |  Branch (4427:7): [True: 2, False: 0]
  ------------------
 4428|       |    //Error(Parser.getTok().getLoc(), "'#' expected");
 4429|      2|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4430|      2|    return MatchOperand_ParseFail;
 4431|      2|  }
 4432|    111|  Parser.Lex(); // Eat hash token.
 4433|       |  //SMLoc ExLoc = Parser.getTok().getLoc();
 4434|       |
 4435|    111|  const MCExpr *ShiftAmount;
 4436|    111|  SMLoc EndLoc;
 4437|    111|  if (getParser().parseExpression(ShiftAmount, EndLoc)) {
  ------------------
  |  Branch (4437:7): [True: 11, False: 100]
  ------------------
 4438|       |    //Error(ExLoc, "malformed rotate expression");
 4439|     11|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4440|     11|    return MatchOperand_ParseFail;
 4441|     11|  }
 4442|    100|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(ShiftAmount);
 4443|    100|  if (!CE) {
  ------------------
  |  Branch (4443:7): [True: 1, False: 99]
  ------------------
 4444|       |    //Error(ExLoc, "rotate amount must be an immediate");
 4445|      1|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4446|      1|    return MatchOperand_ParseFail;
 4447|      1|  }
 4448|       |
 4449|     99|  int64_t Val = CE->getValue();
 4450|       |  // Shift amount must be in {0, 8, 16, 24} (0 is undocumented extension)
 4451|       |  // normally, zero is represented in asm by omitting the rotate operand
 4452|       |  // entirely.
 4453|     99|  if (Val != 8 && Val != 16 && Val != 24 && Val != 0) {
  ------------------
  |  Branch (4453:7): [True: 98, False: 1]
  |  Branch (4453:19): [True: 97, False: 1]
  |  Branch (4453:32): [True: 97, False: 0]
  |  Branch (4453:45): [True: 96, False: 1]
  ------------------
 4454|       |    //Error(ExLoc, "'ror' rotate amount must be 8, 16, or 24");
 4455|     96|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4456|     96|    return MatchOperand_ParseFail;
 4457|     96|  }
 4458|       |
 4459|      3|  Operands.push_back(ARMOperand::CreateRotImm(Val, S, EndLoc));
 4460|       |
 4461|      3|  return MatchOperand_Success;
 4462|     99|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand12CreateRotImmEjN7llvm_ks5SMLocES2_:
 2644|      3|                                                  SMLoc E) {
 2645|      3|    auto Op = make_unique<ARMOperand>(k_RotateImmediate);
 2646|      3|    Op->RotImm.Imm = Imm;
 2647|      3|    Op->StartLoc = S;
 2648|      3|    Op->EndLoc = E;
 2649|      3|    return Op;
 2650|      3|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser14parseSetEndImmERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4302|     59|{
 4303|     59|  MCAsmParser &Parser = getParser();
 4304|     59|  const AsmToken &Tok = Parser.getTok();
 4305|     59|  SMLoc S = Tok.getLoc();
 4306|     59|  if (Tok.isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (4306:7): [True: 1, False: 58]
  ------------------
 4307|       |    //Error(S, "'be' or 'le' operand expected");
 4308|      1|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4309|      1|    return MatchOperand_ParseFail;
 4310|      1|  }
 4311|     58|  int Val = StringSwitch<int>(Tok.getString().lower())
 4312|     58|    .Case("be", 1)
 4313|     58|    .Case("le", 0)
 4314|     58|    .Default(-1);
 4315|     58|  Parser.Lex(); // Eat the token.
 4316|       |
 4317|     58|  if (Val == -1) {
  ------------------
  |  Branch (4317:7): [True: 9, False: 49]
  ------------------
 4318|       |    //Error(S, "'be' or 'le' operand expected");
 4319|      9|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4320|      9|    return MatchOperand_ParseFail;
 4321|      9|  }
 4322|     49|  Operands.push_back(ARMOperand::CreateImm(MCConstantExpr::create(Val,
 4323|     49|                                                                  getContext()),
 4324|     49|                                           S, Tok.getEndLoc()));
 4325|     49|  return MatchOperand_Success;
 4326|     58|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser15parseShifterImmERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 4335|    121|{
 4336|    121|  MCAsmParser &Parser = getParser();
 4337|    121|  const AsmToken &Tok = Parser.getTok();
 4338|    121|  SMLoc S = Tok.getLoc();
 4339|    121|  if (Tok.isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (4339:7): [True: 1, False: 120]
  ------------------
 4340|       |    //Error(S, "shift operator 'asr' or 'lsl' expected");
 4341|      1|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4342|      1|    return MatchOperand_ParseFail;
 4343|      1|  }
 4344|    120|  StringRef ShiftName = Tok.getString();
 4345|    120|  bool isASR;
 4346|    120|  if (ShiftName == "lsl" || ShiftName == "LSL")
  ------------------
  |  Branch (4346:7): [True: 8, False: 112]
  |  Branch (4346:7): [True: 39, False: 81]
  |  Branch (4346:29): [True: 31, False: 81]
  ------------------
 4347|     39|    isASR = false;
 4348|     81|  else if (ShiftName == "asr" || ShiftName == "ASR")
  ------------------
  |  Branch (4348:12): [True: 72, False: 9]
  |  Branch (4348:12): [True: 72, False: 9]
  |  Branch (4348:34): [True: 0, False: 9]
  ------------------
 4349|     72|    isASR = true;
 4350|      9|  else {
 4351|       |    //Error(S, "shift operator 'asr' or 'lsl' expected");
 4352|      9|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4353|      9|    return MatchOperand_ParseFail;
 4354|      9|  }
 4355|    111|  Parser.Lex(); // Eat the operator.
 4356|       |
 4357|       |  // A '#' and a shift amount.
 4358|    111|  if (Parser.getTok().isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (4358:7): [True: 1, False: 110]
  ------------------
 4359|      1|      Parser.getTok().isNot(AsmToken::Dollar)) {
  ------------------
  |  Branch (4359:7): [True: 1, False: 0]
  ------------------
 4360|       |    //Error(Parser.getTok().getLoc(), "'#' expected");
 4361|      1|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4362|      1|    return MatchOperand_ParseFail;
 4363|      1|  }
 4364|    110|  Parser.Lex(); // Eat hash token.
 4365|       |  //SMLoc ExLoc = Parser.getTok().getLoc();
 4366|       |
 4367|    110|  const MCExpr *ShiftAmount;
 4368|    110|  SMLoc EndLoc;
 4369|    110|  if (getParser().parseExpression(ShiftAmount, EndLoc)) {
  ------------------
  |  Branch (4369:7): [True: 9, False: 101]
  ------------------
 4370|       |    //Error(ExLoc, "malformed shift expression");
 4371|      9|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4372|      9|    return MatchOperand_ParseFail;
 4373|      9|  }
 4374|    101|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(ShiftAmount);
 4375|    101|  if (!CE) {
  ------------------
  |  Branch (4375:7): [True: 1, False: 100]
  ------------------
 4376|       |    //Error(ExLoc, "shift amount must be an immediate");
 4377|      1|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4378|      1|    return MatchOperand_ParseFail;
 4379|      1|  }
 4380|       |
 4381|    100|  int64_t Val = CE->getValue();
 4382|    100|  if (isASR) {
  ------------------
  |  Branch (4382:7): [True: 71, False: 29]
  ------------------
 4383|       |    // Shift amount must be in [1,32]
 4384|     71|    if (Val < 1 || Val > 32) {
  ------------------
  |  Branch (4384:9): [True: 65, False: 6]
  |  Branch (4384:20): [True: 4, False: 2]
  ------------------
 4385|       |      //Error(ExLoc, "'asr' shift amount must be in range [1,32]");
 4386|     69|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4387|     69|      return MatchOperand_ParseFail;
 4388|     69|    }
 4389|       |    // asr #32 encoded as asr #0, but is not allowed in Thumb2 mode.
 4390|      2|    if (isThumb() && Val == 32) {
  ------------------
  |  Branch (4390:9): [True: 1, False: 1]
  |  Branch (4390:22): [True: 0, False: 1]
  ------------------
 4391|       |      //Error(ExLoc, "'asr #32' shift amount not allowed in Thumb mode");
 4392|      0|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4393|      0|      return MatchOperand_ParseFail;
 4394|      0|    }
 4395|      2|    if (Val == 32) Val = 0;
  ------------------
  |  Branch (4395:9): [True: 0, False: 2]
  ------------------
 4396|     29|  } else {
 4397|       |    // Shift amount must be in [1,32]
 4398|     29|    if (Val < 0 || Val > 31) {
  ------------------
  |  Branch (4398:9): [True: 19, False: 10]
  |  Branch (4398:20): [True: 9, False: 1]
  ------------------
 4399|       |      //Error(ExLoc, "'lsr' shift amount must be in range [0,31]");
 4400|     28|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 4401|     28|      return MatchOperand_ParseFail;
 4402|     28|    }
 4403|     29|  }
 4404|       |
 4405|      3|  Operands.push_back(ARMOperand::CreateShifterImm(isASR, Val, S, EndLoc));
 4406|       |
 4407|      3|  return MatchOperand_Success;
 4408|    100|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand16CreateShifterImmEbjN7llvm_ks5SMLocES2_:
 2634|      3|                                                      SMLoc S, SMLoc E) {
 2635|      3|    auto Op = make_unique<ARMOperand>(k_ShifterImmediate);
 2636|      3|    Op->ShifterImm.isASR = isASR;
 2637|      3|    Op->ShifterImm.Imm = Imm;
 2638|      3|    Op->StartLoc = S;
 2639|      3|    Op->EndLoc = E;
 2640|      3|    return Op;
 2641|      3|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser15parseVectorListERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 3604|  23.1k|{
 3605|  23.1k|  MCAsmParser &Parser = getParser();
 3606|  23.1k|  VectorLaneTy LaneKind;
 3607|  23.1k|  unsigned LaneIndex;
 3608|  23.1k|  SMLoc S = Parser.getTok().getLoc();
 3609|       |  // As an extension (to match gas), support a plain D register or Q register
 3610|       |  // (without encosing curly braces) as a single or double entry list,
 3611|       |  // respectively.
 3612|  23.1k|  if (Parser.getTok().is(AsmToken::Identifier)) {
  ------------------
  |  Branch (3612:7): [True: 15.5k, False: 7.56k]
  ------------------
 3613|  15.5k|    SMLoc E = Parser.getTok().getEndLoc();
 3614|  15.5k|    int Reg = tryParseRegister();
 3615|  15.5k|    if (Reg == -1)
  ------------------
  |  Branch (3615:9): [True: 15.5k, False: 58]
  ------------------
 3616|  15.5k|      return MatchOperand_NoMatch;
 3617|     58|    if (ARMMCRegisterClasses[ARM::DPRRegClassID].contains(Reg)) {
  ------------------
  |  Branch (3617:9): [True: 34, False: 24]
  ------------------
 3618|     34|      OperandMatchResultTy Res = parseVectorLane(LaneKind, LaneIndex, E, ErrorCode);
 3619|     34|      if (Res != MatchOperand_Success)
  ------------------
  |  Branch (3619:11): [True: 7, False: 27]
  ------------------
 3620|      7|        return Res;
 3621|     27|      switch (LaneKind) {
  ------------------
  |  Branch (3621:15): [True: 27, False: 0]
  ------------------
 3622|     20|      case NoLanes:
  ------------------
  |  Branch (3622:7): [True: 20, False: 7]
  ------------------
 3623|     20|        Operands.push_back(ARMOperand::CreateVectorList(Reg, 1, false, S, E));
 3624|     20|        break;
 3625|      3|      case AllLanes:
  ------------------
  |  Branch (3625:7): [True: 3, False: 24]
  ------------------
 3626|      3|        Operands.push_back(ARMOperand::CreateVectorListAllLanes(Reg, 1, false,
 3627|      3|                                                                S, E));
 3628|      3|        break;
 3629|      4|      case IndexedLane:
  ------------------
  |  Branch (3629:7): [True: 4, False: 23]
  ------------------
 3630|      4|        Operands.push_back(ARMOperand::CreateVectorListIndexed(Reg, 1,
 3631|      4|                                                               LaneIndex,
 3632|      4|                                                               false, S, E));
 3633|      4|        break;
 3634|     27|      }
 3635|     27|      return MatchOperand_Success;
 3636|     27|    }
 3637|     24|    if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(Reg)) {
  ------------------
  |  Branch (3637:9): [True: 21, False: 3]
  ------------------
 3638|     21|      Reg = getDRegFromQReg(Reg);
 3639|     21|      OperandMatchResultTy Res = parseVectorLane(LaneKind, LaneIndex, E, ErrorCode);
 3640|     21|      if (Res != MatchOperand_Success)
  ------------------
  |  Branch (3640:11): [True: 6, False: 15]
  ------------------
 3641|      6|        return Res;
 3642|     15|      switch (LaneKind) {
  ------------------
  |  Branch (3642:15): [True: 15, False: 0]
  ------------------
 3643|     12|      case NoLanes:
  ------------------
  |  Branch (3643:7): [True: 12, False: 3]
  ------------------
 3644|     12|        Reg = MRI->getMatchingSuperReg(Reg, ARM::dsub_0,
 3645|     12|                                   &ARMMCRegisterClasses[ARM::DPairRegClassID]);
 3646|     12|        Operands.push_back(ARMOperand::CreateVectorList(Reg, 2, false, S, E));
 3647|     12|        break;
 3648|      1|      case AllLanes:
  ------------------
  |  Branch (3648:7): [True: 1, False: 14]
  ------------------
 3649|      1|        Reg = MRI->getMatchingSuperReg(Reg, ARM::dsub_0,
 3650|      1|                                   &ARMMCRegisterClasses[ARM::DPairRegClassID]);
 3651|      1|        Operands.push_back(ARMOperand::CreateVectorListAllLanes(Reg, 2, false,
 3652|      1|                                                                S, E));
 3653|      1|        break;
 3654|      2|      case IndexedLane:
  ------------------
  |  Branch (3654:7): [True: 2, False: 13]
  ------------------
 3655|      2|        Operands.push_back(ARMOperand::CreateVectorListIndexed(Reg, 2,
 3656|      2|                                                               LaneIndex,
 3657|      2|                                                               false, S, E));
 3658|      2|        break;
 3659|     15|      }
 3660|     15|      return MatchOperand_Success;
 3661|     15|    }
 3662|       |    //Error(S, "vector register expected");
 3663|      3|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3664|      3|    return MatchOperand_ParseFail;
 3665|     24|  }
 3666|       |
 3667|  7.56k|  if (Parser.getTok().isNot(AsmToken::LCurly))
  ------------------
  |  Branch (3667:7): [True: 7.47k, False: 93]
  ------------------
 3668|  7.47k|    return MatchOperand_NoMatch;
 3669|       |
 3670|     93|  Parser.Lex(); // Eat '{' token.
 3671|     93|  SMLoc RegLoc = Parser.getTok().getLoc();
 3672|       |
 3673|     93|  int Reg = tryParseRegister();
 3674|     93|  if (Reg == -1) {
  ------------------
  |  Branch (3674:7): [True: 4, False: 89]
  ------------------
 3675|       |    //Error(RegLoc, "register expected");
 3676|      4|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3677|      4|    return MatchOperand_ParseFail;
 3678|      4|  }
 3679|     89|  unsigned Count = 1;
 3680|     89|  int Spacing = 0;
 3681|     89|  unsigned FirstReg = Reg;
 3682|       |  // The list is of D registers, but we also allow Q regs and just interpret
 3683|       |  // them as the two D sub-registers.
 3684|     89|  if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(Reg)) {
  ------------------
  |  Branch (3684:7): [True: 62, False: 27]
  ------------------
 3685|     62|    FirstReg = Reg = getDRegFromQReg(Reg);
 3686|     62|    Spacing = 1; // double-spacing requires explicit D registers, otherwise
 3687|       |                 // it's ambiguous with four-register single spaced.
 3688|     62|    ++Reg;
 3689|     62|    ++Count;
 3690|     62|  }
 3691|       |
 3692|     89|  SMLoc E;
 3693|     89|  if (parseVectorLane(LaneKind, LaneIndex, E, ErrorCode) != MatchOperand_Success)
  ------------------
  |  Branch (3693:7): [True: 20, False: 69]
  ------------------
 3694|     20|    return MatchOperand_ParseFail;
 3695|       |
 3696|    269|  while (Parser.getTok().is(AsmToken::Comma) ||
  ------------------
  |  Branch (3696:10): [True: 40, False: 229]
  ------------------
 3697|    248|         Parser.getTok().is(AsmToken::Minus)) {
  ------------------
  |  Branch (3697:10): [True: 208, False: 21]
  ------------------
 3698|    248|    if (Parser.getTok().is(AsmToken::Minus)) {
  ------------------
  |  Branch (3698:9): [True: 208, False: 40]
  ------------------
 3699|    208|      if (!Spacing)
  ------------------
  |  Branch (3699:11): [True: 11, False: 197]
  ------------------
 3700|     11|        Spacing = 1; // Register range implies a single spaced list.
 3701|    197|      else if (Spacing == 2) {
  ------------------
  |  Branch (3701:16): [True: 1, False: 196]
  ------------------
 3702|       |        //Error(Parser.getTok().getLoc(),
 3703|       |        //      "sequential registers in double spaced list");
 3704|      1|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3705|      1|        return MatchOperand_ParseFail;
 3706|      1|      }
 3707|    207|      Parser.Lex(); // Eat the minus.
 3708|       |      //SMLoc AfterMinusLoc = Parser.getTok().getLoc();
 3709|    207|      int EndReg = tryParseRegister();
 3710|    207|      if (EndReg == -1) {
  ------------------
  |  Branch (3710:11): [True: 8, False: 199]
  ------------------
 3711|       |        //Error(AfterMinusLoc, "register expected");
 3712|      8|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3713|      8|        return MatchOperand_ParseFail;
 3714|      8|      }
 3715|       |      // Allow Q regs and just interpret them as the two D sub-registers.
 3716|    199|      if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(EndReg))
  ------------------
  |  Branch (3716:11): [True: 71, False: 128]
  ------------------
 3717|     71|        EndReg = getDRegFromQReg(EndReg) + 1;
 3718|       |      // If the register is the same as the start reg, there's nothing
 3719|       |      // more to do.
 3720|    199|      if (Reg == EndReg)
  ------------------
  |  Branch (3720:11): [True: 160, False: 39]
  ------------------
 3721|    160|        continue;
 3722|       |      // The register must be in the same register class as the first.
 3723|     39|      if (!ARMMCRegisterClasses[ARM::DPRRegClassID].contains(EndReg)) {
  ------------------
  |  Branch (3723:11): [True: 7, False: 32]
  ------------------
 3724|       |        //Error(AfterMinusLoc, "invalid register in register list");
 3725|      7|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3726|      7|        return MatchOperand_ParseFail;
 3727|      7|      }
 3728|       |      // Ranges must go from low to high.
 3729|     32|      if (Reg > EndReg) {
  ------------------
  |  Branch (3729:11): [True: 6, False: 26]
  ------------------
 3730|       |        //Error(AfterMinusLoc, "bad range in register list");
 3731|      6|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3732|      6|        return MatchOperand_ParseFail;
 3733|      6|      }
 3734|       |      // Parse the lane specifier if present.
 3735|     26|      VectorLaneTy NextLaneKind;
 3736|     26|      unsigned NextLaneIndex;
 3737|     26|      if (parseVectorLane(NextLaneKind, NextLaneIndex, E, ErrorCode) !=
  ------------------
  |  Branch (3737:11): [True: 10, False: 16]
  ------------------
 3738|     26|          MatchOperand_Success)
 3739|     10|        return MatchOperand_ParseFail;
 3740|     16|      if (NextLaneKind != LaneKind || LaneIndex != NextLaneIndex) {
  ------------------
  |  Branch (3740:11): [True: 1, False: 15]
  |  Branch (3740:39): [True: 0, False: 15]
  ------------------
 3741|       |        //Error(AfterMinusLoc, "mismatched lane index in register list");
 3742|      1|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3743|      1|        return MatchOperand_ParseFail;
 3744|      1|      }
 3745|       |
 3746|       |      // Add all the registers in the range to the register list.
 3747|     15|      Count += EndReg - Reg;
 3748|     15|      Reg = EndReg;
 3749|     15|      continue;
 3750|     16|    }
 3751|     40|    Parser.Lex(); // Eat the comma.
 3752|     40|    RegLoc = Parser.getTok().getLoc();
 3753|     40|    int OldReg = Reg;
 3754|     40|    Reg = tryParseRegister();
 3755|     40|    if (Reg == -1) {
  ------------------
  |  Branch (3755:9): [True: 4, False: 36]
  ------------------
 3756|       |      //Error(RegLoc, "register expected");
 3757|      4|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3758|      4|      return MatchOperand_ParseFail;
 3759|      4|    }
 3760|       |    // vector register lists must be contiguous.
 3761|       |    // It's OK to use the enumeration values directly here rather, as the
 3762|       |    // VFP register classes have the enum sorted properly.
 3763|       |    //
 3764|       |    // The list is of D registers, but we also allow Q regs and just interpret
 3765|       |    // them as the two D sub-registers.
 3766|     36|    if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(Reg)) {
  ------------------
  |  Branch (3766:9): [True: 26, False: 10]
  ------------------
 3767|     26|      if (!Spacing)
  ------------------
  |  Branch (3767:11): [True: 1, False: 25]
  ------------------
 3768|      1|        Spacing = 1; // Register range implies a single spaced list.
 3769|     25|      else if (Spacing == 2) {
  ------------------
  |  Branch (3769:16): [True: 1, False: 24]
  ------------------
 3770|       |        //Error(RegLoc,
 3771|       |        //      "invalid register in double-spaced list (must be 'D' register')");
 3772|      1|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3773|      1|        return MatchOperand_ParseFail;
 3774|      1|      }
 3775|     25|      Reg = getDRegFromQReg(Reg);
 3776|     25|      if (Reg != OldReg + 1) {
  ------------------
  |  Branch (3776:11): [True: 6, False: 19]
  ------------------
 3777|       |        //Error(RegLoc, "non-contiguous register range");
 3778|      6|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3779|      6|        return MatchOperand_ParseFail;
 3780|      6|      }
 3781|     19|      ++Reg;
 3782|     19|      Count += 2;
 3783|       |      // Parse the lane specifier if present.
 3784|     19|      VectorLaneTy NextLaneKind;
 3785|     19|      unsigned NextLaneIndex;
 3786|       |      //SMLoc LaneLoc = Parser.getTok().getLoc();
 3787|     19|      if (parseVectorLane(NextLaneKind, NextLaneIndex, E, ErrorCode) !=
  ------------------
  |  Branch (3787:11): [True: 1, False: 18]
  ------------------
 3788|     19|          MatchOperand_Success)
 3789|      1|        return MatchOperand_ParseFail;
 3790|     18|      if (NextLaneKind != LaneKind || LaneIndex != NextLaneIndex) {
  ------------------
  |  Branch (3790:11): [True: 1, False: 17]
  |  Branch (3790:39): [True: 0, False: 17]
  ------------------
 3791|       |        //Error(LaneLoc, "mismatched lane index in register list");
 3792|      1|        ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3793|      1|        return MatchOperand_ParseFail;
 3794|      1|      }
 3795|     17|      continue;
 3796|     18|    }
 3797|       |    // Normal D register.
 3798|       |    // Figure out the register spacing (single or double) of the list if
 3799|       |    // we don't know it already.
 3800|     10|    if (!Spacing)
  ------------------
  |  Branch (3800:9): [True: 6, False: 4]
  ------------------
 3801|      6|      Spacing = 1 + (Reg == OldReg + 2);
 3802|       |
 3803|       |    // Just check that it's contiguous and keep going.
 3804|     10|    if (Reg != OldReg + Spacing) {
  ------------------
  |  Branch (3804:9): [True: 1, False: 9]
  ------------------
 3805|       |      //Error(RegLoc, "non-contiguous register range");
 3806|      1|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3807|      1|      return MatchOperand_ParseFail;
 3808|      1|    }
 3809|      9|    ++Count;
 3810|       |    // Parse the lane specifier if present.
 3811|      9|    VectorLaneTy NextLaneKind;
 3812|      9|    unsigned NextLaneIndex;
 3813|       |    //SMLoc EndLoc = Parser.getTok().getLoc();
 3814|      9|    if (parseVectorLane(NextLaneKind, NextLaneIndex, E, ErrorCode) != MatchOperand_Success)
  ------------------
  |  Branch (3814:9): [True: 1, False: 8]
  ------------------
 3815|      1|      return MatchOperand_ParseFail;
 3816|      8|    if (NextLaneKind != LaneKind || LaneIndex != NextLaneIndex) {
  ------------------
  |  Branch (3816:9): [True: 0, False: 8]
  |  Branch (3816:37): [True: 0, False: 8]
  ------------------
 3817|       |      //Error(EndLoc, "mismatched lane index in register list");
 3818|      0|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3819|      0|      return MatchOperand_ParseFail;
 3820|      0|    }
 3821|      8|  }
 3822|       |
 3823|     21|  if (Parser.getTok().isNot(AsmToken::RCurly)) {
  ------------------
  |  Branch (3823:7): [True: 11, False: 10]
  ------------------
 3824|       |    //Error(Parser.getTok().getLoc(), "'}' expected");
 3825|     11|    ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3826|     11|    return MatchOperand_ParseFail;
 3827|     11|  }
 3828|     10|  E = Parser.getTok().getEndLoc();
 3829|     10|  Parser.Lex(); // Eat '}' token.
 3830|       |
 3831|     10|  switch (LaneKind) {
  ------------------
  |  Branch (3831:11): [True: 10, False: 0]
  ------------------
 3832|      7|  case NoLanes:
  ------------------
  |  Branch (3832:3): [True: 7, False: 3]
  ------------------
 3833|       |    // Two-register operands have been converted to the
 3834|       |    // composite register classes.
 3835|      7|    if (Count == 2) {
  ------------------
  |  Branch (3835:9): [True: 3, False: 4]
  ------------------
 3836|      3|      const MCRegisterClass *RC = (Spacing == 1) ?
  ------------------
  |  Branch (3836:35): [True: 2, False: 1]
  ------------------
 3837|      2|        &ARMMCRegisterClasses[ARM::DPairRegClassID] :
 3838|      3|        &ARMMCRegisterClasses[ARM::DPairSpcRegClassID];
 3839|      3|      FirstReg = MRI->getMatchingSuperReg(FirstReg, ARM::dsub_0, RC);
 3840|      3|    }
 3841|       |
 3842|      7|    Operands.push_back(ARMOperand::CreateVectorList(FirstReg, Count,
 3843|      7|                                                    (Spacing == 2), S, E));
 3844|      7|    break;
 3845|      2|  case AllLanes:
  ------------------
  |  Branch (3845:3): [True: 2, False: 8]
  ------------------
 3846|       |    // Two-register operands have been converted to the
 3847|       |    // composite register classes.
 3848|      2|    if (Count == 2) {
  ------------------
  |  Branch (3848:9): [True: 1, False: 1]
  ------------------
 3849|      1|      const MCRegisterClass *RC = (Spacing == 1) ?
  ------------------
  |  Branch (3849:35): [True: 1, False: 0]
  ------------------
 3850|      1|        &ARMMCRegisterClasses[ARM::DPairRegClassID] :
 3851|      1|        &ARMMCRegisterClasses[ARM::DPairSpcRegClassID];
 3852|      1|      FirstReg = MRI->getMatchingSuperReg(FirstReg, ARM::dsub_0, RC);
 3853|      1|    }
 3854|      2|    Operands.push_back(ARMOperand::CreateVectorListAllLanes(FirstReg, Count,
 3855|      2|                                                            (Spacing == 2),
 3856|      2|                                                            S, E));
 3857|      2|    break;
 3858|      1|  case IndexedLane:
  ------------------
  |  Branch (3858:3): [True: 1, False: 9]
  ------------------
 3859|      1|    Operands.push_back(ARMOperand::CreateVectorListIndexed(FirstReg, Count,
 3860|      1|                                                           LaneIndex,
 3861|      1|                                                           (Spacing == 2),
 3862|      1|                                                           S, E));
 3863|      1|    break;
 3864|     10|  }
 3865|     10|  return MatchOperand_Success;
 3866|     10|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser15parseVectorLaneERNS_12VectorLaneTyERjRN7llvm_ks5SMLocES3_:
 3547|    198|{
 3548|    198|  MCAsmParser &Parser = getParser();
 3549|    198|  Index = 0; // Always return a defined index value.
 3550|    198|  if (Parser.getTok().is(AsmToken::LBrac)) {
  ------------------
  |  Branch (3550:7): [True: 60, False: 138]
  ------------------
 3551|     60|    Parser.Lex(); // Eat the '['.
 3552|     60|    if (Parser.getTok().is(AsmToken::RBrac)) {
  ------------------
  |  Branch (3552:9): [True: 7, False: 53]
  ------------------
 3553|       |      // "Dn[]" is the 'all lanes' syntax.
 3554|      7|      LaneKind = AllLanes;
 3555|      7|      EndLoc = Parser.getTok().getEndLoc();
 3556|      7|      Parser.Lex(); // Eat the ']'.
 3557|      7|      return MatchOperand_Success;
 3558|      7|    }
 3559|       |
 3560|       |    // There's an optional '#' token here. Normally there wouldn't be, but
 3561|       |    // inline assemble puts one in, and it's friendly to accept that.
 3562|     53|    if (Parser.getTok().is(AsmToken::Hash))
  ------------------
  |  Branch (3562:9): [True: 1, False: 52]
  ------------------
 3563|      1|      Parser.Lex(); // Eat '#' or '$'.
 3564|       |
 3565|     53|    const MCExpr *LaneIndex;
 3566|       |    //SMLoc Loc = Parser.getTok().getLoc();
 3567|     53|    if (getParser().parseExpression(LaneIndex)) {
  ------------------
  |  Branch (3567:9): [True: 28, False: 25]
  ------------------
 3568|       |      //Error(Loc, "illegal expression");
 3569|     28|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3570|     28|      return MatchOperand_ParseFail;
 3571|     28|    }
 3572|     25|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(LaneIndex);
 3573|     25|    if (!CE) {
  ------------------
  |  Branch (3573:9): [True: 5, False: 20]
  ------------------
 3574|       |      //Error(Loc, "lane index must be empty or an integer");
 3575|      5|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3576|      5|      return MatchOperand_ParseFail;
 3577|      5|    }
 3578|     20|    if (Parser.getTok().isNot(AsmToken::RBrac)) {
  ------------------
  |  Branch (3578:9): [True: 1, False: 19]
  ------------------
 3579|       |      //Error(Parser.getTok().getLoc(), "']' expected");
 3580|      1|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3581|      1|      return MatchOperand_ParseFail;
 3582|      1|    }
 3583|     19|    EndLoc = Parser.getTok().getEndLoc();
 3584|     19|    Parser.Lex(); // Eat the ']'.
 3585|     19|    int64_t Val = CE->getValue();
 3586|       |
 3587|       |    // FIXME: Make this range check context sensitive for .8, .16, .32.
 3588|     19|    if (Val < 0 || Val > 7) {
  ------------------
  |  Branch (3588:9): [True: 5, False: 14]
  |  Branch (3588:20): [True: 6, False: 8]
  ------------------
 3589|       |      //Error(Parser.getTok().getLoc(), "lane index out of range");
 3590|     11|      ErrorCode = KS_ERR_ASM_INVALIDOPERAND;
 3591|     11|      return MatchOperand_ParseFail;
 3592|     11|    }
 3593|      8|    Index = Val;
 3594|      8|    LaneKind = IndexedLane;
 3595|      8|    return MatchOperand_Success;
 3596|     19|  }
 3597|    138|  LaneKind = NoLanes;
 3598|    138|  return MatchOperand_Success;
 3599|    198|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand16CreateVectorListEjjbN7llvm_ks5SMLocES2_:
 2699|     39|                                                      SMLoc S, SMLoc E) {
 2700|     39|    auto Op = make_unique<ARMOperand>(k_VectorList);
 2701|     39|    Op->VectorList.RegNum = RegNum;
 2702|     39|    Op->VectorList.Count = Count;
 2703|     39|    Op->VectorList.isDoubleSpaced = isDoubleSpaced;
 2704|     39|    Op->StartLoc = S;
 2705|     39|    Op->EndLoc = E;
 2706|     39|    return Op;
 2707|     39|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand24CreateVectorListAllLanesEjjbN7llvm_ks5SMLocES2_:
 2711|      6|                           SMLoc S, SMLoc E) {
 2712|      6|    auto Op = make_unique<ARMOperand>(k_VectorListAllLanes);
 2713|      6|    Op->VectorList.RegNum = RegNum;
 2714|      6|    Op->VectorList.Count = Count;
 2715|      6|    Op->VectorList.isDoubleSpaced = isDoubleSpaced;
 2716|      6|    Op->StartLoc = S;
 2717|      6|    Op->EndLoc = E;
 2718|      6|    return Op;
 2719|      6|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand23CreateVectorListIndexedEjjjbN7llvm_ks5SMLocES2_:
 2723|      7|                          bool isDoubleSpaced, SMLoc S, SMLoc E) {
 2724|      7|    auto Op = make_unique<ARMOperand>(k_VectorListIndexed);
 2725|      7|    Op->VectorList.RegNum = RegNum;
 2726|      7|    Op->VectorList.Count = Count;
 2727|      7|    Op->VectorList.LaneIndex = Index;
 2728|      7|    Op->VectorList.isDoubleSpaced = isDoubleSpaced;
 2729|      7|    Op->StartLoc = S;
 2730|      7|    Op->EndLoc = E;
 2731|      7|    return Op;
 2732|      7|  }
ARMAsmParser.cpp:_ZL15getDRegFromQRegj:
 3380|    463|static unsigned getDRegFromQReg(unsigned QReg) {
 3381|    463|  switch (QReg) {
 3382|      0|  default: llvm_unreachable("expected a Q register!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (3382:3): [True: 0, False: 463]
  ------------------
 3383|     91|  case ARM::Q0:  return ARM::D0;
  ------------------
  |  Branch (3383:3): [True: 91, False: 372]
  ------------------
 3384|     34|  case ARM::Q1:  return ARM::D2;
  ------------------
  |  Branch (3384:3): [True: 34, False: 429]
  ------------------
 3385|     59|  case ARM::Q2:  return ARM::D4;
  ------------------
  |  Branch (3385:3): [True: 59, False: 404]
  ------------------
 3386|     20|  case ARM::Q3:  return ARM::D6;
  ------------------
  |  Branch (3386:3): [True: 20, False: 443]
  ------------------
 3387|     22|  case ARM::Q4:  return ARM::D8;
  ------------------
  |  Branch (3387:3): [True: 22, False: 441]
  ------------------
 3388|     28|  case ARM::Q5:  return ARM::D10;
  ------------------
  |  Branch (3388:3): [True: 28, False: 435]
  ------------------
 3389|     24|  case ARM::Q6:  return ARM::D12;
  ------------------
  |  Branch (3389:3): [True: 24, False: 439]
  ------------------
 3390|     76|  case ARM::Q7:  return ARM::D14;
  ------------------
  |  Branch (3390:3): [True: 76, False: 387]
  ------------------
 3391|     19|  case ARM::Q8:  return ARM::D16;
  ------------------
  |  Branch (3391:3): [True: 19, False: 444]
  ------------------
 3392|     12|  case ARM::Q9:  return ARM::D18;
  ------------------
  |  Branch (3392:3): [True: 12, False: 451]
  ------------------
 3393|     10|  case ARM::Q10: return ARM::D20;
  ------------------
  |  Branch (3393:3): [True: 10, False: 453]
  ------------------
 3394|     14|  case ARM::Q11: return ARM::D22;
  ------------------
  |  Branch (3394:3): [True: 14, False: 449]
  ------------------
 3395|      7|  case ARM::Q12: return ARM::D24;
  ------------------
  |  Branch (3395:3): [True: 7, False: 456]
  ------------------
 3396|      8|  case ARM::Q13: return ARM::D26;
  ------------------
  |  Branch (3396:3): [True: 8, False: 455]
  ------------------
 3397|      9|  case ARM::Q14: return ARM::D28;
  ------------------
  |  Branch (3397:3): [True: 9, False: 454]
  ------------------
 3398|     30|  case ARM::Q15: return ARM::D30;
  ------------------
  |  Branch (3398:3): [True: 30, False: 433]
  ------------------
 3399|    463|  }
 3400|    463|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser15parseITCondCodeERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEERj:
 3242|    619|ARMAsmParser::parseITCondCode(OperandVector &Operands, unsigned int &ErrorCode) {
 3243|    619|  MCAsmParser &Parser = getParser();
 3244|    619|  SMLoc S = Parser.getTok().getLoc();
 3245|    619|  const AsmToken &Tok = Parser.getTok();
 3246|    619|  if (!Tok.is(AsmToken::Identifier))
  ------------------
  |  Branch (3246:7): [True: 54, False: 565]
  ------------------
 3247|     54|    return MatchOperand_NoMatch;
 3248|    565|  unsigned CC = StringSwitch<unsigned>(Tok.getString().lower())
 3249|    565|    .Case("eq", ARMCC::EQ)
 3250|    565|    .Case("ne", ARMCC::NE)
 3251|    565|    .Case("hs", ARMCC::HS)
 3252|    565|    .Case("cs", ARMCC::HS)
 3253|    565|    .Case("lo", ARMCC::LO)
 3254|    565|    .Case("cc", ARMCC::LO)
 3255|    565|    .Case("mi", ARMCC::MI)
 3256|    565|    .Case("pl", ARMCC::PL)
 3257|    565|    .Case("vs", ARMCC::VS)
 3258|    565|    .Case("vc", ARMCC::VC)
 3259|    565|    .Case("hi", ARMCC::HI)
 3260|    565|    .Case("ls", ARMCC::LS)
 3261|    565|    .Case("ge", ARMCC::GE)
 3262|    565|    .Case("lt", ARMCC::LT)
 3263|    565|    .Case("gt", ARMCC::GT)
 3264|    565|    .Case("le", ARMCC::LE)
 3265|    565|    .Case("al", ARMCC::AL)
 3266|    565|    .Default(~0U);
 3267|    565|  if (CC == ~0U)
  ------------------
  |  Branch (3267:7): [True: 127, False: 438]
  ------------------
 3268|    127|    return MatchOperand_NoMatch;
 3269|    438|  Parser.Lex(); // Eat the token.
 3270|       |
 3271|    438|  Operands.push_back(ARMOperand::CreateCondCode(ARMCC::CondCodes(CC), S));
 3272|       |
 3273|    438|  return MatchOperand_Success;
 3274|    565|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser29tryParseRegisterWithWriteBackERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEE:
 3143|  57.9k|{
 3144|  57.9k|  MCAsmParser &Parser = getParser();
 3145|  57.9k|  const AsmToken &RegTok = Parser.getTok();
 3146|  57.9k|  int RegNo = tryParseRegister();
 3147|  57.9k|  if (RegNo == -1)
  ------------------
  |  Branch (3147:7): [True: 27.8k, False: 30.0k]
  ------------------
 3148|  27.8k|    return true;
 3149|       |
 3150|  30.0k|  Operands.push_back(ARMOperand::CreateReg(RegNo, RegTok.getLoc(),
 3151|  30.0k|                                           RegTok.getEndLoc()));
 3152|       |
 3153|  30.0k|  const AsmToken &ExclaimTok = Parser.getTok();
 3154|  30.0k|  if (ExclaimTok.is(AsmToken::Exclaim)) {
  ------------------
  |  Branch (3154:7): [True: 128, False: 29.9k]
  ------------------
 3155|    128|    Operands.push_back(ARMOperand::CreateToken(ExclaimTok.getString(),
 3156|    128|                                               ExclaimTok.getLoc()));
 3157|    128|    Parser.Lex(); // Eat exclaim token
 3158|    128|    return false;
 3159|    128|  }
 3160|       |
 3161|       |  // Also check for an index operand. This is only legal for vector registers,
 3162|       |  // but that'll get caught OK in operand matching, so we don't need to
 3163|       |  // explicitly filter everything else out here.
 3164|  29.9k|  if (Parser.getTok().is(AsmToken::LBrac)) {
  ------------------
  |  Branch (3164:7): [True: 128, False: 29.8k]
  ------------------
 3165|    128|    SMLoc SIdx = Parser.getTok().getLoc();
 3166|    128|    Parser.Lex(); // Eat left bracket token.
 3167|       |
 3168|    128|    const MCExpr *ImmVal;
 3169|    128|    if (getParser().parseExpression(ImmVal))
  ------------------
  |  Branch (3169:9): [True: 42, False: 86]
  ------------------
 3170|     42|      return true;
 3171|     86|    const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(ImmVal);
 3172|     86|    if (!MCE)
  ------------------
  |  Branch (3172:9): [True: 13, False: 73]
  ------------------
 3173|       |      //return TokError("immediate value expected for vector index");
 3174|     13|      return true;
 3175|       |
 3176|     73|    if (Parser.getTok().isNot(AsmToken::RBrac))
  ------------------
  |  Branch (3176:9): [True: 51, False: 22]
  ------------------
 3177|       |      //return Error(Parser.getTok().getLoc(), "']' expected");
 3178|     51|      return true;
 3179|       |
 3180|     22|    SMLoc E = Parser.getTok().getEndLoc();
 3181|     22|    Parser.Lex(); // Eat right bracket token.
 3182|       |
 3183|     22|    Operands.push_back(ARMOperand::CreateVectorIndex(MCE->getValue(),
 3184|     22|                                                     SIdx, E,
 3185|     22|                                                     getContext()));
 3186|     22|  }
 3187|       |
 3188|  29.8k|  return false;
 3189|  29.9k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand17CreateVectorIndexEjN7llvm_ks5SMLocES2_RNS1_9MCContextE:
 2735|     22|  CreateVectorIndex(unsigned Idx, SMLoc S, SMLoc E, MCContext &Ctx) {
 2736|     22|    auto Op = make_unique<ARMOperand>(k_VectorIndex);
 2737|     22|    Op->VectorIndex.Val = Idx;
 2738|     22|    Op->StartLoc = S;
 2739|     22|    Op->EndLoc = E;
 2740|     22|    return Op;
 2741|     22|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21tryParseShiftRegisterERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEE:
 3038|  27.9k|{
 3039|  27.9k|  MCAsmParser &Parser = getParser();
 3040|  27.9k|  SMLoc S = Parser.getTok().getLoc();
 3041|  27.9k|  const AsmToken &Tok = Parser.getTok();
 3042|  27.9k|  if (Tok.isNot(AsmToken::Identifier))
  ------------------
  |  Branch (3042:7): [True: 31, False: 27.9k]
  ------------------
 3043|     31|    return -1; 
 3044|       |
 3045|  27.9k|  std::string lowerCase = Tok.getString().lower();
 3046|  27.9k|  ARM_AM::ShiftOpc ShiftTy = StringSwitch<ARM_AM::ShiftOpc>(lowerCase)
 3047|  27.9k|      .Case("asl", ARM_AM::lsl)
 3048|  27.9k|      .Case("lsl", ARM_AM::lsl)
 3049|  27.9k|      .Case("lsr", ARM_AM::lsr)
 3050|  27.9k|      .Case("asr", ARM_AM::asr)
 3051|  27.9k|      .Case("ror", ARM_AM::ror)
 3052|  27.9k|      .Case("rrx", ARM_AM::rrx)
 3053|  27.9k|      .Default(ARM_AM::no_shift);
 3054|       |
 3055|  27.9k|  if (ShiftTy == ARM_AM::no_shift)
  ------------------
  |  Branch (3055:7): [True: 27.4k, False: 475]
  ------------------
 3056|  27.4k|    return 1;
 3057|       |
 3058|    475|  Parser.Lex(); // Eat the operator.
 3059|       |
 3060|       |  // The source register for the shift has already been added to the
 3061|       |  // operand list, so we need to pop it off and combine it into the shifted
 3062|       |  // register operand instead.
 3063|    475|  std::unique_ptr<ARMOperand> PrevOp(
 3064|    475|      (ARMOperand *)Operands.pop_back_val().release());
 3065|    475|  if (!PrevOp->isReg())
  ------------------
  |  Branch (3065:7): [True: 14, False: 461]
  ------------------
 3066|       |    //return Error(PrevOp->getStartLoc(), "shift must be of a register");
 3067|     14|    return -1;
 3068|    461|  int SrcReg = PrevOp->getReg();
 3069|       |
 3070|    461|  SMLoc EndLoc;
 3071|    461|  int64_t Imm = 0;
 3072|    461|  int ShiftReg = 0;
 3073|    461|  if (ShiftTy == ARM_AM::rrx) {
  ------------------
  |  Branch (3073:7): [True: 138, False: 323]
  ------------------
 3074|       |    // RRX Doesn't have an explicit shift amount. The encoder expects
 3075|       |    // the shift register to be the same as the source register. Seems odd,
 3076|       |    // but OK.
 3077|    138|    ShiftReg = SrcReg;
 3078|    323|  } else {
 3079|       |    // Figure out if this is shifted by a constant or a register (for non-RRX).
 3080|    323|    if (Parser.getTok().is(AsmToken::Hash) ||
  ------------------
  |  Branch (3080:9): [True: 225, False: 98]
  ------------------
 3081|    255|        Parser.getTok().is(AsmToken::Dollar)) {
  ------------------
  |  Branch (3081:9): [True: 30, False: 68]
  ------------------
 3082|    255|      Parser.Lex(); // Eat hash.
 3083|       |      //SMLoc ImmLoc = Parser.getTok().getLoc();
 3084|    255|      const MCExpr *ShiftExpr = nullptr;
 3085|    255|      if (getParser().parseExpression(ShiftExpr, EndLoc)) {
  ------------------
  |  Branch (3085:11): [True: 11, False: 244]
  ------------------
 3086|       |        //Error(ImmLoc, "invalid immediate shift value");
 3087|     11|        return -1;
 3088|     11|      }
 3089|       |      // The expression must be evaluatable as an immediate.
 3090|    244|      const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(ShiftExpr);
 3091|    244|      if (!CE) {
  ------------------
  |  Branch (3091:11): [True: 3, False: 241]
  ------------------
 3092|       |        //Error(ImmLoc, "invalid immediate shift value");
 3093|      3|        return -1;
 3094|      3|      }
 3095|       |      // Range check the immediate.
 3096|       |      // lsl, ror: 0 <= imm <= 31
 3097|       |      // lsr, asr: 0 <= imm <= 32
 3098|    241|      Imm = CE->getValue();
 3099|    241|      if (Imm < 0 ||
  ------------------
  |  Branch (3099:11): [True: 6, False: 235]
  ------------------
 3100|    235|          ((ShiftTy == ARM_AM::lsl || ShiftTy == ARM_AM::ror) && Imm > 31) ||
  ------------------
  |  Branch (3100:13): [True: 73, False: 162]
  |  Branch (3100:39): [True: 6, False: 156]
  |  Branch (3100:66): [True: 7, False: 72]
  ------------------
 3101|    228|          ((ShiftTy == ARM_AM::lsr || ShiftTy == ARM_AM::asr) && Imm > 32)) {
  ------------------
  |  Branch (3101:13): [True: 135, False: 93]
  |  Branch (3101:39): [True: 21, False: 72]
  |  Branch (3101:66): [True: 20, False: 136]
  ------------------
 3102|       |        //Error(ImmLoc, "immediate shift value out of range");
 3103|     33|        return -1;
 3104|     33|      }
 3105|       |      // shift by zero is a nop. Always send it through as lsl.
 3106|       |      // ('as' compatibility)
 3107|    208|      if (Imm == 0)
  ------------------
  |  Branch (3107:11): [True: 56, False: 152]
  ------------------
 3108|     56|        ShiftTy = ARM_AM::lsl;
 3109|    208|    } else if (Parser.getTok().is(AsmToken::Identifier)) {
  ------------------
  |  Branch (3109:16): [True: 61, False: 7]
  ------------------
 3110|       |      //SMLoc L = Parser.getTok().getLoc();
 3111|     61|      EndLoc = Parser.getTok().getEndLoc();
 3112|     61|      ShiftReg = tryParseRegister();
 3113|     61|      if (ShiftReg == -1) {
  ------------------
  |  Branch (3113:11): [True: 3, False: 58]
  ------------------
 3114|       |        //Error(L, "expected immediate or register in shift operand");
 3115|      3|        return -1;
 3116|      3|      }
 3117|     61|    } else {
 3118|       |      //Error(Parser.getTok().getLoc(),
 3119|       |      //      "expected immediate or register in shift operand");
 3120|      7|      return -1;
 3121|      7|    }
 3122|    323|  }
 3123|       |
 3124|    404|  if (ShiftReg && ShiftTy != ARM_AM::rrx)
  ------------------
  |  Branch (3124:7): [True: 196, False: 208]
  |  Branch (3124:19): [True: 58, False: 138]
  ------------------
 3125|     58|    Operands.push_back(ARMOperand::CreateShiftedRegister(ShiftTy, SrcReg,
 3126|     58|                                                         ShiftReg, Imm,
 3127|     58|                                                         S, EndLoc));
 3128|    346|  else
 3129|    346|    Operands.push_back(ARMOperand::CreateShiftedImmediate(ShiftTy, SrcReg, Imm,
 3130|    346|                                                          S, EndLoc));
 3131|       |
 3132|    404|  return 0;
 3133|    461|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand21CreateShiftedRegisterEN7llvm_ks6ARM_AM8ShiftOpcEjjjNS1_5SMLocES4_:
 2610|     58|                        SMLoc E) {
 2611|     58|    auto Op = make_unique<ARMOperand>(k_ShiftedRegister);
 2612|     58|    Op->RegShiftedReg.ShiftTy = ShTy;
 2613|     58|    Op->RegShiftedReg.SrcReg = SrcReg;
 2614|     58|    Op->RegShiftedReg.ShiftReg = ShiftReg;
 2615|     58|    Op->RegShiftedReg.ShiftImm = ShiftImm;
 2616|     58|    Op->StartLoc = S;
 2617|     58|    Op->EndLoc = E;
 2618|     58|    return Op;
 2619|     58|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand22CreateShiftedImmediateEN7llvm_ks6ARM_AM8ShiftOpcEjjNS1_5SMLocES4_:
 2623|    346|                         unsigned ShiftImm, SMLoc S, SMLoc E) {
 2624|    346|    auto Op = make_unique<ARMOperand>(k_ShiftedImmediate);
 2625|    346|    Op->RegShiftedImm.ShiftTy = ShTy;
 2626|    346|    Op->RegShiftedImm.SrcReg = SrcReg;
 2627|    346|    Op->RegShiftedImm.ShiftImm = ShiftImm;
 2628|    346|    Op->StartLoc = S;
 2629|    346|    Op->EndLoc = E;
 2630|    346|    return Op;
 2631|    346|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser11parseMemoryERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEE:
 4868|  1.22k|{
 4869|  1.22k|  MCAsmParser &Parser = getParser();
 4870|  1.22k|  SMLoc S, E;
 4871|  1.22k|  assert(Parser.getTok().is(AsmToken::LBrac) &&
  ------------------
  |  Branch (4871:3): [True: 1.22k, False: 0]
  |  Branch (4871:3): [True: 1.22k, Folded]
  |  Branch (4871:3): [True: 1.22k, False: 0]
  ------------------
 4872|  1.22k|         "Token is not a Left Bracket");
 4873|  1.22k|  S = Parser.getTok().getLoc();
 4874|  1.22k|  Parser.Lex(); // Eat left bracket token.
 4875|       |
 4876|       |  //const AsmToken &BaseRegTok = Parser.getTok();
 4877|  1.22k|  int BaseRegNum = tryParseRegister();
 4878|  1.22k|  if (BaseRegNum == -1)
  ------------------
  |  Branch (4878:7): [True: 29, False: 1.19k]
  ------------------
 4879|       |    //return Error(BaseRegTok.getLoc(), "register expected");
 4880|     29|    return true;
 4881|       |
 4882|       |  // The next token must either be a comma, a colon or a closing bracket.
 4883|  1.19k|  const AsmToken &Tok = Parser.getTok();
 4884|  1.19k|  if (!Tok.is(AsmToken::Colon) && !Tok.is(AsmToken::Comma) &&
  ------------------
  |  Branch (4884:7): [True: 1.14k, False: 48]
  |  Branch (4884:35): [True: 814, False: 329]
  ------------------
 4885|    814|      !Tok.is(AsmToken::RBrac))
  ------------------
  |  Branch (4885:7): [True: 8, False: 806]
  ------------------
 4886|       |    //return Error(Tok.getLoc(), "malformed memory operand");
 4887|      8|    return true;
 4888|       |
 4889|  1.18k|  if (Tok.is(AsmToken::RBrac)) {
  ------------------
  |  Branch (4889:7): [True: 806, False: 377]
  ------------------
 4890|    806|    E = Tok.getEndLoc();
 4891|    806|    Parser.Lex(); // Eat right bracket token.
 4892|       |
 4893|    806|    Operands.push_back(ARMOperand::CreateMem(BaseRegNum, nullptr, 0,
 4894|    806|                                             ARM_AM::no_shift, 0, 0, false,
 4895|    806|                                             S, E));
 4896|       |
 4897|       |    // If there's a pre-indexing writeback marker, '!', just add it as a token
 4898|       |    // operand. It's rather odd, but syntactically valid.
 4899|    806|    if (Parser.getTok().is(AsmToken::Exclaim)) {
  ------------------
  |  Branch (4899:9): [True: 6, False: 800]
  ------------------
 4900|      6|      Operands.push_back(ARMOperand::CreateToken("!",Parser.getTok().getLoc()));
 4901|      6|      Parser.Lex(); // Eat the '!'.
 4902|      6|    }
 4903|       |
 4904|    806|    return false;
 4905|    806|  }
 4906|       |
 4907|  1.18k|  assert((Tok.is(AsmToken::Colon) || Tok.is(AsmToken::Comma)) &&
  ------------------
  |  Branch (4907:3): [True: 48, False: 329]
  |  Branch (4907:3): [True: 329, False: 0]
  |  Branch (4907:3): [True: 377, Folded]
  |  Branch (4907:3): [True: 377, False: 0]
  ------------------
 4908|    377|         "Lost colon or comma in memory operand?!");
 4909|    377|  if (Tok.is(AsmToken::Comma)) {
  ------------------
  |  Branch (4909:7): [True: 329, False: 48]
  ------------------
 4910|    329|    Parser.Lex(); // Eat the comma.
 4911|    329|  }
 4912|       |
 4913|       |  // If we have a ':', it's an alignment specifier.
 4914|    377|  if (Parser.getTok().is(AsmToken::Colon)) {
  ------------------
  |  Branch (4914:7): [True: 48, False: 329]
  ------------------
 4915|     48|    Parser.Lex(); // Eat the ':'.
 4916|     48|    E = Parser.getTok().getLoc();
 4917|     48|    SMLoc AlignmentLoc = Tok.getLoc();
 4918|       |
 4919|     48|    const MCExpr *Expr;
 4920|     48|    if (getParser().parseExpression(Expr))
  ------------------
  |  Branch (4920:9): [True: 11, False: 37]
  ------------------
 4921|     11|     return true;
 4922|       |
 4923|       |    // The expression has to be a constant. Memory references with relocations
 4924|       |    // don't come through here, as they use the <label> forms of the relevant
 4925|       |    // instructions.
 4926|     37|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr);
 4927|     37|    if (!CE)
  ------------------
  |  Branch (4927:9): [True: 1, False: 36]
  ------------------
 4928|       |      //return Error (E, "constant expression expected");
 4929|      1|      return true;
 4930|       |
 4931|     36|    unsigned Align = 0;
 4932|     36|    switch (CE->getValue()) {
 4933|     31|    default:
  ------------------
  |  Branch (4933:5): [True: 31, False: 5]
  ------------------
 4934|       |      //return Error(E,
 4935|       |      //             "alignment specifier must be 16, 32, 64, 128, or 256 bits");
 4936|     31|      return true;
 4937|      1|    case 16:  Align = 2; break;
  ------------------
  |  Branch (4937:5): [True: 1, False: 35]
  ------------------
 4938|      1|    case 32:  Align = 4; break;
  ------------------
  |  Branch (4938:5): [True: 1, False: 35]
  ------------------
 4939|      1|    case 64:  Align = 8; break;
  ------------------
  |  Branch (4939:5): [True: 1, False: 35]
  ------------------
 4940|      1|    case 128: Align = 16; break;
  ------------------
  |  Branch (4940:5): [True: 1, False: 35]
  ------------------
 4941|      1|    case 256: Align = 32; break;
  ------------------
  |  Branch (4941:5): [True: 1, False: 35]
  ------------------
 4942|     36|    }
 4943|       |
 4944|       |    // Now we should have the closing ']'
 4945|      5|    if (Parser.getTok().isNot(AsmToken::RBrac))
  ------------------
  |  Branch (4945:9): [True: 4, False: 1]
  ------------------
 4946|       |      //return Error(Parser.getTok().getLoc(), "']' expected");
 4947|      4|      return true;
 4948|      1|    E = Parser.getTok().getEndLoc();
 4949|      1|    Parser.Lex(); // Eat right bracket token.
 4950|       |
 4951|       |    // Don't worry about range checking the value here. That's handled by
 4952|       |    // the is*() predicates.
 4953|      1|    Operands.push_back(ARMOperand::CreateMem(BaseRegNum, nullptr, 0,
 4954|      1|                                             ARM_AM::no_shift, 0, Align,
 4955|      1|                                             false, S, E, AlignmentLoc));
 4956|       |
 4957|       |    // If there's a pre-indexing writeback marker, '!', just add it as a token
 4958|       |    // operand.
 4959|      1|    if (Parser.getTok().is(AsmToken::Exclaim)) {
  ------------------
  |  Branch (4959:9): [True: 0, False: 1]
  ------------------
 4960|      0|      Operands.push_back(ARMOperand::CreateToken("!",Parser.getTok().getLoc()));
 4961|      0|      Parser.Lex(); // Eat the '!'.
 4962|      0|    }
 4963|       |
 4964|      1|    return false;
 4965|      5|  }
 4966|       |
 4967|       |  // If we have a '#', it's an immediate offset, else assume it's a register
 4968|       |  // offset. Be friendly and also accept a plain integer (without a leading
 4969|       |  // hash) for gas compatibility.
 4970|    329|  if (Parser.getTok().is(AsmToken::Hash) ||
  ------------------
  |  Branch (4970:7): [True: 20, False: 309]
  ------------------
 4971|    309|      Parser.getTok().is(AsmToken::Dollar) ||
  ------------------
  |  Branch (4971:7): [True: 8, False: 301]
  ------------------
 4972|    301|      Parser.getTok().is(AsmToken::Integer)) {
  ------------------
  |  Branch (4972:7): [True: 145, False: 156]
  ------------------
 4973|    173|    if (Parser.getTok().isNot(AsmToken::Integer))
  ------------------
  |  Branch (4973:9): [True: 28, False: 145]
  ------------------
 4974|     28|      Parser.Lex(); // Eat '#' or '$'.
 4975|    173|    E = Parser.getTok().getLoc();
 4976|       |
 4977|    173|    bool isNegative = getParser().getTok().is(AsmToken::Minus);
 4978|    173|    const MCExpr *Offset;
 4979|    173|    if (getParser().parseExpression(Offset))
  ------------------
  |  Branch (4979:9): [True: 13, False: 160]
  ------------------
 4980|     13|     return true;
 4981|       |
 4982|       |    // The expression has to be a constant. Memory references with relocations
 4983|       |    // don't come through here, as they use the <label> forms of the relevant
 4984|       |    // instructions.
 4985|    160|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Offset);
 4986|    160|    if (!CE)
  ------------------
  |  Branch (4986:9): [True: 4, False: 156]
  ------------------
 4987|      4|      return Error (E, "constant expression expected");
 4988|       |
 4989|       |    // If the constant was #-0, represent it as INT32_MIN.
 4990|    156|    int32_t Val = CE->getValue();
 4991|    156|    if (isNegative && Val == 0)
  ------------------
  |  Branch (4991:9): [True: 8, False: 148]
  |  Branch (4991:23): [True: 1, False: 7]
  ------------------
 4992|      1|      CE = MCConstantExpr::create(INT32_MIN, getContext());
 4993|       |
 4994|       |    // Now we should have the closing ']'
 4995|    156|    if (Parser.getTok().isNot(AsmToken::RBrac))
  ------------------
  |  Branch (4995:9): [True: 12, False: 144]
  ------------------
 4996|       |      //return Error(Parser.getTok().getLoc(), "']' expected");
 4997|     12|      return true;
 4998|    144|    E = Parser.getTok().getEndLoc();
 4999|    144|    Parser.Lex(); // Eat right bracket token.
 5000|       |
 5001|       |    // Don't worry about range checking the value here. That's handled by
 5002|       |    // the is*() predicates.
 5003|    144|    Operands.push_back(ARMOperand::CreateMem(BaseRegNum, CE, 0,
 5004|    144|                                             ARM_AM::no_shift, 0, 0,
 5005|    144|                                             false, S, E));
 5006|       |
 5007|       |    // If there's a pre-indexing writeback marker, '!', just add it as a token
 5008|       |    // operand.
 5009|    144|    if (Parser.getTok().is(AsmToken::Exclaim)) {
  ------------------
  |  Branch (5009:9): [True: 6, False: 138]
  ------------------
 5010|      6|      Operands.push_back(ARMOperand::CreateToken("!",Parser.getTok().getLoc()));
 5011|      6|      Parser.Lex(); // Eat the '!'.
 5012|      6|    }
 5013|       |
 5014|    144|    return false;
 5015|    156|  }
 5016|       |
 5017|       |  // The register offset is optionally preceded by a '+' or '-'
 5018|    156|  bool isNegative = false;
 5019|    156|  if (Parser.getTok().is(AsmToken::Minus)) {
  ------------------
  |  Branch (5019:7): [True: 5, False: 151]
  ------------------
 5020|      5|    isNegative = true;
 5021|      5|    Parser.Lex(); // Eat the '-'.
 5022|    151|  } else if (Parser.getTok().is(AsmToken::Plus)) {
  ------------------
  |  Branch (5022:14): [True: 1, False: 150]
  ------------------
 5023|       |    // Nothing to do.
 5024|      1|    Parser.Lex(); // Eat the '+'.
 5025|      1|  }
 5026|       |
 5027|    156|  E = Parser.getTok().getLoc();
 5028|    156|  int OffsetRegNum = tryParseRegister();
 5029|    156|  if (OffsetRegNum == -1)
  ------------------
  |  Branch (5029:7): [True: 3, False: 153]
  ------------------
 5030|       |    //return Error(E, "register expected");
 5031|      3|    return true;
 5032|       |
 5033|       |  // If there's a shift operator, handle it.
 5034|    153|  ARM_AM::ShiftOpc ShiftType = ARM_AM::no_shift;
 5035|    153|  unsigned ShiftImm = 0;
 5036|    153|  if (Parser.getTok().is(AsmToken::Comma)) {
  ------------------
  |  Branch (5036:7): [True: 96, False: 57]
  ------------------
 5037|     96|    Parser.Lex(); // Eat the ','.
 5038|     96|    if (parseMemRegOffsetShift(ShiftType, ShiftImm))
  ------------------
  |  Branch (5038:9): [True: 91, False: 5]
  ------------------
 5039|     91|      return true;
 5040|     96|  }
 5041|       |
 5042|       |  // Now we should have the closing ']'
 5043|     62|  if (Parser.getTok().isNot(AsmToken::RBrac))
  ------------------
  |  Branch (5043:7): [True: 8, False: 54]
  ------------------
 5044|       |    //return Error(Parser.getTok().getLoc(), "']' expected");
 5045|      8|    return true;
 5046|     54|  E = Parser.getTok().getEndLoc();
 5047|     54|  Parser.Lex(); // Eat right bracket token.
 5048|       |
 5049|     54|  Operands.push_back(ARMOperand::CreateMem(BaseRegNum, nullptr, OffsetRegNum,
 5050|     54|                                           ShiftType, ShiftImm, 0, isNegative,
 5051|     54|                                           S, E));
 5052|       |
 5053|       |  // If there's a pre-indexing writeback marker, '!', just add it as a token
 5054|       |  // operand.
 5055|     54|  if (Parser.getTok().is(AsmToken::Exclaim)) {
  ------------------
  |  Branch (5055:7): [True: 12, False: 42]
  ------------------
 5056|     12|    Operands.push_back(ARMOperand::CreateToken("!",Parser.getTok().getLoc()));
 5057|     12|    Parser.Lex(); // Eat the '!'.
 5058|     12|  }
 5059|       |
 5060|     54|  return false;
 5061|     62|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand9CreateMemEjPKN7llvm_ks14MCConstantExprEjNS1_6ARM_AM8ShiftOpcEjjbNS1_5SMLocES7_S7_:
 2756|  1.00k|            SMLoc E, SMLoc AlignmentLoc = SMLoc()) {
 2757|  1.00k|    auto Op = make_unique<ARMOperand>(k_Memory);
 2758|  1.00k|    Op->Memory.BaseRegNum = BaseRegNum;
 2759|  1.00k|    Op->Memory.OffsetImm = OffsetImm;
 2760|  1.00k|    Op->Memory.OffsetRegNum = OffsetRegNum;
 2761|  1.00k|    Op->Memory.ShiftType = ShiftType;
 2762|  1.00k|    Op->Memory.ShiftImm = ShiftImm;
 2763|  1.00k|    Op->Memory.Alignment = Alignment;
 2764|  1.00k|    Op->Memory.isNegative = isNegative;
 2765|  1.00k|    Op->StartLoc = S;
 2766|  1.00k|    Op->EndLoc = E;
 2767|  1.00k|    Op->AlignmentLoc = AlignmentLoc;
 2768|  1.00k|    return Op;
 2769|  1.00k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17parseRegisterListERN7llvm_ks15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS3_14default_deleteIS5_EEEEEE:
 3404|    348|{
 3405|    348|  MCAsmParser &Parser = getParser();
 3406|    348|  assert(Parser.getTok().is(AsmToken::LCurly) &&
  ------------------
  |  Branch (3406:3): [True: 348, False: 0]
  |  Branch (3406:3): [True: 348, Folded]
  |  Branch (3406:3): [True: 348, False: 0]
  ------------------
 3407|    348|         "Token is not a Left Curly Brace");
 3408|    348|  SMLoc S = Parser.getTok().getLoc();
 3409|    348|  Parser.Lex(); // Eat '{' token.
 3410|    348|  SMLoc RegLoc = Parser.getTok().getLoc();
 3411|       |
 3412|       |  // Check the first register in the list to see what register class
 3413|       |  // this is a list of.
 3414|    348|  int Reg = tryParseRegister();
 3415|    348|  if (Reg == -1)
  ------------------
  |  Branch (3415:7): [True: 61, False: 287]
  ------------------
 3416|       |    //return Error(RegLoc, "register expected");
 3417|     61|    return true;
 3418|       |
 3419|       |  // The reglist instructions have at most 16 registers, so reserve
 3420|       |  // space for that many.
 3421|    287|  int EReg = 0;
 3422|    287|  SmallVector<std::pair<unsigned, unsigned>, 16> Registers;
 3423|       |
 3424|       |  // Allow Q regs and just interpret them as the two D sub-registers.
 3425|    287|  if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(Reg)) {
  ------------------
  |  Branch (3425:7): [True: 118, False: 169]
  ------------------
 3426|    118|    Reg = getDRegFromQReg(Reg);
 3427|    118|    EReg = MRI->getEncodingValue(Reg);
 3428|    118|    Registers.push_back(std::pair<unsigned, unsigned>(EReg, Reg));
 3429|    118|    ++Reg;
 3430|    118|  }
 3431|    287|  const MCRegisterClass *RC;
 3432|    287|  if (ARMMCRegisterClasses[ARM::GPRRegClassID].contains(Reg))
  ------------------
  |  Branch (3432:7): [True: 114, False: 173]
  ------------------
 3433|    114|    RC = &ARMMCRegisterClasses[ARM::GPRRegClassID];
 3434|    173|  else if (ARMMCRegisterClasses[ARM::DPRRegClassID].contains(Reg))
  ------------------
  |  Branch (3434:12): [True: 138, False: 35]
  ------------------
 3435|    138|    RC = &ARMMCRegisterClasses[ARM::DPRRegClassID];
 3436|     35|  else if (ARMMCRegisterClasses[ARM::SPRRegClassID].contains(Reg))
  ------------------
  |  Branch (3436:12): [True: 33, False: 2]
  ------------------
 3437|     33|    RC = &ARMMCRegisterClasses[ARM::SPRRegClassID];
 3438|      2|  else
 3439|       |    //return Error(RegLoc, "invalid register in register list");
 3440|      2|    return true;
 3441|       |
 3442|       |  // Store the register.
 3443|    285|  EReg = MRI->getEncodingValue(Reg);
 3444|    285|  Registers.push_back(std::pair<unsigned, unsigned>(EReg, Reg));
 3445|       |
 3446|       |  // This starts immediately after the first register token in the list,
 3447|       |  // so we can see either a comma or a minus (range separator) as a legal
 3448|       |  // next token.
 3449|  1.03k|  while (Parser.getTok().is(AsmToken::Comma) ||
  ------------------
  |  Branch (3449:10): [True: 499, False: 539]
  ------------------
 3450|    842|         Parser.getTok().is(AsmToken::Minus)) {
  ------------------
  |  Branch (3450:10): [True: 343, False: 196]
  ------------------
 3451|    842|    if (Parser.getTok().is(AsmToken::Minus)) {
  ------------------
  |  Branch (3451:9): [True: 343, False: 499]
  ------------------
 3452|    343|      Parser.Lex(); // Eat the minus.
 3453|       |      //SMLoc AfterMinusLoc = Parser.getTok().getLoc();
 3454|    343|      int EndReg = tryParseRegister();
 3455|    343|      if (EndReg == -1)
  ------------------
  |  Branch (3455:11): [True: 20, False: 323]
  ------------------
 3456|       |        //return Error(AfterMinusLoc, "register expected");
 3457|     20|        return true;
 3458|       |      // Allow Q regs and just interpret them as the two D sub-registers.
 3459|    323|      if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(EndReg))
  ------------------
  |  Branch (3459:11): [True: 63, False: 260]
  ------------------
 3460|     63|        EndReg = getDRegFromQReg(EndReg) + 1;
 3461|       |      // If the register is the same as the start reg, there's nothing
 3462|       |      // more to do.
 3463|    323|      if (Reg == EndReg)
  ------------------
  |  Branch (3463:11): [True: 181, False: 142]
  ------------------
 3464|    181|        continue;
 3465|       |      // The register must be in the same register class as the first.
 3466|    142|      if (!RC->contains(EndReg))
  ------------------
  |  Branch (3466:11): [True: 3, False: 139]
  ------------------
 3467|       |        //return Error(AfterMinusLoc, "invalid register in register list");
 3468|      3|        return true;
 3469|       |      // Ranges must go from low to high.
 3470|    139|      if (MRI->getEncodingValue(Reg) > MRI->getEncodingValue(EndReg))
  ------------------
  |  Branch (3470:11): [True: 6, False: 133]
  ------------------
 3471|       |        //return Error(AfterMinusLoc, "bad range in register list");
 3472|      6|        return true;
 3473|       |
 3474|       |      // Add all the registers in the range to the register list.
 3475|  1.17k|      while (Reg != EndReg) {
  ------------------
  |  Branch (3475:14): [True: 1.04k, False: 133]
  ------------------
 3476|  1.04k|        Reg = getNextRegister(Reg);
 3477|  1.04k|        EReg = MRI->getEncodingValue(Reg);
 3478|  1.04k|        Registers.push_back(std::pair<unsigned, unsigned>(EReg, Reg));
 3479|  1.04k|      }
 3480|    133|      continue;
 3481|    139|    }
 3482|    499|    Parser.Lex(); // Eat the comma.
 3483|    499|    RegLoc = Parser.getTok().getLoc();
 3484|    499|    int OldReg = Reg;
 3485|    499|    const AsmToken RegTok = Parser.getTok();
 3486|    499|    Reg = tryParseRegister();
 3487|    499|    if (Reg == -1)
  ------------------
  |  Branch (3487:9): [True: 46, False: 453]
  ------------------
 3488|       |      //return Error(RegLoc, "register expected");
 3489|     46|      return true;
 3490|       |    // Allow Q regs and just interpret them as the two D sub-registers.
 3491|    453|    bool isQReg = false;
 3492|    453|    if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(Reg)) {
  ------------------
  |  Branch (3492:9): [True: 103, False: 350]
  ------------------
 3493|    103|      Reg = getDRegFromQReg(Reg);
 3494|    103|      isQReg = true;
 3495|    103|    }
 3496|       |    // The register must be in the same register class as the first.
 3497|    453|    if (!RC->contains(Reg))
  ------------------
  |  Branch (3497:9): [True: 2, False: 451]
  ------------------
 3498|       |      //return Error(RegLoc, "invalid register in register list");
 3499|      2|      return true;
 3500|       |    // List must be monotonically increasing.
 3501|    451|    if (MRI->getEncodingValue(Reg) < MRI->getEncodingValue(OldReg)) {
  ------------------
  |  Branch (3501:9): [True: 180, False: 271]
  ------------------
 3502|    180|      if (ARMMCRegisterClasses[ARM::GPRRegClassID].contains(Reg))
  ------------------
  |  Branch (3502:11): [True: 172, False: 8]
  ------------------
 3503|    172|        Warning(RegLoc, "register list not in ascending order");
 3504|      8|      else
 3505|       |        //return Error(RegLoc, "register list not in ascending order");
 3506|      8|        return true;
 3507|    180|    }
 3508|    443|    if (MRI->getEncodingValue(Reg) == MRI->getEncodingValue(OldReg)) {
  ------------------
  |  Branch (3508:9): [True: 193, False: 250]
  ------------------
 3509|    193|      Warning(RegLoc, "duplicated register (" + RegTok.getString() +
 3510|    193|              ") in register list");
 3511|    193|      continue;
 3512|    193|    }
 3513|       |    // VFP register lists must also be contiguous.
 3514|    250|    if (RC != &ARMMCRegisterClasses[ARM::GPRRegClassID] &&
  ------------------
  |  Branch (3514:9): [True: 18, False: 232]
  ------------------
 3515|     18|        Reg != OldReg + 1)
  ------------------
  |  Branch (3515:9): [True: 4, False: 14]
  ------------------
 3516|       |      //return Error(RegLoc, "non-contiguous register range");
 3517|      4|      return true;
 3518|    246|    EReg = MRI->getEncodingValue(Reg);
 3519|    246|    Registers.push_back(std::pair<unsigned, unsigned>(EReg, Reg));
 3520|    246|    if (isQReg) {
  ------------------
  |  Branch (3520:9): [True: 14, False: 232]
  ------------------
 3521|     14|      EReg = MRI->getEncodingValue(++Reg);
 3522|     14|      Registers.push_back(std::pair<unsigned, unsigned>(EReg, Reg));
 3523|     14|    }
 3524|    246|  }
 3525|       |
 3526|    196|  if (Parser.getTok().isNot(AsmToken::RCurly))
  ------------------
  |  Branch (3526:7): [True: 62, False: 134]
  ------------------
 3527|       |    //return Error(Parser.getTok().getLoc(), "'}' expected");
 3528|     62|    return true;
 3529|    134|  SMLoc E = Parser.getTok().getEndLoc();
 3530|    134|  Parser.Lex(); // Eat '}' token.
 3531|       |
 3532|       |  // Push the register list operand.
 3533|    134|  Operands.push_back(ARMOperand::CreateRegList(Registers, S, E));
 3534|       |
 3535|       |  // The ARM system instruction variants for LDM/STM have a '^' token here.
 3536|    134|  if (Parser.getTok().is(AsmToken::Caret)) {
  ------------------
  |  Branch (3536:7): [True: 41, False: 93]
  ------------------
 3537|     41|    Operands.push_back(ARMOperand::CreateToken("^",Parser.getTok().getLoc()));
 3538|     41|    Parser.Lex(); // Eat '^' token.
 3539|     41|  }
 3540|       |
 3541|    134|  return false;
 3542|    196|}
ARMAsmParser.cpp:_ZL15getNextRegisterj:
 3360|  1.04k|static unsigned getNextRegister(unsigned Reg) {
 3361|       |  // If this is a GPR, we need to do it manually, otherwise we can rely
 3362|       |  // on the sort ordering of the enumeration since the other reg-classes
 3363|       |  // are sane.
 3364|  1.04k|  if (!ARMMCRegisterClasses[ARM::GPRRegClassID].contains(Reg))
  ------------------
  |  Branch (3364:7): [True: 175, False: 866]
  ------------------
 3365|    175|    return Reg + 1;
 3366|    866|  switch(Reg) {
 3367|      0|  default: llvm_unreachable("Invalid GPR number!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (3367:3): [True: 0, False: 866]
  ------------------
 3368|     91|  case ARM::R0:  return ARM::R1;  case ARM::R1:  return ARM::R2;
  ------------------
  |  Branch (3368:3): [True: 83, False: 783]
  |  Branch (3368:35): [True: 91, False: 775]
  ------------------
 3369|     91|  case ARM::R2:  return ARM::R3;  case ARM::R3:  return ARM::R4;
  ------------------
  |  Branch (3369:3): [True: 91, False: 775]
  |  Branch (3369:35): [True: 91, False: 775]
  ------------------
 3370|     93|  case ARM::R4:  return ARM::R5;  case ARM::R5:  return ARM::R6;
  ------------------
  |  Branch (3370:3): [True: 93, False: 773]
  |  Branch (3370:35): [True: 77, False: 789]
  ------------------
 3371|     79|  case ARM::R6:  return ARM::R7;  case ARM::R7:  return ARM::R8;
  ------------------
  |  Branch (3371:3): [True: 79, False: 787]
  |  Branch (3371:35): [True: 76, False: 790]
  ------------------
 3372|     69|  case ARM::R8:  return ARM::R9;  case ARM::R9:  return ARM::R10;
  ------------------
  |  Branch (3372:3): [True: 69, False: 797]
  |  Branch (3372:35): [True: 31, False: 835]
  ------------------
 3373|     28|  case ARM::R10: return ARM::R11; case ARM::R11: return ARM::R12;
  ------------------
  |  Branch (3373:3): [True: 27, False: 839]
  |  Branch (3373:35): [True: 28, False: 838]
  ------------------
 3374|     28|  case ARM::R12: return ARM::SP;  case ARM::SP:  return ARM::LR;
  ------------------
  |  Branch (3374:3): [True: 28, False: 838]
  |  Branch (3374:35): [True: 1, False: 865]
  ------------------
 3375|      1|  case ARM::LR:  return ARM::PC;  case ARM::PC:  return ARM::R0;
  ------------------
  |  Branch (3375:3): [True: 1, False: 865]
  |  Branch (3375:35): [True: 0, False: 866]
  ------------------
 3376|    866|  }
 3377|    866|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser7WarningEN7llvm_ks5SMLocERKNS1_5TwineENS1_8ArrayRefINS1_7SMRangeEEE:
  185|    379|               ArrayRef<SMRange> Ranges = None) {
  186|    379|    return getParser().Warning(L, Msg, Ranges);
  187|    379|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand13CreateRegListERN7llvm_ks15SmallVectorImplINSt3__14pairIjjEEEENS1_5SMLocES8_:
 2674|    134|                SMLoc StartLoc, SMLoc EndLoc) {
 2675|    134|    assert (Regs.size() > 0 && "RegList contains no registers?");
  ------------------
  |  Branch (2675:5): [True: 134, False: 0]
  |  Branch (2675:5): [True: 134, Folded]
  |  Branch (2675:5): [True: 134, False: 0]
  ------------------
 2676|    134|    KindTy Kind = k_RegisterList;
 2677|       |
 2678|    134|    if (ARMMCRegisterClasses[ARM::DPRRegClassID].contains(Regs.front().second))
  ------------------
  |  Branch (2678:9): [True: 77, False: 57]
  ------------------
 2679|     77|      Kind = k_DPRRegisterList;
 2680|     57|    else if (ARMMCRegisterClasses[ARM::SPRRegClassID].
  ------------------
  |  Branch (2680:14): [True: 7, False: 50]
  ------------------
 2681|     57|             contains(Regs.front().second))
 2682|      7|      Kind = k_SPRRegisterList;
 2683|       |
 2684|       |    // Sort based on the register encoding values.
 2685|    134|    array_pod_sort(Regs.begin(), Regs.end());
 2686|       |
 2687|    134|    auto Op = make_unique<ARMOperand>(Kind);
 2688|    134|    for (SmallVectorImpl<std::pair<unsigned, unsigned> >::const_iterator
 2689|    647|           I = Regs.begin(), E = Regs.end(); I != E; ++I)
  ------------------
  |  Branch (2689:46): [True: 513, False: 134]
  ------------------
 2690|    513|      Op->Registers.push_back(I->second);
 2691|    134|    Op->StartLoc = StartLoc;
 2692|    134|    Op->EndLoc = EndLoc;
 2693|    134|    return Op;
 2694|    134|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser11parsePrefixERN7llvm_ks9ARMMCExpr11VariantKindE:
 5364|     26|{
 5365|     26|  MCAsmParser &Parser = getParser();
 5366|     26|  RefKind = ARMMCExpr::VK_ARM_None;
 5367|       |
 5368|       |  // consume an optional '#' (GNU compatibility)
 5369|     26|  if (getLexer().is(AsmToken::Hash))
  ------------------
  |  Branch (5369:7): [True: 0, False: 26]
  ------------------
 5370|      0|    Parser.Lex();
 5371|       |
 5372|       |  // :lower16: and :upper16: modifiers
 5373|     26|  assert(getLexer().is(AsmToken::Colon) && "expected a :");
  ------------------
  |  Branch (5373:3): [True: 26, False: 0]
  |  Branch (5373:3): [True: 26, Folded]
  |  Branch (5373:3): [True: 26, False: 0]
  ------------------
 5374|     26|  Parser.Lex(); // Eat ':'
 5375|       |
 5376|     26|  if (getLexer().isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (5376:7): [True: 6, False: 20]
  ------------------
 5377|       |    //Error(Parser.getTok().getLoc(), "expected prefix identifier in operand");
 5378|      6|    return true;
 5379|      6|  }
 5380|       |
 5381|     20|  enum {
 5382|     20|    COFF = (1 << MCObjectFileInfo::IsCOFF),
 5383|     20|    ELF = (1 << MCObjectFileInfo::IsELF),
 5384|     20|    MACHO = (1 << MCObjectFileInfo::IsMachO)
 5385|     20|  };
 5386|     20|  static const struct PrefixEntry {
 5387|     20|    const char *Spelling;
 5388|     20|    ARMMCExpr::VariantKind VariantKind;
 5389|     20|    uint8_t SupportedFormats;
 5390|     20|  } PrefixEntries[] = {
 5391|     20|    { "lower16", ARMMCExpr::VK_ARM_LO16, COFF | ELF | MACHO },
 5392|     20|    { "upper16", ARMMCExpr::VK_ARM_HI16, COFF | ELF | MACHO },
 5393|     20|  };
 5394|       |
 5395|     20|  StringRef IDVal = Parser.getTok().getIdentifier();
 5396|       |
 5397|     20|  const auto &Prefix =
 5398|     20|      std::find_if(std::begin(PrefixEntries), std::end(PrefixEntries),
 5399|     20|                   [&IDVal](const PrefixEntry &PE) {
 5400|     20|                      return PE.Spelling == IDVal;
 5401|     20|                   });
 5402|     20|  if (Prefix == std::end(PrefixEntries)) {
  ------------------
  |  Branch (5402:7): [True: 7, False: 13]
  ------------------
 5403|       |    //Error(Parser.getTok().getLoc(), "unexpected prefix in operand");
 5404|      7|    return true;
 5405|      7|  }
 5406|       |
 5407|     13|  uint8_t CurrentFormat;
 5408|     13|  switch (getContext().getObjectFileInfo()->getObjectFileType()) {
  ------------------
  |  Branch (5408:11): [True: 13, False: 0]
  ------------------
 5409|      0|  case MCObjectFileInfo::IsMachO:
  ------------------
  |  Branch (5409:3): [True: 0, False: 13]
  ------------------
 5410|      0|    CurrentFormat = MACHO;
 5411|      0|    break;
 5412|     13|  case MCObjectFileInfo::IsELF:
  ------------------
  |  Branch (5412:3): [True: 13, False: 0]
  ------------------
 5413|     13|    CurrentFormat = ELF;
 5414|     13|    break;
 5415|      0|  case MCObjectFileInfo::IsCOFF:
  ------------------
  |  Branch (5415:3): [True: 0, False: 13]
  ------------------
 5416|      0|    CurrentFormat = COFF;
 5417|      0|    break;
 5418|     13|  }
 5419|       |
 5420|     13|  if (~Prefix->SupportedFormats & CurrentFormat) {
  ------------------
  |  Branch (5420:7): [True: 0, False: 13]
  ------------------
 5421|       |    //Error(Parser.getTok().getLoc(),
 5422|       |    //      "cannot represent relocation in the current file format");
 5423|      0|    return true;
 5424|      0|  }
 5425|       |
 5426|     13|  RefKind = Prefix->VariantKind;
 5427|     13|  Parser.Lex();
 5428|       |
 5429|     13|  if (getLexer().isNot(AsmToken::Colon)) {
  ------------------
  |  Branch (5429:7): [True: 1, False: 12]
  ------------------
 5430|       |    //Error(Parser.getTok().getLoc(), "unexpected token after prefix");
 5431|      1|    return true;
 5432|      1|  }
 5433|     12|  Parser.Lex(); // Eat the last ':'
 5434|       |
 5435|     12|  return false;
 5436|     13|}
ARMAsmParser.cpp:_ZZN12_GLOBAL__N_112ARMAsmParser11parsePrefixERN7llvm_ks9ARMMCExpr11VariantKindEENK3$_0clERKZNS0_11parsePrefixES4_E11PrefixEntry:
 5399|     27|                   [&IDVal](const PrefixEntry &PE) {
 5400|     27|                      return PE.Spelling == IDVal;
 5401|     27|                   });
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17getTargetStreamerEv:
  137|  31.0k|  ARMTargetStreamer &getTargetStreamer() {
  138|  31.0k|    assert(getParser().getStreamer().getTargetStreamer() &&
  ------------------
  |  Branch (138:5): [True: 31.0k, False: 0]
  |  Branch (138:5): [True: 31.0k, Folded]
  |  Branch (138:5): [True: 31.0k, False: 0]
  ------------------
  139|  31.0k|           "do not have a target streamer");
  140|  31.0k|    MCTargetStreamer &TS = *getParser().getStreamer().getTargetStreamer();
  141|  31.0k|    return static_cast<ARMTargetStreamer &>(TS);
  142|  31.0k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isSPRRegListEv:
 1044|      8|  bool isSPRRegList() const { return Kind == k_SPRRegisterList; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isDPRRegListEv:
 1043|     13|  bool isDPRRegList() const { return Kind == k_DPRRegisterList; }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser29tryConvertingToTwoOperandFormEN7llvm_ks9StringRefEbRNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS4_14default_deleteIS6_EEEEEE:
 5602|  35.6k|                                                 OperandVector &Operands) {
 5603|  35.6k|  if (Operands.size() != 6)
  ------------------
  |  Branch (5603:7): [True: 32.8k, False: 2.80k]
  ------------------
 5604|  32.8k|    return;
 5605|       |
 5606|  2.80k|  const auto &Op3 = static_cast<ARMOperand &>(*Operands[3]);
 5607|  2.80k|        auto &Op4 = static_cast<ARMOperand &>(*Operands[4]);
 5608|  2.80k|  if (!Op3.isReg() || !Op4.isReg())
  ------------------
  |  Branch (5608:7): [True: 74, False: 2.73k]
  |  Branch (5608:23): [True: 48, False: 2.68k]
  ------------------
 5609|    122|    return;
 5610|       |
 5611|  2.68k|  auto Op3Reg = Op3.getReg();
 5612|  2.68k|  auto Op4Reg = Op4.getReg();
 5613|       |
 5614|       |  // For most Thumb2 cases we just generate the 3 operand form and reduce
 5615|       |  // it in processInstruction(), but the 3 operand form of ADD (t2ADDrr)
 5616|       |  // won't accept SP or PC so we do the transformation here taking care
 5617|       |  // with immediate range in the 'add sp, sp #imm' case.
 5618|  2.68k|  auto &Op5 = static_cast<ARMOperand &>(*Operands[5]);
 5619|  2.68k|  if (isThumbTwo()) {
  ------------------
  |  Branch (5619:7): [True: 1.23k, False: 1.45k]
  ------------------
 5620|  1.23k|    if (Mnemonic != "add")
  ------------------
  |  Branch (5620:9): [True: 469, False: 763]
  ------------------
 5621|    469|      return;
 5622|    763|    bool TryTransform = Op3Reg == ARM::PC || Op4Reg == ARM::PC ||
  ------------------
  |  Branch (5622:25): [True: 1, False: 762]
  |  Branch (5622:46): [True: 11, False: 751]
  ------------------
 5623|    751|                        (Op5.isReg() && Op5.getReg() == ARM::PC);
  ------------------
  |  Branch (5623:26): [True: 84, False: 667]
  |  Branch (5623:41): [True: 0, False: 84]
  ------------------
 5624|    763|    if (!TryTransform) {
  ------------------
  |  Branch (5624:9): [True: 751, False: 12]
  ------------------
 5625|    751|      TryTransform = (Op3Reg == ARM::SP || Op4Reg == ARM::SP ||
  ------------------
  |  Branch (5625:23): [True: 476, False: 275]
  |  Branch (5625:44): [True: 106, False: 169]
  ------------------
 5626|    169|                      (Op5.isReg() && Op5.getReg() == ARM::SP)) &&
  ------------------
  |  Branch (5626:24): [True: 28, False: 141]
  |  Branch (5626:39): [True: 6, False: 22]
  ------------------
 5627|    588|                     !(Op3Reg == ARM::SP && Op4Reg == ARM::SP &&
  ------------------
  |  Branch (5627:24): [True: 476, False: 112]
  |  Branch (5627:45): [True: 409, False: 67]
  ------------------
 5628|    409|                       Op5.isImm() && !Op5.isImm0_508s4());
  ------------------
  |  Branch (5628:24): [True: 408, False: 1]
  |  Branch (5628:39): [True: 107, False: 301]
  ------------------
 5629|    751|    }
 5630|    763|    if (!TryTransform)
  ------------------
  |  Branch (5630:9): [True: 270, False: 493]
  ------------------
 5631|    270|      return;
 5632|  1.45k|  } else if (!isThumbOne())
  ------------------
  |  Branch (5632:14): [True: 1.15k, False: 301]
  ------------------
 5633|  1.15k|    return;
 5634|       |
 5635|    794|  if (!(Mnemonic == "add" || Mnemonic == "sub" || Mnemonic == "and" ||
  ------------------
  |  Branch (5635:7): [True: 26, False: 768]
  |  Branch (5635:9): [True: 565, False: 229]
  |  Branch (5635:30): [True: 27, False: 202]
  |  Branch (5635:51): [True: 1, False: 201]
  ------------------
 5636|    201|        Mnemonic == "eor" || Mnemonic == "lsl" || Mnemonic == "lsr" ||
  ------------------
  |  Branch (5636:9): [True: 3, False: 198]
  |  Branch (5636:30): [True: 50, False: 148]
  |  Branch (5636:51): [True: 42, False: 106]
  ------------------
 5637|    106|        Mnemonic == "asr" || Mnemonic == "adc" || Mnemonic == "sbc" ||
  ------------------
  |  Branch (5637:9): [True: 24, False: 82]
  |  Branch (5637:30): [True: 13, False: 69]
  |  Branch (5637:51): [True: 1, False: 68]
  ------------------
 5638|     68|        Mnemonic == "ror" || Mnemonic == "orr" || Mnemonic == "bic"))
  ------------------
  |  Branch (5638:9): [True: 36, False: 32]
  |  Branch (5638:30): [True: 3, False: 29]
  |  Branch (5638:51): [True: 3, False: 26]
  ------------------
 5639|     26|    return;
 5640|       |
 5641|       |  // If first 2 operands of a 3 operand instruction are the same
 5642|       |  // then transform to 2 operand version of the same instruction
 5643|       |  // e.g. 'adds r0, r0, #1' transforms to 'adds r0, #1'
 5644|    768|  bool Transform = Op3Reg == Op4Reg;
 5645|       |
 5646|       |  // For communtative operations, we might be able to transform if we swap
 5647|       |  // Op4 and Op5.  The 'ADD Rdm, SP, Rdm' form is already handled specially
 5648|       |  // as tADDrsp.
 5649|    768|  const ARMOperand *LastOp = &Op5;
 5650|    768|  bool Swap = false;
 5651|    768|  if (!Transform && Op5.isReg() && Op3Reg == Op5.getReg() &&
  ------------------
  |  Branch (5651:7): [True: 281, False: 487]
  |  Branch (5651:7): [True: 25, False: 743]
  |  Branch (5651:21): [True: 146, False: 135]
  |  Branch (5651:36): [True: 89, False: 57]
  ------------------
 5652|     89|      ((Mnemonic == "add" && Op4Reg != ARM::SP) ||
  ------------------
  |  Branch (5652:9): [True: 69, False: 20]
  |  Branch (5652:30): [True: 11, False: 58]
  ------------------
 5653|     78|       Mnemonic == "and" || Mnemonic == "eor" ||
  ------------------
  |  Branch (5653:8): [True: 1, False: 77]
  |  Branch (5653:29): [True: 3, False: 74]
  ------------------
 5654|     74|       Mnemonic == "adc" || Mnemonic == "orr")) {
  ------------------
  |  Branch (5654:8): [True: 10, False: 64]
  |  Branch (5654:29): [True: 0, False: 64]
  ------------------
 5655|     25|    Swap = true;
 5656|     25|    LastOp = &Op4;
 5657|     25|    Transform = true;
 5658|     25|  }
 5659|       |
 5660|       |  // If both registers are the same then remove one of them from
 5661|       |  // the operand list, with certain exceptions.
 5662|    768|  if (Transform) {
  ------------------
  |  Branch (5662:7): [True: 512, False: 256]
  ------------------
 5663|       |    // Don't transform 'adds Rd, Rd, Rm' or 'sub{s} Rd, Rd, Rm' because the
 5664|       |    // 2 operand forms don't exist.
 5665|    512|    if (((Mnemonic == "add" && CarrySetting) || Mnemonic == "sub") &&
  ------------------
  |  Branch (5665:9): [True: 16, False: 496]
  |  Branch (5665:11): [True: 319, False: 193]
  |  Branch (5665:32): [True: 1, False: 318]
  |  Branch (5665:49): [True: 20, False: 491]
  ------------------
 5666|     21|        LastOp->isReg())
  ------------------
  |  Branch (5666:9): [True: 16, False: 5]
  ------------------
 5667|     16|      Transform = false;
 5668|       |
 5669|       |    // Don't transform 'add/sub{s} Rd, Rd, #imm' if the immediate fits into
 5670|       |    // 3-bits because the ARMARM says not to.
 5671|    512|    if ((Mnemonic == "add" || Mnemonic == "sub") && LastOp->isImm0_7())
  ------------------
  |  Branch (5671:9): [True: 6, False: 506]
  |  Branch (5671:10): [True: 319, False: 193]
  |  Branch (5671:31): [True: 20, False: 173]
  |  Branch (5671:53): [True: 6, False: 333]
  ------------------
 5672|      6|      Transform = false;
 5673|    512|  }
 5674|       |
 5675|    768|  if (Transform) {
  ------------------
  |  Branch (5675:7): [True: 490, False: 278]
  ------------------
 5676|    490|    if (Swap)
  ------------------
  |  Branch (5676:9): [True: 25, False: 465]
  ------------------
 5677|     25|      std::swap(Op4, Op5);
 5678|    490|    Operands.erase(Operands.begin() + 3);
 5679|    490|  }
 5680|    768|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isImm0_508s4Ev:
  767|  1.12k|  bool isImm0_508s4() const {
  768|  1.12k|    if (!isImm()) return false;
  ------------------
  |  Branch (768:9): [True: 85, False: 1.04k]
  ------------------
  769|  1.04k|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  770|  1.04k|    if (!CE) return false;
  ------------------
  |  Branch (770:9): [True: 6, False: 1.03k]
  ------------------
  771|  1.03k|    int64_t Value = CE->getValue();
  772|  1.03k|    return ((Value & 3) == 0) && Value >= 0 && Value <= 508;
  ------------------
  |  Branch (772:12): [True: 757, False: 281]
  |  Branch (772:34): [True: 724, False: 33]
  |  Branch (772:48): [True: 651, False: 73]
  ------------------
  773|  1.04k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8isImm0_7Ev:
  824|    722|  bool isImm0_7() const {
  825|    722|    if (!isImm()) return false;
  ------------------
  |  Branch (825:9): [True: 153, False: 569]
  ------------------
  826|    569|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  827|    569|    if (!CE) return false;
  ------------------
  |  Branch (827:9): [True: 17, False: 552]
  ------------------
  828|    552|    int64_t Value = CE->getValue();
  829|    552|    return Value >= 0 && Value < 8;
  ------------------
  |  Branch (829:12): [True: 436, False: 116]
  |  Branch (829:26): [True: 93, False: 343]
  ------------------
  830|    569|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser22shouldOmitCCOutOperandEN7llvm_ks9StringRefERNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS4_14default_deleteIS6_EEEEEE:
 5683|  32.0k|                                          OperandVector &Operands) {
 5684|       |  // FIXME: This is all horribly hacky. We really need a better way to deal
 5685|       |  // with optional operands like this in the matcher table.
 5686|       |
 5687|       |  // The 'mov' mnemonic is special. One variant has a cc_out operand, while
 5688|       |  // another does not. Specifically, the MOVW instruction does not. So we
 5689|       |  // special case it here and remove the defaulted (non-setting) cc_out
 5690|       |  // operand if that's the instruction we're trying to match.
 5691|       |  //
 5692|       |  // We do this as post-processing of the explicit operands rather than just
 5693|       |  // conditionally adding the cc_out in the first place because we need
 5694|       |  // to check the type of the parsed immediate operand.
 5695|  32.0k|  if (Mnemonic == "mov" && Operands.size() > 4 && !isThumb() &&
  ------------------
  |  Branch (5695:7): [True: 415, False: 31.6k]
  |  Branch (5695:7): [True: 42, False: 32.0k]
  |  Branch (5695:28): [True: 321, False: 94]
  |  Branch (5695:51): [True: 297, False: 24]
  ------------------
 5696|    297|      !static_cast<ARMOperand &>(*Operands[4]).isModImm() &&
  ------------------
  |  Branch (5696:7): [True: 165, False: 132]
  ------------------
 5697|    165|      static_cast<ARMOperand &>(*Operands[4]).isImm0_65535Expr() &&
  ------------------
  |  Branch (5697:7): [True: 42, False: 123]
  ------------------
 5698|     42|      static_cast<ARMOperand &>(*Operands[1]).getReg() == 0)
  ------------------
  |  Branch (5698:7): [True: 42, False: 0]
  ------------------
 5699|     42|    return true;
 5700|       |
 5701|       |  // Register-register 'add' for thumb does not have a cc_out operand
 5702|       |  // when there are only two register operands.
 5703|  32.0k|  if (isThumb() && Mnemonic == "add" && Operands.size() == 5 &&
  ------------------
  |  Branch (5703:7): [True: 10.1k, False: 21.8k]
  |  Branch (5703:7): [True: 63, False: 31.9k]
  |  Branch (5703:20): [True: 1.16k, False: 8.99k]
  |  Branch (5703:41): [True: 620, False: 542]
  ------------------
 5704|    620|      static_cast<ARMOperand &>(*Operands[3]).isReg() &&
  ------------------
  |  Branch (5704:7): [True: 618, False: 2]
  ------------------
 5705|    618|      static_cast<ARMOperand &>(*Operands[4]).isReg() &&
  ------------------
  |  Branch (5705:7): [True: 63, False: 555]
  ------------------
 5706|     63|      static_cast<ARMOperand &>(*Operands[1]).getReg() == 0)
  ------------------
  |  Branch (5706:7): [True: 63, False: 0]
  ------------------
 5707|     63|    return true;
 5708|       |  // Register-register 'add' for thumb does not have a cc_out operand
 5709|       |  // when it's an ADD Rdm, SP, {Rdm|#imm0_255} instruction. We do
 5710|       |  // have to check the immediate range here since Thumb2 has a variant
 5711|       |  // that can handle a different range and has a cc_out operand.
 5712|  31.9k|  if (((isThumb() && Mnemonic == "add") ||
  ------------------
  |  Branch (5712:7): [True: 185, False: 31.7k]
  |  Branch (5712:9): [True: 10.0k, False: 21.8k]
  |  Branch (5712:22): [True: 1.09k, False: 8.99k]
  ------------------
 5713|  30.8k|       (isThumbTwo() && Mnemonic == "sub")) &&
  ------------------
  |  Branch (5713:9): [True: 8.55k, False: 22.3k]
  |  Branch (5713:25): [True: 110, False: 8.44k]
  ------------------
 5714|  1.20k|      Operands.size() == 6 && static_cast<ARMOperand &>(*Operands[3]).isReg() &&
  ------------------
  |  Branch (5714:7): [True: 527, False: 682]
  |  Branch (5714:31): [True: 526, False: 1]
  ------------------
 5715|    526|      static_cast<ARMOperand &>(*Operands[4]).isReg() &&
  ------------------
  |  Branch (5715:7): [True: 517, False: 9]
  ------------------
 5716|    517|      static_cast<ARMOperand &>(*Operands[4]).getReg() == ARM::SP &&
  ------------------
  |  Branch (5716:7): [True: 293, False: 224]
  ------------------
 5717|    293|      static_cast<ARMOperand &>(*Operands[1]).getReg() == 0 &&
  ------------------
  |  Branch (5717:7): [True: 293, False: 0]
  ------------------
 5718|    293|      ((Mnemonic == "add" && static_cast<ARMOperand &>(*Operands[5]).isReg()) ||
  ------------------
  |  Branch (5718:9): [True: 278, False: 15]
  |  Branch (5718:30): [True: 70, False: 208]
  ------------------
 5719|    223|       static_cast<ARMOperand &>(*Operands[5]).isImm0_1020s4()))
  ------------------
  |  Branch (5719:8): [True: 115, False: 108]
  ------------------
 5720|    185|    return true;
 5721|       |  // For Thumb2, add/sub immediate does not have a cc_out operand for the
 5722|       |  // imm0_4095 variant. That's the least-preferred variant when
 5723|       |  // selecting via the generic "add" mnemonic, so to know that we
 5724|       |  // should remove the cc_out operand, we have to explicitly check that
 5725|       |  // it's not one of the other variants. Ugh.
 5726|  31.7k|  if (isThumbTwo() && (Mnemonic == "add" || Mnemonic == "sub") &&
  ------------------
  |  Branch (5726:7): [True: 9.45k, False: 22.3k]
  |  Branch (5726:7): [True: 274, False: 31.5k]
  |  Branch (5726:24): [True: 906, False: 8.54k]
  |  Branch (5726:45): [True: 107, False: 8.44k]
  ------------------
 5727|  1.01k|      Operands.size() == 6 && static_cast<ARMOperand &>(*Operands[3]).isReg() &&
  ------------------
  |  Branch (5727:7): [True: 339, False: 674]
  |  Branch (5727:31): [True: 338, False: 1]
  ------------------
 5728|    338|      static_cast<ARMOperand &>(*Operands[4]).isReg() &&
  ------------------
  |  Branch (5728:7): [True: 330, False: 8]
  ------------------
 5729|    330|      static_cast<ARMOperand &>(*Operands[5]).isImm()) {
  ------------------
  |  Branch (5729:7): [True: 274, False: 56]
  ------------------
 5730|       |    // Nest conditions rather than one big 'if' statement for readability.
 5731|       |    //
 5732|       |    // If both registers are low, we're in an IT block, and the immediate is
 5733|       |    // in range, we should use encoding T1 instead, which has a cc_out.
 5734|    274|    if (inITBlock() &&
  ------------------
  |  Branch (5734:9): [True: 4, False: 270]
  ------------------
 5735|      4|        isARMLowRegister(static_cast<ARMOperand &>(*Operands[3]).getReg()) &&
  ------------------
  |  Branch (5735:9): [True: 3, False: 1]
  ------------------
 5736|      3|        isARMLowRegister(static_cast<ARMOperand &>(*Operands[4]).getReg()) &&
  ------------------
  |  Branch (5736:9): [True: 2, False: 1]
  ------------------
 5737|      2|        static_cast<ARMOperand &>(*Operands[5]).isImm0_7())
  ------------------
  |  Branch (5737:9): [True: 1, False: 1]
  ------------------
 5738|      1|      return false;
 5739|       |    // Check against T3. If the second register is the PC, this is an
 5740|       |    // alternate form of ADR, which uses encoding T4, so check for that too.
 5741|    273|    if (static_cast<ARMOperand &>(*Operands[4]).getReg() != ARM::PC &&
  ------------------
  |  Branch (5741:9): [True: 262, False: 11]
  ------------------
 5742|    262|        static_cast<ARMOperand &>(*Operands[5]).isT2SOImm())
  ------------------
  |  Branch (5742:9): [True: 168, False: 94]
  ------------------
 5743|    168|      return false;
 5744|       |
 5745|       |    // Otherwise, we use encoding T4, which does not have a cc_out
 5746|       |    // operand.
 5747|    105|    return true;
 5748|    273|  }
 5749|       |
 5750|       |  // The thumb2 multiply instruction doesn't have a CCOut register, so
 5751|       |  // if we have a "mul" mnemonic in Thumb mode, check if we'll be able to
 5752|       |  // use the 16-bit encoding or not.
 5753|  31.5k|  if (isThumbTwo() && Mnemonic == "mul" && Operands.size() == 6 &&
  ------------------
  |  Branch (5753:7): [True: 9.18k, False: 22.3k]
  |  Branch (5753:7): [True: 45, False: 31.4k]
  |  Branch (5753:23): [True: 313, False: 8.86k]
  |  Branch (5753:44): [True: 49, False: 264]
  ------------------
 5754|     49|      static_cast<ARMOperand &>(*Operands[1]).getReg() == 0 &&
  ------------------
  |  Branch (5754:7): [True: 49, False: 0]
  ------------------
 5755|     49|      static_cast<ARMOperand &>(*Operands[3]).isReg() &&
  ------------------
  |  Branch (5755:7): [True: 48, False: 1]
  ------------------
 5756|     48|      static_cast<ARMOperand &>(*Operands[4]).isReg() &&
  ------------------
  |  Branch (5756:7): [True: 46, False: 2]
  ------------------
 5757|     46|      static_cast<ARMOperand &>(*Operands[5]).isReg() &&
  ------------------
  |  Branch (5757:7): [True: 45, False: 1]
  ------------------
 5758|       |      // If the registers aren't low regs, the destination reg isn't the
 5759|       |      // same as one of the source regs, or the cc_out operand is zero
 5760|       |      // outside of an IT block, we have to use the 32-bit encoding, so
 5761|       |      // remove the cc_out operand.
 5762|     45|      (!isARMLowRegister(static_cast<ARMOperand &>(*Operands[3]).getReg()) ||
  ------------------
  |  Branch (5762:8): [True: 3, False: 42]
  ------------------
 5763|     42|       !isARMLowRegister(static_cast<ARMOperand &>(*Operands[4]).getReg()) ||
  ------------------
  |  Branch (5763:8): [True: 6, False: 36]
  ------------------
 5764|     36|       !isARMLowRegister(static_cast<ARMOperand &>(*Operands[5]).getReg()) ||
  ------------------
  |  Branch (5764:8): [True: 34, False: 2]
  ------------------
 5765|      2|       !inITBlock() || (static_cast<ARMOperand &>(*Operands[3]).getReg() !=
  ------------------
  |  Branch (5765:8): [True: 2, False: 0]
  |  Branch (5765:25): [True: 0, False: 0]
  ------------------
 5766|      0|                            static_cast<ARMOperand &>(*Operands[5]).getReg() &&
 5767|      0|                        static_cast<ARMOperand &>(*Operands[3]).getReg() !=
  ------------------
  |  Branch (5767:25): [True: 0, False: 0]
  ------------------
 5768|      0|                            static_cast<ARMOperand &>(*Operands[4]).getReg())))
 5769|     45|    return true;
 5770|       |
 5771|       |  // Also check the 'mul' syntax variant that doesn't specify an explicit
 5772|       |  // destination register.
 5773|  31.4k|  if (isThumbTwo() && Mnemonic == "mul" && Operands.size() == 5 &&
  ------------------
  |  Branch (5773:7): [True: 9.13k, False: 22.3k]
  |  Branch (5773:7): [True: 255, False: 31.2k]
  |  Branch (5773:23): [True: 268, False: 8.86k]
  |  Branch (5773:44): [True: 258, False: 10]
  ------------------
 5774|    258|      static_cast<ARMOperand &>(*Operands[1]).getReg() == 0 &&
  ------------------
  |  Branch (5774:7): [True: 258, False: 0]
  ------------------
 5775|    258|      static_cast<ARMOperand &>(*Operands[3]).isReg() &&
  ------------------
  |  Branch (5775:7): [True: 257, False: 1]
  ------------------
 5776|    257|      static_cast<ARMOperand &>(*Operands[4]).isReg() &&
  ------------------
  |  Branch (5776:7): [True: 255, False: 2]
  ------------------
 5777|       |      // If the registers aren't low regs  or the cc_out operand is zero
 5778|       |      // outside of an IT block, we have to use the 32-bit encoding, so
 5779|       |      // remove the cc_out operand.
 5780|    255|      (!isARMLowRegister(static_cast<ARMOperand &>(*Operands[3]).getReg()) ||
  ------------------
  |  Branch (5780:8): [True: 100, False: 155]
  ------------------
 5781|    155|       !isARMLowRegister(static_cast<ARMOperand &>(*Operands[4]).getReg()) ||
  ------------------
  |  Branch (5781:8): [True: 47, False: 108]
  ------------------
 5782|    108|       !inITBlock()))
  ------------------
  |  Branch (5782:8): [True: 108, False: 0]
  ------------------
 5783|    255|    return true;
 5784|       |
 5785|       |
 5786|       |
 5787|       |  // Register-register 'add/sub' for thumb does not have a cc_out operand
 5788|       |  // when it's an ADD/SUB SP, #imm. Be lenient on count since there's also
 5789|       |  // the "add/sub SP, SP, #imm" version. If the follow-up operands aren't
 5790|       |  // right, this will result in better diagnostics (which operand is off)
 5791|       |  // anyway.
 5792|  31.2k|  if (isThumb() && (Mnemonic == "add" || Mnemonic == "sub") &&
  ------------------
  |  Branch (5792:7): [True: 9.33k, False: 21.8k]
  |  Branch (5792:7): [True: 566, False: 30.6k]
  |  Branch (5792:21): [True: 655, False: 8.68k]
  |  Branch (5792:42): [True: 95, False: 8.58k]
  ------------------
 5793|    750|      (Operands.size() == 5 || Operands.size() == 6) &&
  ------------------
  |  Branch (5793:8): [True: 646, False: 104]
  |  Branch (5793:32): [True: 68, False: 36]
  ------------------
 5794|    714|      static_cast<ARMOperand &>(*Operands[3]).isReg() &&
  ------------------
  |  Branch (5794:7): [True: 711, False: 3]
  ------------------
 5795|    711|      static_cast<ARMOperand &>(*Operands[3]).getReg() == ARM::SP &&
  ------------------
  |  Branch (5795:7): [True: 612, False: 99]
  ------------------
 5796|    612|      static_cast<ARMOperand &>(*Operands[1]).getReg() == 0 &&
  ------------------
  |  Branch (5796:7): [True: 612, False: 0]
  ------------------
 5797|    612|      (static_cast<ARMOperand &>(*Operands[4]).isImm() ||
  ------------------
  |  Branch (5797:8): [True: 564, False: 48]
  ------------------
 5798|     48|       (Operands.size() == 6 &&
  ------------------
  |  Branch (5798:9): [True: 47, False: 1]
  ------------------
 5799|     47|        static_cast<ARMOperand &>(*Operands[5]).isImm())))
  ------------------
  |  Branch (5799:9): [True: 2, False: 45]
  ------------------
 5800|    566|    return true;
 5801|       |
 5802|  30.6k|  return false;
 5803|  31.2k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8isModImmEv:
 1053|  5.42k|  bool isModImm() const { return Kind == k_ModifiedImmediate; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16isImm0_65535ExprEv:
  959|    252|  bool isImm0_65535Expr() const {
  960|    252|    if (!isImm()) return false;
  ------------------
  |  Branch (960:9): [True: 32, False: 220]
  ------------------
  961|    220|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  962|       |    // If it's not a constant expression, it'll generate a fixup and be
  963|       |    // handled later.
  964|    220|    if (!CE) return true;
  ------------------
  |  Branch (964:9): [True: 14, False: 206]
  ------------------
  965|    206|    int64_t Value = CE->getValue();
  966|    206|    return Value >= 0 && Value < 65536;
  ------------------
  |  Branch (966:12): [True: 143, False: 63]
  |  Branch (966:26): [True: 103, False: 40]
  ------------------
  967|    220|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand13isImm0_1020s4Ev:
  760|    235|  bool isImm0_1020s4() const {
  761|    235|    if (!isImm()) return false;
  ------------------
  |  Branch (761:9): [True: 4, False: 231]
  ------------------
  762|    231|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  763|    231|    if (!CE) return false;
  ------------------
  |  Branch (763:9): [True: 4, False: 227]
  ------------------
  764|    227|    int64_t Value = CE->getValue();
  765|    227|    return ((Value & 3) == 0) && Value >= 0 && Value <= 1020;
  ------------------
  |  Branch (765:12): [True: 123, False: 104]
  |  Branch (765:34): [True: 123, False: 0]
  |  Branch (765:48): [True: 123, False: 0]
  ------------------
  766|    231|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser9inITBlockEv:
  168|  94.2k|  bool inITBlock() { return ITState.CurPosition != ~0U; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isT2SOImmEv:
 1010|  6.50k|  bool isT2SOImm() const {
 1011|  6.50k|    if (!isImm()) return false;
  ------------------
  |  Branch (1011:9): [True: 4.52k, False: 1.97k]
  ------------------
 1012|  1.97k|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1013|  1.97k|    if (!CE) return false;
  ------------------
  |  Branch (1013:9): [True: 559, False: 1.41k]
  ------------------
 1014|  1.41k|    int64_t Value = CE->getValue();
 1015|  1.41k|    return ARM_AM::getT2SOImmVal(Value) != -1;
 1016|  1.97k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser26shouldOmitPredicateOperandEN7llvm_ks9StringRefERNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS4_14default_deleteIS6_EEEEEE:
 5806|  35.6k|                                              OperandVector &Operands) {
 5807|       |  // VRINT{Z, R, X} have a predicate operand in VFP, but not in NEON
 5808|  35.6k|  unsigned RegIdx = 3;
 5809|  35.6k|  if ((Mnemonic == "vrintz" || Mnemonic == "vrintx" || Mnemonic == "vrintr") &&
  ------------------
  |  Branch (5809:7): [True: 5, False: 35.6k]
  |  Branch (5809:8): [True: 3, False: 35.6k]
  |  Branch (5809:32): [True: 5, False: 35.6k]
  |  Branch (5809:56): [True: 1, False: 35.6k]
  ------------------
 5810|      9|      (static_cast<ARMOperand &>(*Operands[2]).getToken() == ".f32" ||
  ------------------
  |  Branch (5810:8): [True: 5, False: 4]
  ------------------
 5811|      5|       static_cast<ARMOperand &>(*Operands[2]).getToken() == ".f16")) {
  ------------------
  |  Branch (5811:8): [True: 0, False: 4]
  ------------------
 5812|      5|    if (static_cast<ARMOperand &>(*Operands[3]).isToken() &&
  ------------------
  |  Branch (5812:9): [True: 4, False: 1]
  |  Branch (5812:9): [True: 0, False: 5]
  ------------------
 5813|      4|        (static_cast<ARMOperand &>(*Operands[3]).getToken() == ".f32" ||
  ------------------
  |  Branch (5813:10): [True: 0, False: 4]
  ------------------
 5814|      4|         static_cast<ARMOperand &>(*Operands[3]).getToken() == ".f16"))
  ------------------
  |  Branch (5814:10): [True: 0, False: 4]
  ------------------
 5815|      0|      RegIdx = 4;
 5816|       |
 5817|      5|    if (static_cast<ARMOperand &>(*Operands[RegIdx]).isReg() &&
  ------------------
  |  Branch (5817:9): [True: 0, False: 5]
  ------------------
 5818|      0|        (ARMMCRegisterClasses[ARM::DPRRegClassID].contains(
  ------------------
  |  Branch (5818:10): [True: 0, False: 0]
  ------------------
 5819|      0|             static_cast<ARMOperand &>(*Operands[RegIdx]).getReg()) ||
 5820|      0|         ARMMCRegisterClasses[ARM::QPRRegClassID].contains(
  ------------------
  |  Branch (5820:10): [True: 0, False: 0]
  ------------------
 5821|      0|             static_cast<ARMOperand &>(*Operands[RegIdx]).getReg())))
 5822|      0|      return true;
 5823|      5|  }
 5824|  35.6k|  return false;
 5825|  35.6k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_110ARMOperand9CreateRegEjN7llvm_ks5SMLocES2_:
 2599|  30.0k|                                               SMLoc E) {
 2600|  30.0k|    auto Op = make_unique<ARMOperand>(k_Register);
 2601|  30.0k|    Op->Reg.RegNum = RegNum;
 2602|  30.0k|    Op->StartLoc = S;
 2603|  30.0k|    Op->EndLoc = E;
 2604|  30.0k|    return Op;
 2605|  30.0k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser10isThumbTwoEv:
  255|   194k|  bool isThumbTwo() const {
  256|   194k|    return isThumb() && getSTI().getFeatureBits()[ARM::FeatureThumb2];
  ------------------
  |  Branch (256:12): [True: 61.7k, False: 132k]
  |  Branch (256:25): [True: 57.5k, False: 4.15k]
  ------------------
  257|   194k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser14ParseDirectiveEN7llvm_ks8AsmTokenE:
 9005|   584k|{
 9006|   584k|  const MCObjectFileInfo::Environment Format =
 9007|   584k|    getContext().getObjectFileInfo()->getObjectFileType();
 9008|   584k|  bool IsMachO = Format == MCObjectFileInfo::IsMachO;
 9009|   584k|  bool IsCOFF = Format == MCObjectFileInfo::IsCOFF;
 9010|       |
 9011|   584k|  StringRef IDVal = DirectiveID.getIdentifier();
 9012|   584k|  if (IDVal == ".word")
  ------------------
  |  Branch (9012:7): [True: 30.8k, False: 553k]
  ------------------
 9013|  30.8k|    return parseLiteralValues(4, DirectiveID.getLoc());
 9014|   553k|  else if (IDVal == ".short" || IDVal == ".hword")
  ------------------
  |  Branch (9014:12): [True: 32, False: 553k]
  |  Branch (9014:12): [True: 123, False: 553k]
  |  Branch (9014:33): [True: 91, False: 553k]
  ------------------
 9015|    123|    return parseLiteralValues(2, DirectiveID.getLoc());
 9016|   553k|  else if (IDVal == ".thumb")
  ------------------
  |  Branch (9016:12): [True: 1.91k, False: 551k]
  ------------------
 9017|  1.91k|    return parseDirectiveThumb(DirectiveID.getLoc());
 9018|   551k|  else if (IDVal == ".arm")
  ------------------
  |  Branch (9018:12): [True: 642, False: 550k]
  ------------------
 9019|    642|    return parseDirectiveARM(DirectiveID.getLoc());
 9020|   550k|  else if (IDVal == ".thumb_func")
  ------------------
  |  Branch (9020:12): [True: 267, False: 550k]
  ------------------
 9021|    267|    return parseDirectiveThumbFunc(DirectiveID.getLoc());
 9022|   550k|  else if (IDVal == ".code")
  ------------------
  |  Branch (9022:12): [True: 187, False: 550k]
  ------------------
 9023|    187|    return parseDirectiveCode(DirectiveID.getLoc());
 9024|   550k|  else if (IDVal == ".syntax")
  ------------------
  |  Branch (9024:12): [True: 491, False: 549k]
  ------------------
 9025|    491|    return parseDirectiveSyntax(DirectiveID.getLoc());
 9026|   549k|  else if (IDVal == ".unreq")
  ------------------
  |  Branch (9026:12): [True: 113, False: 549k]
  ------------------
 9027|    113|    return parseDirectiveUnreq(DirectiveID.getLoc());
 9028|   549k|  else if (IDVal == ".fnend")
  ------------------
  |  Branch (9028:12): [True: 660, False: 548k]
  ------------------
 9029|    660|    return parseDirectiveFnEnd(DirectiveID.getLoc());
 9030|   548k|  else if (IDVal == ".cantunwind")
  ------------------
  |  Branch (9030:12): [True: 287, False: 548k]
  ------------------
 9031|    287|    return parseDirectiveCantUnwind(DirectiveID.getLoc());
 9032|   548k|  else if (IDVal == ".personality")
  ------------------
  |  Branch (9032:12): [True: 389, False: 548k]
  ------------------
 9033|    389|    return parseDirectivePersonality(DirectiveID.getLoc());
 9034|   548k|  else if (IDVal == ".handlerdata")
  ------------------
  |  Branch (9034:12): [True: 188, False: 548k]
  ------------------
 9035|    188|    return parseDirectiveHandlerData(DirectiveID.getLoc());
 9036|   548k|  else if (IDVal == ".setfp")
  ------------------
  |  Branch (9036:12): [True: 86, False: 547k]
  ------------------
 9037|     86|    return parseDirectiveSetFP(DirectiveID.getLoc());
 9038|   547k|  else if (IDVal == ".pad")
  ------------------
  |  Branch (9038:12): [True: 315, False: 547k]
  ------------------
 9039|    315|    return parseDirectivePad(DirectiveID.getLoc());
 9040|   547k|  else if (IDVal == ".save")
  ------------------
  |  Branch (9040:12): [True: 41, False: 547k]
  ------------------
 9041|     41|    return parseDirectiveRegSave(DirectiveID.getLoc(), false);
 9042|   547k|  else if (IDVal == ".vsave")
  ------------------
  |  Branch (9042:12): [True: 35, False: 547k]
  ------------------
 9043|     35|    return parseDirectiveRegSave(DirectiveID.getLoc(), true);
 9044|   547k|  else if (IDVal == ".ltorg" || IDVal == ".pool")
  ------------------
  |  Branch (9044:12): [True: 1.21k, False: 546k]
  |  Branch (9044:12): [True: 1.25k, False: 546k]
  |  Branch (9044:33): [True: 36, False: 546k]
  ------------------
 9045|  1.25k|    return parseDirectiveLtorg(DirectiveID.getLoc());
 9046|   546k|  else if (IDVal == ".even")
  ------------------
  |  Branch (9046:12): [True: 579, False: 545k]
  ------------------
 9047|    579|    return parseDirectiveEven(DirectiveID.getLoc());
 9048|   545k|  else if (IDVal == ".personalityindex")
  ------------------
  |  Branch (9048:12): [True: 264, False: 545k]
  ------------------
 9049|    264|    return parseDirectivePersonalityIndex(DirectiveID.getLoc());
 9050|   545k|  else if (IDVal == ".unwind_raw")
  ------------------
  |  Branch (9050:12): [True: 425, False: 545k]
  ------------------
 9051|    425|    return parseDirectiveUnwindRaw(DirectiveID.getLoc());
 9052|   545k|  else if (IDVal == ".movsp")
  ------------------
  |  Branch (9052:12): [True: 117, False: 544k]
  ------------------
 9053|    117|    return parseDirectiveMovSP(DirectiveID.getLoc());
 9054|   544k|  else if (IDVal == ".arch_extension")
  ------------------
  |  Branch (9054:12): [True: 578, False: 544k]
  ------------------
 9055|    578|    return parseDirectiveArchExtension(DirectiveID.getLoc());
 9056|   544k|  else if (IDVal == ".align")
  ------------------
  |  Branch (9056:12): [True: 15.0k, False: 529k]
  ------------------
 9057|  15.0k|    return parseDirectiveAlign(DirectiveID.getLoc());
 9058|   529k|  else if (IDVal == ".thumb_set")
  ------------------
  |  Branch (9058:12): [True: 29, False: 529k]
  ------------------
 9059|     29|    return parseDirectiveThumbSet(DirectiveID.getLoc());
 9060|       |
 9061|   529k|  if (!IsMachO && !IsCOFF) {
  ------------------
  |  Branch (9061:7): [True: 529k, False: 0]
  |  Branch (9061:19): [True: 529k, False: 0]
  ------------------
 9062|   529k|    if (IDVal == ".arch")
  ------------------
  |  Branch (9062:9): [True: 53.9k, False: 475k]
  ------------------
 9063|  53.9k|      return parseDirectiveArch(DirectiveID.getLoc());
 9064|   475k|    else if (IDVal == ".cpu")
  ------------------
  |  Branch (9064:14): [True: 564, False: 474k]
  ------------------
 9065|    564|      return parseDirectiveCPU(DirectiveID.getLoc());
 9066|   474k|    else if (IDVal == ".eabi_attribute")
  ------------------
  |  Branch (9066:14): [True: 528, False: 474k]
  ------------------
 9067|    528|      return parseDirectiveEabiAttr(DirectiveID.getLoc());
 9068|   474k|    else if (IDVal == ".fpu")
  ------------------
  |  Branch (9068:14): [True: 9.89k, False: 464k]
  ------------------
 9069|  9.89k|      return parseDirectiveFPU(DirectiveID.getLoc());
 9070|   464k|    else if (IDVal == ".fnstart")
  ------------------
  |  Branch (9070:14): [True: 1.09k, False: 463k]
  ------------------
 9071|  1.09k|      return parseDirectiveFnStart(DirectiveID.getLoc());
 9072|   463k|    else if (IDVal == ".inst")
  ------------------
  |  Branch (9072:14): [True: 492, False: 462k]
  ------------------
 9073|    492|      return parseDirectiveInst(DirectiveID.getLoc());
 9074|   462k|    else if (IDVal == ".inst.n")
  ------------------
  |  Branch (9074:14): [True: 137, False: 462k]
  ------------------
 9075|    137|      return parseDirectiveInst(DirectiveID.getLoc(), 'n');
 9076|   462k|    else if (IDVal == ".inst.w")
  ------------------
  |  Branch (9076:14): [True: 14, False: 462k]
  ------------------
 9077|     14|      return parseDirectiveInst(DirectiveID.getLoc(), 'w');
 9078|   462k|    else if (IDVal == ".object_arch")
  ------------------
  |  Branch (9078:14): [True: 25, False: 462k]
  ------------------
 9079|     25|      return parseDirectiveObjectArch(DirectiveID.getLoc());
 9080|   462k|    else if (IDVal == ".tlsdescseq")
  ------------------
  |  Branch (9080:14): [True: 78, False: 462k]
  ------------------
 9081|     78|      return parseDirectiveTLSDescSeq(DirectiveID.getLoc());
 9082|   529k|  }
 9083|       |
 9084|   462k|  return true;
 9085|   529k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser18parseLiteralValuesEjN7llvm_ks5SMLocE:
 9091|  30.9k|bool ARMAsmParser::parseLiteralValues(unsigned Size, SMLoc L) {
 9092|  30.9k|  MCAsmParser &Parser = getParser();
 9093|  30.9k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9093:7): [True: 29.9k, False: 1.02k]
  ------------------
 9094|   148k|    for (;;) {
 9095|   148k|      const MCExpr *Value;
 9096|   148k|      if (getParser().parseExpression(Value)) {
  ------------------
  |  Branch (9096:11): [True: 10.1k, False: 138k]
  ------------------
 9097|  10.1k|        Parser.eatToEndOfStatement();
 9098|  10.1k|        return false;
 9099|  10.1k|      }
 9100|       |
 9101|   138k|      getParser().getStreamer().EmitValue(Value, Size, L);
 9102|       |
 9103|   138k|      if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (9103:11): [True: 17.2k, False: 120k]
  ------------------
 9104|  17.2k|        break;
 9105|       |
 9106|       |      // FIXME: Improve diagnostic.
 9107|   120k|      if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (9107:11): [True: 2.59k, False: 118k]
  ------------------
 9108|       |        //Error(L, "unexpected token in directive");
 9109|  2.59k|        return false;
 9110|  2.59k|      }
 9111|   118k|      Parser.Lex();
 9112|   118k|    }
 9113|  29.9k|  }
 9114|       |
 9115|  18.2k|  Parser.Lex();
 9116|  18.2k|  return false;
 9117|  30.9k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseDirectiveThumbEN7llvm_ks5SMLocE:
 9121|  1.91k|bool ARMAsmParser::parseDirectiveThumb(SMLoc L) {
 9122|  1.91k|  MCAsmParser &Parser = getParser();
 9123|  1.91k|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9123:7): [True: 39, False: 1.87k]
  ------------------
 9124|       |    //Error(L, "unexpected token in directive");
 9125|     39|    return false;
 9126|     39|  }
 9127|  1.87k|  Parser.Lex();
 9128|       |
 9129|  1.87k|  if (!hasThumb()) {
  ------------------
  |  Branch (9129:7): [True: 20, False: 1.85k]
  ------------------
 9130|       |    //Error(L, "target does not support Thumb mode");
 9131|     20|    return false;
 9132|     20|  }
 9133|       |
 9134|  1.85k|  if (!isThumb())
  ------------------
  |  Branch (9134:7): [True: 1.59k, False: 262]
  ------------------
 9135|  1.59k|    SwitchMode();
 9136|       |
 9137|  1.85k|  getParser().getStreamer().EmitAssemblerFlag(MCAF_Code16);
 9138|  1.85k|  return false;
 9139|  1.87k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser8hasThumbEv:
  258|  1.89k|  bool hasThumb() const {
  259|  1.89k|    return getSTI().getFeatureBits()[ARM::HasV4TOps];
  260|  1.89k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser10SwitchModeEv:
  295|  1.61k|  void SwitchMode() {
  296|  1.61k|    MCSubtargetInfo &STI = copySTI();
  297|  1.61k|    uint64_t FB = ComputeAvailableFeatures(STI.ToggleFeature(ARM::ModeThumb));
  298|  1.61k|    setAvailableFeatures(FB);
  299|  1.61k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17parseDirectiveARMEN7llvm_ks5SMLocE:
 9143|    642|bool ARMAsmParser::parseDirectiveARM(SMLoc L) {
 9144|    642|  MCAsmParser &Parser = getParser();
 9145|    642|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9145:7): [True: 44, False: 598]
  ------------------
 9146|       |    //Error(L, "unexpected token in directive");
 9147|     44|    return false;
 9148|     44|  }
 9149|    598|  Parser.Lex();
 9150|       |
 9151|    598|  if (!hasARM()) {
  ------------------
  |  Branch (9151:7): [True: 162, False: 436]
  ------------------
 9152|       |    //Error(L, "target does not support ARM mode");
 9153|    162|    return false;
 9154|    162|  }
 9155|       |
 9156|    436|  if (isThumb())
  ------------------
  |  Branch (9156:7): [True: 6, False: 430]
  ------------------
 9157|      6|    SwitchMode();
 9158|       |
 9159|    436|  getParser().getStreamer().EmitAssemblerFlag(MCAF_Code32);
 9160|    436|  return false;
 9161|    598|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser6hasARMEv:
  282|    601|  bool hasARM() const {
  283|    601|    return !getSTI().getFeatureBits()[ARM::FeatureNoARM];
  284|    601|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser23parseDirectiveThumbFuncEN7llvm_ks5SMLocE:
 9172|    267|bool ARMAsmParser::parseDirectiveThumbFunc(SMLoc L) {
 9173|    267|  MCAsmParser &Parser = getParser();
 9174|    267|  const auto Format = getContext().getObjectFileInfo()->getObjectFileType();
 9175|    267|  bool IsMachO = Format == MCObjectFileInfo::IsMachO;
 9176|       |
 9177|       |  // Darwin asm has (optionally) function name after .thumb_func direction
 9178|       |  // ELF doesn't
 9179|    267|  if (IsMachO) {
  ------------------
  |  Branch (9179:7): [True: 0, False: 267]
  ------------------
 9180|      0|    const AsmToken &Tok = Parser.getTok();
 9181|      0|    if (Tok.isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9181:9): [True: 0, False: 0]
  ------------------
 9182|      0|      if (Tok.isNot(AsmToken::Identifier) && Tok.isNot(AsmToken::String)) {
  ------------------
  |  Branch (9182:11): [True: 0, False: 0]
  |  Branch (9182:46): [True: 0, False: 0]
  ------------------
 9183|       |        //Error(L, "unexpected token in .thumb_func directive");
 9184|      0|        return false;
 9185|      0|      }
 9186|       |
 9187|      0|      MCSymbol *Func =
 9188|      0|          getParser().getContext().getOrCreateSymbol(Tok.getIdentifier());
 9189|      0|      getParser().getStreamer().EmitThumbFunc(Func);
 9190|      0|      Parser.Lex(); // Consume the identifier token.
 9191|      0|      return false;
 9192|      0|    }
 9193|      0|  }
 9194|       |
 9195|    267|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9195:7): [True: 57, False: 210]
  ------------------
 9196|       |    //Error(Parser.getTok().getLoc(), "unexpected token in directive");
 9197|     57|    Parser.eatToEndOfStatement();
 9198|     57|    return false;
 9199|     57|  }
 9200|       |
 9201|    210|  NextSymbolIsThumb = true;
 9202|    210|  return false;
 9203|    267|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser18parseDirectiveCodeEN7llvm_ks5SMLocE:
 9239|    187|bool ARMAsmParser::parseDirectiveCode(SMLoc L) {
 9240|    187|  MCAsmParser &Parser = getParser();
 9241|    187|  const AsmToken &Tok = Parser.getTok();
 9242|    187|  if (Tok.isNot(AsmToken::Integer)) {
  ------------------
  |  Branch (9242:7): [True: 133, False: 54]
  ------------------
 9243|       |    //Error(L, "unexpected token in .code directive");
 9244|    133|    return false;
 9245|    133|  }
 9246|     54|  bool valid;
 9247|     54|  int64_t Val = Parser.getTok().getIntVal(valid);
 9248|     54|  if (!valid)
  ------------------
  |  Branch (9248:7): [True: 0, False: 54]
  ------------------
 9249|      0|    return false;
 9250|     54|  if (Val != 16 && Val != 32) {
  ------------------
  |  Branch (9250:7): [True: 11, False: 43]
  |  Branch (9250:20): [True: 5, False: 6]
  ------------------
 9251|       |    //Error(L, "invalid operand to .code directive");
 9252|      5|    return false;
 9253|      5|  }
 9254|     49|  Parser.Lex();
 9255|       |
 9256|     49|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9256:7): [True: 29, False: 20]
  ------------------
 9257|       |    //Error(Parser.getTok().getLoc(), "unexpected token in directive");
 9258|     29|    return false;
 9259|     29|  }
 9260|     20|  Parser.Lex();
 9261|       |
 9262|     20|  if (Val == 16) {
  ------------------
  |  Branch (9262:7): [True: 17, False: 3]
  ------------------
 9263|     17|    if (!hasThumb()) {
  ------------------
  |  Branch (9263:9): [True: 1, False: 16]
  ------------------
 9264|       |      //Error(L, "target does not support Thumb mode");
 9265|      1|      return false;
 9266|      1|    }
 9267|       |
 9268|     16|    if (!isThumb())
  ------------------
  |  Branch (9268:9): [True: 7, False: 9]
  ------------------
 9269|      7|      SwitchMode();
 9270|     16|    getParser().getStreamer().EmitAssemblerFlag(MCAF_Code16);
 9271|     16|  } else {
 9272|      3|    if (!hasARM()) {
  ------------------
  |  Branch (9272:9): [True: 0, False: 3]
  ------------------
 9273|       |      //Error(L, "target does not support ARM mode");
 9274|      0|      return false;
 9275|      0|    }
 9276|       |
 9277|      3|    if (isThumb())
  ------------------
  |  Branch (9277:9): [True: 1, False: 2]
  ------------------
 9278|      1|      SwitchMode();
 9279|      3|    getParser().getStreamer().EmitAssemblerFlag(MCAF_Code32);
 9280|      3|  }
 9281|       |
 9282|     19|  return false;
 9283|     20|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser20parseDirectiveSyntaxEN7llvm_ks5SMLocE:
 9207|    491|bool ARMAsmParser::parseDirectiveSyntax(SMLoc L) {
 9208|    491|  MCAsmParser &Parser = getParser();
 9209|    491|  const AsmToken &Tok = Parser.getTok();
 9210|    491|  if (Tok.isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (9210:7): [True: 14, False: 477]
  ------------------
 9211|       |    //Error(L, "unexpected token in .syntax directive");
 9212|     14|    return false;
 9213|     14|  }
 9214|       |
 9215|    477|  StringRef Mode = Tok.getString();
 9216|    477|  if (Mode == "unified" || Mode == "UNIFIED") {
  ------------------
  |  Branch (9216:7): [True: 41, False: 436]
  |  Branch (9216:7): [True: 41, False: 436]
  |  Branch (9216:28): [True: 0, False: 436]
  ------------------
 9217|     41|    Parser.Lex();
 9218|    436|  } else if (Mode == "divided" || Mode == "DIVIDED") {
  ------------------
  |  Branch (9218:14): [True: 0, False: 436]
  |  Branch (9218:14): [True: 0, False: 436]
  |  Branch (9218:35): [True: 0, False: 436]
  ------------------
 9219|       |    //Error(L, "'.syntax divided' arm asssembly not supported");
 9220|      0|    return false;
 9221|    436|  } else {
 9222|       |    //Error(L, "unrecognized syntax mode in .syntax directive");
 9223|    436|    return false;
 9224|    436|  }
 9225|       |
 9226|     41|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9226:7): [True: 38, False: 3]
  ------------------
 9227|       |    //Error(Parser.getTok().getLoc(), "unexpected token in directive");
 9228|     38|    return false;
 9229|     38|  }
 9230|      3|  Parser.Lex();
 9231|       |
 9232|       |  // TODO tell the MC streamer the mode
 9233|       |  // getParser().getStreamer().Emit???();
 9234|      3|  return false;
 9235|     41|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseDirectiveUnreqEN7llvm_ks5SMLocE:
 9318|    113|bool ARMAsmParser::parseDirectiveUnreq(SMLoc L) {
 9319|    113|  MCAsmParser &Parser = getParser();
 9320|    113|  if (Parser.getTok().isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (9320:7): [True: 11, False: 102]
  ------------------
 9321|     11|    Parser.eatToEndOfStatement();
 9322|       |    //Error(L, "unexpected input in .unreq directive.");
 9323|     11|    return false;
 9324|     11|  }
 9325|    102|  RegisterReqs.erase(Parser.getTok().getIdentifier().lower());
 9326|    102|  Parser.Lex(); // Eat the identifier.
 9327|    102|  return false;
 9328|    113|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseDirectiveFnEndEN7llvm_ks5SMLocE:
 9531|    660|bool ARMAsmParser::parseDirectiveFnEnd(SMLoc L) {
 9532|       |  // Check the ordering of unwind directives
 9533|    660|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9533:7): [True: 99, False: 561]
  ------------------
 9534|       |    //Error(L, ".fnstart must precede .fnend directive");
 9535|     99|    return false;
 9536|     99|  }
 9537|       |
 9538|       |  // Reset the unwind directives parser state
 9539|    561|  getTargetStreamer().emitFnEnd();
 9540|       |
 9541|    561|  UC.reset();
 9542|    561|  return false;
 9543|    660|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext10hasFnStartEv:
   75|  3.90k|  bool hasFnStart() const { return !FnStartLocs.empty(); }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContext5resetEv:
  122|  1.38k|  void reset() {
  123|  1.38k|    FnStartLocs = Locs();
  124|  1.38k|    CantUnwindLocs = Locs();
  125|  1.38k|    PersonalityLocs = Locs();
  126|  1.38k|    HandlerDataLocs = Locs();
  127|  1.38k|    PersonalityIndexLocs = Locs();
  128|  1.38k|    FPReg = ARM::SP;
  129|  1.38k|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser24parseDirectiveCantUnwindEN7llvm_ks5SMLocE:
 9547|    287|bool ARMAsmParser::parseDirectiveCantUnwind(SMLoc L) {
 9548|    287|  UC.recordCantUnwind(L);
 9549|       |
 9550|       |  // Check the ordering of unwind directives
 9551|    287|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9551:7): [True: 41, False: 246]
  ------------------
 9552|       |    //Error(L, ".fnstart must precede .cantunwind directive");
 9553|     41|    return false;
 9554|     41|  }
 9555|    246|  if (UC.hasHandlerData()) {
  ------------------
  |  Branch (9555:7): [True: 126, False: 120]
  ------------------
 9556|       |    //Error(L, ".cantunwind can't be used with .handlerdata directive");
 9557|    126|    UC.emitHandlerDataLocNotes();
 9558|    126|    return false;
 9559|    126|  }
 9560|    120|  if (UC.hasPersonality()) {
  ------------------
  |  Branch (9560:7): [True: 58, False: 62]
  ------------------
 9561|       |    //Error(L, ".cantunwind can't be used with .personality directive");
 9562|     58|    UC.emitPersonalityLocNotes();
 9563|     58|    return false;
 9564|     58|  }
 9565|       |
 9566|     62|  getTargetStreamer().emitCantUnwind();
 9567|     62|  return false;
 9568|    120|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContext16recordCantUnwindEN7llvm_ks5SMLocE:
   83|    287|  void recordCantUnwind(SMLoc L) { CantUnwindLocs.push_back(L); }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext14hasHandlerDataEv:
   77|    918|  bool hasHandlerData() const { return !HandlerDataLocs.empty(); }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext23emitHandlerDataLocNotesEv:
  101|    141|  void emitHandlerDataLocNotes() const {
  102|    141|    for (Locs::const_iterator HI = HandlerDataLocs.begin(),
  103|    514|                              HE = HandlerDataLocs.end(); HI != HE; ++HI)
  ------------------
  |  Branch (103:59): [True: 373, False: 141]
  ------------------
  104|    373|      Parser.Note(*HI, ".handlerdata was specified here");
  105|    141|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext14hasPersonalityEv:
   78|    773|  bool hasPersonality() const {
   79|    773|    return !(PersonalityLocs.empty() && PersonalityIndexLocs.empty());
  ------------------
  |  Branch (79:14): [True: 325, False: 448]
  |  Branch (79:41): [True: 192, False: 133]
  ------------------
   80|    773|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext23emitPersonalityLocNotesEv:
  106|    306|  void emitPersonalityLocNotes() const {
  107|    306|    for (Locs::const_iterator PI = PersonalityLocs.begin(),
  108|    306|                              PE = PersonalityLocs.end(),
  109|    306|                              PII = PersonalityIndexLocs.begin(),
  110|    306|                              PIE = PersonalityIndexLocs.end();
  111|  2.31k|         PI != PE || PII != PIE;) {
  ------------------
  |  Branch (111:10): [True: 1.56k, False: 752]
  |  Branch (111:22): [True: 446, False: 306]
  ------------------
  112|  2.00k|      if (PI != PE && (PII == PIE || PI->getPointer() < PII->getPointer()))
  ------------------
  |  Branch (112:11): [True: 1.56k, False: 446]
  |  Branch (112:24): [True: 234, False: 1.32k]
  |  Branch (112:38): [True: 448, False: 879]
  ------------------
  113|    682|        Parser.Note(*PI++, ".personality was specified here");
  114|  1.32k|      else if (PII != PIE && (PI == PE || PII->getPointer() < PI->getPointer()))
  ------------------
  |  Branch (114:16): [True: 1.32k, False: 0]
  |  Branch (114:31): [True: 446, False: 879]
  |  Branch (114:43): [True: 879, False: 0]
  ------------------
  115|  1.32k|        Parser.Note(*PII++, ".personalityindex was specified here");
  116|      0|      else
  117|      0|        llvm_unreachable(".personality and .personalityindex cannot be "
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  118|  2.00k|                         "at the same location");
  119|  2.00k|    }
  120|    306|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser25parseDirectivePersonalityEN7llvm_ks5SMLocE:
 9572|    389|bool ARMAsmParser::parseDirectivePersonality(SMLoc L) {
 9573|    389|  MCAsmParser &Parser = getParser();
 9574|    389|  bool HasExistingPersonality = UC.hasPersonality();
 9575|       |
 9576|    389|  UC.recordPersonality(L);
 9577|       |
 9578|       |  // Check the ordering of unwind directives
 9579|    389|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9579:7): [True: 169, False: 220]
  ------------------
 9580|       |    //Error(L, ".fnstart must precede .personality directive");
 9581|    169|    return false;
 9582|    169|  }
 9583|    220|  if (UC.cantUnwind()) {
  ------------------
  |  Branch (9583:7): [True: 78, False: 142]
  ------------------
 9584|       |    //Error(L, ".personality can't be used with .cantunwind directive");
 9585|     78|    UC.emitCantUnwindLocNotes();
 9586|     78|    return false;
 9587|     78|  }
 9588|    142|  if (UC.hasHandlerData()) {
  ------------------
  |  Branch (9588:7): [True: 15, False: 127]
  ------------------
 9589|       |    //Error(L, ".personality must precede .handlerdata directive");
 9590|     15|    UC.emitHandlerDataLocNotes();
 9591|     15|    return false;
 9592|     15|  }
 9593|    127|  if (HasExistingPersonality) {
  ------------------
  |  Branch (9593:7): [True: 97, False: 30]
  ------------------
 9594|     97|    Parser.eatToEndOfStatement();
 9595|       |    //Error(L, "multiple personality directives");
 9596|     97|    UC.emitPersonalityLocNotes();
 9597|     97|    return false;
 9598|     97|  }
 9599|       |
 9600|       |  // Parse the name of the personality routine
 9601|     30|  if (Parser.getTok().isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (9601:7): [True: 25, False: 5]
  ------------------
 9602|     25|    Parser.eatToEndOfStatement();
 9603|       |    //Error(L, "unexpected input in .personality directive.");
 9604|     25|    return false;
 9605|     25|  }
 9606|      5|  StringRef Name(Parser.getTok().getIdentifier());
 9607|      5|  Parser.Lex();
 9608|       |
 9609|      5|  MCSymbol *PR = getParser().getContext().getOrCreateSymbol(Name);
 9610|      5|  getTargetStreamer().emitPersonality(PR);
 9611|      5|  return false;
 9612|     30|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContext17recordPersonalityEN7llvm_ks5SMLocE:
   84|    389|  void recordPersonality(SMLoc L) { PersonalityLocs.push_back(L); }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext10cantUnwindEv:
   76|    597|  bool cantUnwind() const { return !CantUnwindLocs.empty(); }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext22emitCantUnwindLocNotesEv:
   96|    183|  void emitCantUnwindLocNotes() const {
   97|    183|    for (Locs::const_iterator UI = CantUnwindLocs.begin(),
   98|    962|                              UE = CantUnwindLocs.end(); UI != UE; ++UI)
  ------------------
  |  Branch (98:58): [True: 779, False: 183]
  ------------------
   99|    779|      Parser.Note(*UI, ".cantunwind was specified here");
  100|    183|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser25parseDirectiveHandlerDataEN7llvm_ks5SMLocE:
 9616|    188|bool ARMAsmParser::parseDirectiveHandlerData(SMLoc L) {
 9617|    188|  UC.recordHandlerData(L);
 9618|       |
 9619|       |  // Check the ordering of unwind directives
 9620|    188|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9620:7): [True: 53, False: 135]
  ------------------
 9621|       |    //Error(L, ".fnstart must precede .personality directive");
 9622|     53|    return false;
 9623|     53|  }
 9624|    135|  if (UC.cantUnwind()) {
  ------------------
  |  Branch (9624:7): [True: 55, False: 80]
  ------------------
 9625|       |    //Error(L, ".handlerdata can't be used with .cantunwind directive");
 9626|     55|    UC.emitCantUnwindLocNotes();
 9627|     55|    return false;
 9628|     55|  }
 9629|       |
 9630|     80|  getTargetStreamer().emitHandlerData();
 9631|     80|  return false;
 9632|    135|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContext17recordHandlerDataEN7llvm_ks5SMLocE:
   85|    188|  void recordHandlerData(SMLoc L) { HandlerDataLocs.push_back(L); }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseDirectiveSetFPEN7llvm_ks5SMLocE:
 9636|     86|bool ARMAsmParser::parseDirectiveSetFP(SMLoc L) {
 9637|     86|  MCAsmParser &Parser = getParser();
 9638|       |  // Check the ordering of unwind directives
 9639|     86|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9639:7): [True: 40, False: 46]
  ------------------
 9640|       |    //Error(L, ".fnstart must precede .setfp directive");
 9641|     40|    return false;
 9642|     40|  }
 9643|     46|  if (UC.hasHandlerData()) {
  ------------------
  |  Branch (9643:7): [True: 3, False: 43]
  ------------------
 9644|       |    //Error(L, ".setfp must precede .handlerdata directive");
 9645|      3|    return false;
 9646|      3|  }
 9647|       |
 9648|       |  // Parse fpreg
 9649|       |  //SMLoc FPRegLoc = Parser.getTok().getLoc();
 9650|     43|  int FPReg = tryParseRegister();
 9651|     43|  if (FPReg == -1) {
  ------------------
  |  Branch (9651:7): [True: 27, False: 16]
  ------------------
 9652|       |    //Error(FPRegLoc, "frame pointer register expected");
 9653|     27|    return false;
 9654|     27|  }
 9655|       |
 9656|       |  // Consume comma
 9657|     16|  if (Parser.getTok().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (9657:7): [True: 11, False: 5]
  ------------------
 9658|       |    //Error(Parser.getTok().getLoc(), "comma expected");
 9659|     11|    return false;
 9660|     11|  }
 9661|      5|  Parser.Lex(); // skip comma
 9662|       |
 9663|       |  // Parse spreg
 9664|       |  //SMLoc SPRegLoc = Parser.getTok().getLoc();
 9665|      5|  int SPReg = tryParseRegister();
 9666|      5|  if (SPReg == -1) {
  ------------------
  |  Branch (9666:7): [True: 1, False: 4]
  ------------------
 9667|       |    //Error(SPRegLoc, "stack pointer register expected");
 9668|      1|    return false;
 9669|      1|  }
 9670|       |
 9671|      4|  if (SPReg != ARM::SP && SPReg != UC.getFPReg()) {
  ------------------
  |  Branch (9671:7): [True: 3, False: 1]
  |  Branch (9671:27): [True: 3, False: 0]
  ------------------
 9672|       |    //Error(SPRegLoc, "register should be either $sp or the latest fp register");
 9673|      3|    return false;
 9674|      3|  }
 9675|       |
 9676|       |  // Update the frame pointer register
 9677|      1|  UC.saveFPReg(FPReg);
 9678|       |
 9679|       |  // Parse offset
 9680|      1|  int64_t Offset = 0;
 9681|      1|  if (Parser.getTok().is(AsmToken::Comma)) {
  ------------------
  |  Branch (9681:7): [True: 1, False: 0]
  ------------------
 9682|      1|    Parser.Lex(); // skip comma
 9683|       |
 9684|      1|    if (Parser.getTok().isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (9684:9): [True: 1, False: 0]
  ------------------
 9685|      1|        Parser.getTok().isNot(AsmToken::Dollar)) {
  ------------------
  |  Branch (9685:9): [True: 1, False: 0]
  ------------------
 9686|       |      //Error(Parser.getTok().getLoc(), "'#' expected");
 9687|      1|      return false;
 9688|      1|    }
 9689|      0|    Parser.Lex(); // skip hash token.
 9690|       |
 9691|      0|    const MCExpr *OffsetExpr;
 9692|       |    //SMLoc ExLoc = Parser.getTok().getLoc();
 9693|      0|    SMLoc EndLoc;
 9694|      0|    if (getParser().parseExpression(OffsetExpr, EndLoc)) {
  ------------------
  |  Branch (9694:9): [True: 0, False: 0]
  ------------------
 9695|       |      //Error(ExLoc, "malformed setfp offset");
 9696|      0|      return false;
 9697|      0|    }
 9698|      0|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(OffsetExpr);
 9699|      0|    if (!CE) {
  ------------------
  |  Branch (9699:9): [True: 0, False: 0]
  ------------------
 9700|       |      //Error(ExLoc, "setfp offset must be an immediate");
 9701|      0|      return false;
 9702|      0|    }
 9703|       |
 9704|      0|    Offset = CE->getValue();
 9705|      0|  }
 9706|       |
 9707|      0|  getTargetStreamer().emitSetFP(static_cast<unsigned>(FPReg),
 9708|      0|                                static_cast<unsigned>(SPReg), Offset);
 9709|      0|  return false;
 9710|      1|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext8getFPRegEv:
   89|     65|  int getFPReg() const { return FPReg; }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContext9saveFPRegEi:
   88|      7|  void saveFPReg(int Reg) { FPReg = Reg; }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17parseDirectivePadEN7llvm_ks5SMLocE:
 9714|    315|bool ARMAsmParser::parseDirectivePad(SMLoc L) {
 9715|    315|  MCAsmParser &Parser = getParser();
 9716|       |  // Check the ordering of unwind directives
 9717|    315|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9717:7): [True: 24, False: 291]
  ------------------
 9718|       |    //Error(L, ".fnstart must precede .pad directive");
 9719|     24|    return false;
 9720|     24|  }
 9721|    291|  if (UC.hasHandlerData()) {
  ------------------
  |  Branch (9721:7): [True: 0, False: 291]
  ------------------
 9722|       |    //Error(L, ".pad must precede .handlerdata directive");
 9723|      0|    return false;
 9724|      0|  }
 9725|       |
 9726|       |  // Parse the offset
 9727|    291|  if (Parser.getTok().isNot(AsmToken::Hash) &&
  ------------------
  |  Branch (9727:7): [True: 114, False: 177]
  ------------------
 9728|    114|      Parser.getTok().isNot(AsmToken::Dollar)) {
  ------------------
  |  Branch (9728:7): [True: 114, False: 0]
  ------------------
 9729|       |    //Error(Parser.getTok().getLoc(), "'#' expected");
 9730|    114|    return false;
 9731|    114|  }
 9732|    177|  Parser.Lex(); // skip hash token.
 9733|       |
 9734|    177|  const MCExpr *OffsetExpr;
 9735|       |  //SMLoc ExLoc = Parser.getTok().getLoc();
 9736|    177|  SMLoc EndLoc;
 9737|    177|  if (getParser().parseExpression(OffsetExpr, EndLoc)) {
  ------------------
  |  Branch (9737:7): [True: 72, False: 105]
  ------------------
 9738|       |    //Error(ExLoc, "malformed pad offset");
 9739|     72|    return false;
 9740|     72|  }
 9741|    105|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(OffsetExpr);
 9742|    105|  if (!CE) {
  ------------------
  |  Branch (9742:7): [True: 90, False: 15]
  ------------------
 9743|       |    //Error(ExLoc, "pad offset must be an immediate");
 9744|     90|    return false;
 9745|     90|  }
 9746|       |
 9747|     15|  getTargetStreamer().emitPad(CE->getValue());
 9748|     15|  return false;
 9749|    105|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21parseDirectiveRegSaveEN7llvm_ks5SMLocEb:
 9754|     76|bool ARMAsmParser::parseDirectiveRegSave(SMLoc L, bool IsVector) {
 9755|       |  // Check the ordering of unwind directives
 9756|     76|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9756:7): [True: 75, False: 1]
  ------------------
 9757|       |    //Error(L, ".fnstart must precede .save or .vsave directives");
 9758|     75|    return false;
 9759|     75|  }
 9760|      1|  if (UC.hasHandlerData()) {
  ------------------
  |  Branch (9760:7): [True: 1, False: 0]
  ------------------
 9761|       |    //Error(L, ".save or .vsave must precede .handlerdata directive");
 9762|      1|    return false;
 9763|      1|  }
 9764|       |
 9765|       |  // RAII object to make sure parsed operands are deleted.
 9766|      0|  SmallVector<std::unique_ptr<MCParsedAsmOperand>, 1> Operands;
 9767|       |
 9768|       |  // Parse the register list
 9769|      0|  if (parseRegisterList(Operands))
  ------------------
  |  Branch (9769:7): [True: 0, False: 0]
  ------------------
 9770|      0|    return false;
 9771|      0|  ARMOperand &Op = (ARMOperand &)*Operands[0];
 9772|      0|  if (!IsVector && !Op.isRegList()) {
  ------------------
  |  Branch (9772:7): [True: 0, False: 0]
  |  Branch (9772:20): [True: 0, False: 0]
  ------------------
 9773|       |    //Error(L, ".save expects GPR registers");
 9774|      0|    return false;
 9775|      0|  }
 9776|      0|  if (IsVector && !Op.isDPRRegList()) {
  ------------------
  |  Branch (9776:7): [True: 0, False: 0]
  |  Branch (9776:19): [True: 0, False: 0]
  ------------------
 9777|       |    //Error(L, ".vsave expects DPR registers");
 9778|      0|    return false;
 9779|      0|  }
 9780|       |
 9781|      0|  getTargetStreamer().emitRegSave(Op.getRegList(), IsVector);
 9782|      0|  return false;
 9783|      0|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isRegListEv:
 1042|    340|  bool isRegList() const { return Kind == k_RegisterList; }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseDirectiveLtorgEN7llvm_ks5SMLocE:
 9873|  1.25k|bool ARMAsmParser::parseDirectiveLtorg(SMLoc L) {
 9874|  1.25k|  getTargetStreamer().emitCurrentConstantPool();
 9875|  1.25k|  return false;
 9876|  1.25k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser18parseDirectiveEvenEN7llvm_ks5SMLocE:
 9879|    579|{
 9880|    579|  const MCSection *Section = getStreamer().getCurrentSection().first;
 9881|       |
 9882|    579|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9882:7): [True: 330, False: 249]
  ------------------
 9883|       |    //TokError("unexpected token in directive");
 9884|    330|    return false;
 9885|    330|  }
 9886|       |
 9887|    249|  if (!Section) {
  ------------------
  |  Branch (9887:7): [True: 0, False: 249]
  ------------------
 9888|      0|    getStreamer().InitSections(false);
 9889|      0|    Section = getStreamer().getCurrentSection().first;
 9890|      0|  }
 9891|       |
 9892|    249|  assert(Section && "must have section to emit alignment");
  ------------------
  |  Branch (9892:3): [True: 249, False: 0]
  |  Branch (9892:3): [True: 249, Folded]
  |  Branch (9892:3): [True: 249, False: 0]
  ------------------
 9893|    249|  if (Section->UseCodeAlign())
  ------------------
  |  Branch (9893:7): [True: 176, False: 73]
  ------------------
 9894|    176|    getStreamer().EmitCodeAlignment(2);
 9895|     73|  else
 9896|     73|    getStreamer().EmitValueToAlignment(2);
 9897|       |
 9898|    249|  return false;
 9899|    249|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser30parseDirectivePersonalityIndexEN7llvm_ks5SMLocE:
 9903|    264|bool ARMAsmParser::parseDirectivePersonalityIndex(SMLoc L) {
 9904|    264|  MCAsmParser &Parser = getParser();
 9905|    264|  bool HasExistingPersonality = UC.hasPersonality();
 9906|       |
 9907|    264|  UC.recordPersonalityIndex(L);
 9908|       |
 9909|    264|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9909:7): [True: 22, False: 242]
  ------------------
 9910|     22|    Parser.eatToEndOfStatement();
 9911|       |    //Error(L, ".fnstart must precede .personalityindex directive");
 9912|     22|    return false;
 9913|     22|  }
 9914|    242|  if (UC.cantUnwind()) {
  ------------------
  |  Branch (9914:7): [True: 50, False: 192]
  ------------------
 9915|     50|    Parser.eatToEndOfStatement();
 9916|       |    //Error(L, ".personalityindex cannot be used with .cantunwind");
 9917|     50|    UC.emitCantUnwindLocNotes();
 9918|     50|    return false;
 9919|     50|  }
 9920|    192|  if (UC.hasHandlerData()) {
  ------------------
  |  Branch (9920:7): [True: 0, False: 192]
  ------------------
 9921|      0|    Parser.eatToEndOfStatement();
 9922|       |    //Error(L, ".personalityindex must precede .handlerdata directive");
 9923|      0|    UC.emitHandlerDataLocNotes();
 9924|      0|    return false;
 9925|      0|  }
 9926|    192|  if (HasExistingPersonality) {
  ------------------
  |  Branch (9926:7): [True: 151, False: 41]
  ------------------
 9927|    151|    Parser.eatToEndOfStatement();
 9928|       |    //Error(L, "multiple personality directives");
 9929|    151|    UC.emitPersonalityLocNotes();
 9930|    151|    return false;
 9931|    151|  }
 9932|       |
 9933|     41|  const MCExpr *IndexExpression;
 9934|       |  //SMLoc IndexLoc = Parser.getTok().getLoc();
 9935|     41|  if (Parser.parseExpression(IndexExpression)) {
  ------------------
  |  Branch (9935:7): [True: 19, False: 22]
  ------------------
 9936|     19|    Parser.eatToEndOfStatement();
 9937|     19|    return false;
 9938|     19|  }
 9939|       |
 9940|     22|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(IndexExpression);
 9941|     22|  if (!CE) {
  ------------------
  |  Branch (9941:7): [True: 7, False: 15]
  ------------------
 9942|      7|    Parser.eatToEndOfStatement();
 9943|       |    //Error(IndexLoc, "index must be a constant number");
 9944|      7|    return false;
 9945|      7|  }
 9946|     15|  if (CE->getValue() < 0 ||
  ------------------
  |  Branch (9946:7): [True: 9, False: 6]
  ------------------
 9947|     14|      CE->getValue() >= ARM::EHABI::NUM_PERSONALITY_INDEX) {
  ------------------
  |  Branch (9947:7): [True: 5, False: 1]
  ------------------
 9948|     14|    Parser.eatToEndOfStatement();
 9949|       |    //Error(IndexLoc, "personality routine index should be in range [0-3]");
 9950|     14|    return false;
 9951|     14|  }
 9952|       |
 9953|      1|  getTargetStreamer().emitPersonalityIndex(CE->getValue());
 9954|      1|  return false;
 9955|     15|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContext22recordPersonalityIndexEN7llvm_ks5SMLocE:
   86|    264|  void recordPersonalityIndex(SMLoc L) { PersonalityIndexLocs.push_back(L); }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser23parseDirectiveUnwindRawEN7llvm_ks5SMLocE:
 9959|    425|bool ARMAsmParser::parseDirectiveUnwindRaw(SMLoc L) {
 9960|    425|  MCAsmParser &Parser = getParser();
 9961|    425|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (9961:7): [True: 288, False: 137]
  ------------------
 9962|    288|    Parser.eatToEndOfStatement();
 9963|       |    //Error(L, ".fnstart must precede .unwind_raw directives");
 9964|    288|    return false;
 9965|    288|  }
 9966|       |
 9967|    137|  int64_t StackOffset;
 9968|       |
 9969|    137|  const MCExpr *OffsetExpr;
 9970|       |  //SMLoc OffsetLoc = getLexer().getLoc();
 9971|    137|  if (getLexer().is(AsmToken::EndOfStatement) ||
  ------------------
  |  Branch (9971:7): [True: 10, False: 127]
  ------------------
 9972|    127|      getParser().parseExpression(OffsetExpr)) {
  ------------------
  |  Branch (9972:7): [True: 34, False: 93]
  ------------------
 9973|       |    //Error(OffsetLoc, "expected expression");
 9974|     44|    Parser.eatToEndOfStatement();
 9975|     44|    return false;
 9976|     44|  }
 9977|       |
 9978|     93|  const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(OffsetExpr);
 9979|     93|  if (!CE) {
  ------------------
  |  Branch (9979:7): [True: 11, False: 82]
  ------------------
 9980|       |    //Error(OffsetLoc, "offset must be a constant");
 9981|     11|    Parser.eatToEndOfStatement();
 9982|     11|    return false;
 9983|     11|  }
 9984|       |
 9985|     82|  StackOffset = CE->getValue();
 9986|       |
 9987|     82|  if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (9987:7): [True: 15, False: 67]
  ------------------
 9988|       |    //Error(getLexer().getLoc(), "expected comma");
 9989|     15|    Parser.eatToEndOfStatement();
 9990|     15|    return false;
 9991|     15|  }
 9992|     67|  Parser.Lex();
 9993|       |
 9994|     67|  SmallVector<uint8_t, 16> Opcodes;
 9995|    110|  for (;;) {
 9996|    110|    const MCExpr *OE;
 9997|       |
 9998|       |    //SMLoc OpcodeLoc = getLexer().getLoc();
 9999|    110|    if (getLexer().is(AsmToken::EndOfStatement) || Parser.parseExpression(OE)) {
  ------------------
  |  Branch (9999:9): [True: 6, False: 104]
  |  Branch (9999:52): [True: 12, False: 92]
  ------------------
10000|       |      //Error(OpcodeLoc, "expected opcode expression");
10001|     18|      Parser.eatToEndOfStatement();
10002|     18|      return false;
10003|     18|    }
10004|       |
10005|     92|    const MCConstantExpr *OC = dyn_cast<MCConstantExpr>(OE);
10006|     92|    if (!OC) {
  ------------------
  |  Branch (10006:9): [True: 25, False: 67]
  ------------------
10007|       |      //Error(OpcodeLoc, "opcode value must be a constant");
10008|     25|      Parser.eatToEndOfStatement();
10009|     25|      return false;
10010|     25|    }
10011|       |
10012|     67|    const int64_t Opcode = OC->getValue();
10013|     67|    if (Opcode & ~0xff) {
  ------------------
  |  Branch (10013:9): [True: 8, False: 59]
  ------------------
10014|       |      //Error(OpcodeLoc, "invalid opcode");
10015|      8|      Parser.eatToEndOfStatement();
10016|      8|      return false;
10017|      8|    }
10018|       |
10019|     59|    Opcodes.push_back(uint8_t(Opcode));
10020|       |
10021|     59|    if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (10021:9): [True: 6, False: 53]
  ------------------
10022|      6|      break;
10023|       |
10024|     53|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (10024:9): [True: 10, False: 43]
  ------------------
10025|       |      //Error(getLexer().getLoc(), "unexpected token in directive");
10026|     10|      Parser.eatToEndOfStatement();
10027|     10|      return false;
10028|     10|    }
10029|       |
10030|     43|    Parser.Lex();
10031|     43|  }
10032|       |
10033|      6|  getTargetStreamer().emitUnwindRaw(StackOffset, Opcodes);
10034|       |
10035|      6|  Parser.Lex();
10036|      6|  return false;
10037|     67|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseDirectiveMovSPEN7llvm_ks5SMLocE:
10068|    117|bool ARMAsmParser::parseDirectiveMovSP(SMLoc L) {
10069|    117|  MCAsmParser &Parser = getParser();
10070|    117|  if (!UC.hasFnStart()) {
  ------------------
  |  Branch (10070:7): [True: 55, False: 62]
  ------------------
10071|     55|    Parser.eatToEndOfStatement();
10072|       |    //Error(L, ".fnstart must precede .movsp directives");
10073|     55|    return false;
10074|     55|  }
10075|     62|  if (UC.getFPReg() != ARM::SP) {
  ------------------
  |  Branch (10075:7): [True: 10, False: 52]
  ------------------
10076|     10|    Parser.eatToEndOfStatement();
10077|       |    //Error(L, "unexpected .movsp directive");
10078|     10|    return false;
10079|     10|  }
10080|       |
10081|       |  //SMLoc SPRegLoc = Parser.getTok().getLoc();
10082|     52|  int SPReg = tryParseRegister();
10083|     52|  if (SPReg == -1) {
  ------------------
  |  Branch (10083:7): [True: 9, False: 43]
  ------------------
10084|      9|    Parser.eatToEndOfStatement();
10085|       |    //Error(SPRegLoc, "register expected");
10086|      9|    return false;
10087|      9|  }
10088|       |
10089|     43|  if (SPReg == ARM::SP || SPReg == ARM::PC) {
  ------------------
  |  Branch (10089:7): [True: 5, False: 38]
  |  Branch (10089:27): [True: 0, False: 38]
  ------------------
10090|      5|    Parser.eatToEndOfStatement();
10091|       |    //Error(SPRegLoc, "sp and pc are not permitted in .movsp directive");
10092|      5|    return false;
10093|      5|  }
10094|       |
10095|     38|  int64_t Offset = 0;
10096|     38|  if (Parser.getTok().is(AsmToken::Comma)) {
  ------------------
  |  Branch (10096:7): [True: 33, False: 5]
  ------------------
10097|     33|    Parser.Lex();
10098|       |
10099|     33|    if (Parser.getTok().isNot(AsmToken::Hash)) {
  ------------------
  |  Branch (10099:9): [True: 10, False: 23]
  ------------------
10100|       |      //Error(Parser.getTok().getLoc(), "expected #constant");
10101|     10|      Parser.eatToEndOfStatement();
10102|     10|      return false;
10103|     10|    }
10104|     23|    Parser.Lex();
10105|       |
10106|     23|    const MCExpr *OffsetExpr;
10107|       |    //SMLoc OffsetLoc = Parser.getTok().getLoc();
10108|     23|    if (Parser.parseExpression(OffsetExpr)) {
  ------------------
  |  Branch (10108:9): [True: 12, False: 11]
  ------------------
10109|     12|      Parser.eatToEndOfStatement();
10110|       |      //Error(OffsetLoc, "malformed offset expression");
10111|     12|      return false;
10112|     12|    }
10113|       |
10114|     11|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(OffsetExpr);
10115|     11|    if (!CE) {
  ------------------
  |  Branch (10115:9): [True: 10, False: 1]
  ------------------
10116|     10|      Parser.eatToEndOfStatement();
10117|       |      //Error(OffsetLoc, "offset must be an immediate constant");
10118|     10|      return false;
10119|     10|    }
10120|       |
10121|      1|    Offset = CE->getValue();
10122|      1|  }
10123|       |
10124|      6|  getTargetStreamer().emitMovSP(SPReg, Offset);
10125|      6|  UC.saveFPReg(SPReg);
10126|       |
10127|      6|  return false;
10128|     38|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser27parseDirectiveArchExtensionEN7llvm_ks5SMLocE:
10253|    578|{
10254|    578|  MCAsmParser &Parser = getParser();
10255|       |
10256|    578|  if (getLexer().isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (10256:7): [True: 15, False: 563]
  ------------------
10257|       |    //Error(getLexer().getLoc(), "unexpected token");
10258|     15|    Parser.eatToEndOfStatement();
10259|     15|    return false;
10260|     15|  }
10261|       |
10262|    563|  StringRef Name = Parser.getTok().getString();
10263|       |  //SMLoc ExtLoc = Parser.getTok().getLoc();
10264|    563|  getLexer().Lex();
10265|       |
10266|    563|  bool EnableFeature = true;
10267|    563|  if (Name.startswith_lower("no")) {
  ------------------
  |  Branch (10267:7): [True: 11, False: 552]
  ------------------
10268|     11|    EnableFeature = false;
10269|     11|    Name = Name.substr(2);
10270|     11|  }
10271|    563|  unsigned FeatureKind = ARM::parseArchExt(Name);
10272|       |  //if (FeatureKind == ARM::AEK_INVALID)
10273|       |  //  Error(ExtLoc, "unknown architectural extension: " + Name);
10274|       |
10275|  4.20k|  for (const auto &Extension : Extensions) {
  ------------------
  |  Branch (10275:30): [True: 4.20k, False: 157]
  ------------------
10276|  4.20k|    if (Extension.Kind != FeatureKind)
  ------------------
  |  Branch (10276:9): [True: 3.80k, False: 406]
  ------------------
10277|  3.80k|      continue;
10278|       |
10279|    406|    if (Extension.Features.none())
  ------------------
  |  Branch (10279:9): [True: 0, False: 406]
  ------------------
10280|      0|      report_fatal_error("unsupported architectural extension: " + Name);
10281|       |
10282|    406|    if ((getAvailableFeatures() & Extension.ArchCheck) != Extension.ArchCheck) {
  ------------------
  |  Branch (10282:9): [True: 299, False: 107]
  ------------------
10283|       |      //Error(ExtLoc, "architectural extension '" + Name + "' is not "
10284|       |      //      "allowed for the current base architecture");
10285|    299|      return false;
10286|    299|    }
10287|       |
10288|    107|    MCSubtargetInfo &STI = copySTI();
10289|    107|    FeatureBitset ToggleFeatures = EnableFeature
  ------------------
  |  Branch (10289:36): [True: 107, False: 0]
  ------------------
10290|    107|      ? (~STI.getFeatureBits() & Extension.Features)
10291|    107|      : ( STI.getFeatureBits() & Extension.Features);
10292|       |
10293|    107|    uint64_t Features =
10294|    107|        ComputeAvailableFeatures(STI.ToggleFeature(ToggleFeatures));
10295|    107|    setAvailableFeatures(Features);
10296|    107|    return false;
10297|    406|  }
10298|       |
10299|       |  //Error(ExtLoc, "unknown architectural extension: " + Name);
10300|    157|  Parser.eatToEndOfStatement();
10301|    157|  return false;
10302|    563|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19parseDirectiveAlignEN7llvm_ks5SMLocE:
10164|  15.0k|bool ARMAsmParser::parseDirectiveAlign(SMLoc L) {
10165|       |  // NOTE: if this is not the end of the statement, fall back to the target
10166|       |  // agnostic handling for this directive which will correctly handle this.
10167|  15.0k|  if (getLexer().isNot(AsmToken::EndOfStatement))
  ------------------
  |  Branch (10167:7): [True: 14.7k, False: 282]
  ------------------
10168|  14.7k|    return true;
10169|       |
10170|       |  // '.align' is target specifically handled to mean 2**2 byte alignment.
10171|    282|  if (getStreamer().getCurrentSection().first->UseCodeAlign())
  ------------------
  |  Branch (10171:7): [True: 264, False: 18]
  ------------------
10172|    264|    getStreamer().EmitCodeAlignment(4, 0);
10173|     18|  else
10174|     18|    getStreamer().EmitValueToAlignment(4, 0, 1, 0);
10175|       |
10176|    282|  return false;
10177|  15.0k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser22parseDirectiveThumbSetEN7llvm_ks5SMLocE:
10182|     29|{
10183|     29|  MCAsmParser &Parser = getParser();
10184|       |
10185|     29|  StringRef Name;
10186|     29|  if (Parser.parseIdentifier(Name)) {
  ------------------
  |  Branch (10186:7): [True: 10, False: 19]
  ------------------
10187|       |    //TokError("expected identifier after '.thumb_set'");
10188|     10|    Parser.eatToEndOfStatement();
10189|     10|    return false;
10190|     10|  }
10191|       |
10192|     19|  if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (10192:7): [True: 7, False: 12]
  ------------------
10193|       |    //TokError("expected comma after name '" + Name + "'");
10194|      7|    Parser.eatToEndOfStatement();
10195|      7|    return false;
10196|      7|  }
10197|     12|  Lex();
10198|       |
10199|     12|  MCSymbol *Sym;
10200|     12|  const MCExpr *Value;
10201|     12|  if (MCParserUtils::parseAssignmentExpression(Name, /* allow_redef */ true,
  ------------------
  |  Branch (10201:7): [True: 6, False: 6]
  ------------------
10202|     12|                                               Parser, Sym, Value))
10203|      6|    return true;
10204|       |
10205|      6|  getTargetStreamer().emitThumbSet(Sym, Value);
10206|      6|  return false;
10207|     12|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser18parseDirectiveArchEN7llvm_ks5SMLocE:
 9332|  53.9k|bool ARMAsmParser::parseDirectiveArch(SMLoc L) {
 9333|  53.9k|  StringRef Arch = getParser().parseStringToEndOfStatement().trim();
 9334|       |
 9335|  53.9k|  unsigned ID = ARM::parseArch(Arch);
 9336|       |
 9337|  53.9k|  if (ID == ARM::AK_INVALID) {
  ------------------
  |  Branch (9337:7): [True: 31.0k, False: 22.9k]
  ------------------
 9338|       |    //Error(L, "Unknown arch name");
 9339|  31.0k|    return false;
 9340|  31.0k|  }
 9341|       |
 9342|  22.9k|  Triple T;
 9343|  22.9k|  MCSubtargetInfo &STI = copySTI();
 9344|  22.9k|  STI.setDefaultFeatures("", ("+" + ARM::getArchName(ID)).str());
 9345|  22.9k|  setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
 9346|       |
 9347|  22.9k|  getTargetStreamer().emitArch(ID);
 9348|  22.9k|  return false;
 9349|  53.9k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17parseDirectiveCPUEN7llvm_ks5SMLocE:
 9471|    564|bool ARMAsmParser::parseDirectiveCPU(SMLoc L) {
 9472|    564|  StringRef CPU = getParser().parseStringToEndOfStatement().trim();
 9473|    564|  getTargetStreamer().emitTextAttribute(ARMBuildAttrs::CPU_name, CPU);
 9474|       |
 9475|       |  // FIXME: This is using table-gen data, but should be moved to
 9476|       |  // ARMTargetParser once that is table-gen'd.
 9477|    564|  if (!getSTI().isCPUStringValid(CPU)) {
  ------------------
  |  Branch (9477:7): [True: 471, False: 93]
  ------------------
 9478|       |    //Error(L, "Unknown CPU name");
 9479|    471|    return false;
 9480|    471|  }
 9481|       |
 9482|     93|  MCSubtargetInfo &STI = copySTI();
 9483|     93|  STI.setDefaultFeatures(CPU, "");
 9484|     93|  setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
 9485|       |
 9486|     93|  return false;
 9487|    564|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser22parseDirectiveEabiAttrEN7llvm_ks5SMLocE:
 9355|    528|{
 9356|    528|  MCAsmParser &Parser = getParser();
 9357|    528|  int64_t Tag;
 9358|    528|  SMLoc TagLoc;
 9359|    528|  TagLoc = Parser.getTok().getLoc();
 9360|    528|  if (Parser.getTok().is(AsmToken::Identifier)) {
  ------------------
  |  Branch (9360:7): [True: 214, False: 314]
  ------------------
 9361|    214|    StringRef Name = Parser.getTok().getIdentifier();
 9362|    214|    Tag = ARMBuildAttrs::AttrTypeFromString(Name);
 9363|    214|    if (Tag == -1) {
  ------------------
  |  Branch (9363:9): [True: 182, False: 32]
  ------------------
 9364|       |      //Error(TagLoc, "attribute name not recognised: " + Name);
 9365|    182|      Parser.eatToEndOfStatement();
 9366|    182|      return false;
 9367|    182|    }
 9368|     32|    Parser.Lex();
 9369|    314|  } else {
 9370|    314|    const MCExpr *AttrExpr;
 9371|       |
 9372|    314|    TagLoc = Parser.getTok().getLoc();
 9373|    314|    if (Parser.parseExpression(AttrExpr)) {
  ------------------
  |  Branch (9373:9): [True: 13, False: 301]
  ------------------
 9374|     13|      Parser.eatToEndOfStatement();
 9375|     13|      return false;
 9376|     13|    }
 9377|       |
 9378|    301|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(AttrExpr);
 9379|    301|    if (!CE) {
  ------------------
  |  Branch (9379:9): [True: 38, False: 263]
  ------------------
 9380|       |      //Error(TagLoc, "expected numeric constant");
 9381|     38|      Parser.eatToEndOfStatement();
 9382|     38|      return false;
 9383|     38|    }
 9384|       |
 9385|    263|    Tag = CE->getValue();
 9386|    263|  }
 9387|       |
 9388|    295|  if (Parser.getTok().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (9388:7): [True: 36, False: 259]
  ------------------
 9389|       |    //Error(Parser.getTok().getLoc(), "comma expected");
 9390|     36|    Parser.eatToEndOfStatement();
 9391|     36|    return false;
 9392|     36|  }
 9393|    259|  Parser.Lex(); // skip comma
 9394|       |
 9395|    259|  StringRef StringValue = "";
 9396|    259|  bool IsStringValue = false;
 9397|       |
 9398|    259|  int64_t IntegerValue = 0;
 9399|    259|  bool IsIntegerValue = false;
 9400|       |
 9401|    259|  if (Tag == ARMBuildAttrs::CPU_raw_name || Tag == ARMBuildAttrs::CPU_name)
  ------------------
  |  Branch (9401:7): [True: 69, False: 190]
  |  Branch (9401:45): [True: 5, False: 185]
  ------------------
 9402|     74|    IsStringValue = true;
 9403|    185|  else if (Tag == ARMBuildAttrs::compatibility) {
  ------------------
  |  Branch (9403:12): [True: 33, False: 152]
  ------------------
 9404|     33|    IsStringValue = true;
 9405|     33|    IsIntegerValue = true;
 9406|    152|  } else if (Tag < 32 || Tag % 2 == 0)
  ------------------
  |  Branch (9406:14): [True: 117, False: 35]
  |  Branch (9406:26): [True: 22, False: 13]
  ------------------
 9407|    139|    IsIntegerValue = true;
 9408|     13|  else if (Tag % 2 == 1)
  ------------------
  |  Branch (9408:12): [True: 13, False: 0]
  ------------------
 9409|     13|    IsStringValue = true;
 9410|      0|  else
 9411|      0|    llvm_unreachable("invalid tag type");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 9412|       |
 9413|    259|  if (IsIntegerValue) {
  ------------------
  |  Branch (9413:7): [True: 172, False: 87]
  ------------------
 9414|    172|    const MCExpr *ValueExpr;
 9415|       |    //SMLoc ValueExprLoc = Parser.getTok().getLoc();
 9416|    172|    if (Parser.parseExpression(ValueExpr)) {
  ------------------
  |  Branch (9416:9): [True: 46, False: 126]
  ------------------
 9417|     46|      Parser.eatToEndOfStatement();
 9418|     46|      return false;
 9419|     46|    }
 9420|       |
 9421|    126|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(ValueExpr);
 9422|    126|    if (!CE) {
  ------------------
  |  Branch (9422:9): [True: 55, False: 71]
  ------------------
 9423|       |      //Error(ValueExprLoc, "expected numeric constant");
 9424|     55|      Parser.eatToEndOfStatement();
 9425|     55|      return false;
 9426|     55|    }
 9427|       |
 9428|     71|    IntegerValue = CE->getValue();
 9429|     71|  }
 9430|       |
 9431|    158|  if (Tag == ARMBuildAttrs::compatibility) {
  ------------------
  |  Branch (9431:7): [True: 28, False: 130]
  ------------------
 9432|     28|    if (Parser.getTok().isNot(AsmToken::Comma))
  ------------------
  |  Branch (9432:9): [True: 15, False: 13]
  ------------------
 9433|     15|      IsStringValue = false;
 9434|     28|    if (Parser.getTok().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (9434:9): [True: 15, False: 13]
  ------------------
 9435|       |      //Error(Parser.getTok().getLoc(), "comma expected");
 9436|     15|      Parser.eatToEndOfStatement();
 9437|     15|      return false;
 9438|     15|    } else {
 9439|     13|       Parser.Lex();
 9440|     13|    }
 9441|     28|  }
 9442|       |
 9443|    143|  if (IsStringValue) {
  ------------------
  |  Branch (9443:7): [True: 100, False: 43]
  ------------------
 9444|    100|    if (Parser.getTok().isNot(AsmToken::String)) {
  ------------------
  |  Branch (9444:9): [True: 100, False: 0]
  ------------------
 9445|       |      //Error(Parser.getTok().getLoc(), "bad string constant");
 9446|    100|      Parser.eatToEndOfStatement();
 9447|    100|      return false;
 9448|    100|    }
 9449|       |
 9450|      0|    bool valid;
 9451|      0|    StringValue = Parser.getTok().getStringContents(valid);
 9452|      0|    if (!valid) {
  ------------------
  |  Branch (9452:9): [True: 0, False: 0]
  ------------------
 9453|       |        //KsError = KS_ERR_ASM_DIRECTIVE_STR;
 9454|      0|        return true;
 9455|      0|    }
 9456|      0|    Parser.Lex();
 9457|      0|  }
 9458|       |
 9459|     43|  if (IsIntegerValue && IsStringValue) {
  ------------------
  |  Branch (9459:7): [True: 43, False: 0]
  |  Branch (9459:25): [True: 0, False: 43]
  ------------------
 9460|      0|    assert(Tag == ARMBuildAttrs::compatibility);
  ------------------
  |  Branch (9460:5): [True: 0, False: 0]
  ------------------
 9461|      0|    getTargetStreamer().emitIntTextAttribute(Tag, IntegerValue, StringValue);
 9462|     43|  } else if (IsIntegerValue)
  ------------------
  |  Branch (9462:14): [True: 43, False: 0]
  ------------------
 9463|     43|    getTargetStreamer().emitAttribute(Tag, IntegerValue);
 9464|      0|  else if (IsStringValue)
  ------------------
  |  Branch (9464:12): [True: 0, False: 0]
  ------------------
 9465|      0|    getTargetStreamer().emitTextAttribute(Tag, StringValue);
 9466|     43|  return false;
 9467|     43|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17parseDirectiveFPUEN7llvm_ks5SMLocE:
 9491|  9.89k|{
 9492|       |  //SMLoc FPUNameLoc = getTok().getLoc();
 9493|  9.89k|  StringRef FPU = getParser().parseStringToEndOfStatement().trim();
 9494|       |
 9495|  9.89k|  unsigned ID = ARM::parseFPU(FPU);
 9496|  9.89k|  std::vector<const char *> Features;
 9497|  9.89k|  if (!ARM::getFPUFeatures(ID, Features)) {
  ------------------
  |  Branch (9497:7): [True: 7.05k, False: 2.84k]
  ------------------
 9498|       |    //Error(FPUNameLoc, "Unknown FPU name");
 9499|  7.05k|    return false;
 9500|  7.05k|  }
 9501|       |
 9502|  2.84k|  MCSubtargetInfo &STI = copySTI();
 9503|  2.84k|  for (auto Feature : Features)
  ------------------
  |  Branch (9503:21): [True: 20.9k, False: 2.84k]
  ------------------
 9504|  20.9k|    STI.ApplyFeatureFlag(Feature);
 9505|  2.84k|  setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
 9506|       |
 9507|  2.84k|  getTargetStreamer().emitFPU(ID);
 9508|  2.84k|  return false;
 9509|  9.89k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser21parseDirectiveFnStartEN7llvm_ks5SMLocE:
 9513|  1.09k|bool ARMAsmParser::parseDirectiveFnStart(SMLoc L) {
 9514|  1.09k|  if (UC.hasFnStart()) {
  ------------------
  |  Branch (9514:7): [True: 266, False: 827]
  ------------------
 9515|       |    //Error(L, ".fnstart starts before the end of previous one");
 9516|    266|    UC.emitFnStartLocNotes();
 9517|    266|    return false;
 9518|    266|  }
 9519|       |
 9520|       |  // Reset the unwind directives parser state
 9521|    827|  UC.reset();
 9522|       |
 9523|    827|  getTargetStreamer().emitFnStart();
 9524|       |
 9525|    827|  UC.recordFnStart(L);
 9526|    827|  return false;
 9527|  1.09k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_113UnwindContext19emitFnStartLocNotesEv:
   91|    266|  void emitFnStartLocNotes() const {
   92|    266|    for (Locs::const_iterator FI = FnStartLocs.begin(), FE = FnStartLocs.end();
   93|    532|         FI != FE; ++FI)
  ------------------
  |  Branch (93:10): [True: 266, False: 266]
  ------------------
   94|    266|      Parser.Note(*FI, ".fnstart was specified here");
   95|    266|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_113UnwindContext13recordFnStartEN7llvm_ks5SMLocE:
   82|    827|  void recordFnStart(SMLoc L) { FnStartLocs.push_back(L); }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser18parseDirectiveInstEN7llvm_ks5SMLocEc:
 9789|    643|bool ARMAsmParser::parseDirectiveInst(SMLoc Loc, char Suffix) {
 9790|    643|  MCAsmParser &Parser = getParser();
 9791|    643|  int Width;
 9792|       |
 9793|    643|  if (isThumb()) {
  ------------------
  |  Branch (9793:7): [True: 137, False: 506]
  ------------------
 9794|    137|    switch (Suffix) {
 9795|     43|    case 'n':
  ------------------
  |  Branch (9795:5): [True: 43, False: 94]
  ------------------
 9796|     43|      Width = 2;
 9797|     43|      break;
 9798|      4|    case 'w':
  ------------------
  |  Branch (9798:5): [True: 4, False: 133]
  ------------------
 9799|      4|      Width = 4;
 9800|      4|      break;
 9801|     90|    default:
  ------------------
  |  Branch (9801:5): [True: 90, False: 47]
  ------------------
 9802|     90|      Parser.eatToEndOfStatement();
 9803|       |      //Error(Loc, "cannot determine Thumb instruction size, "
 9804|       |      //           "use inst.n/inst.w instead");
 9805|     90|      return false;
 9806|    137|    }
 9807|    506|  } else {
 9808|    506|    if (Suffix) {
  ------------------
  |  Branch (9808:9): [True: 104, False: 402]
  ------------------
 9809|    104|      Parser.eatToEndOfStatement();
 9810|       |      //Error(Loc, "width suffixes are invalid in ARM mode");
 9811|    104|      return false;
 9812|    104|    }
 9813|    402|    Width = 4;
 9814|    402|  }
 9815|       |
 9816|    449|  if (getLexer().is(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (9816:7): [True: 33, False: 416]
  ------------------
 9817|     33|    Parser.eatToEndOfStatement();
 9818|       |    //Error(Loc, "expected expression following directive");
 9819|     33|    return false;
 9820|     33|  }
 9821|       |
 9822|    454|  for (;;) {
 9823|    454|    const MCExpr *Expr;
 9824|       |
 9825|    454|    if (getParser().parseExpression(Expr)) {
  ------------------
  |  Branch (9825:9): [True: 26, False: 428]
  ------------------
 9826|       |      //Error(Loc, "expected expression");
 9827|     26|      return false;
 9828|     26|    }
 9829|       |
 9830|    428|    const MCConstantExpr *Value = dyn_cast_or_null<MCConstantExpr>(Expr);
 9831|    428|    if (!Value) {
  ------------------
  |  Branch (9831:9): [True: 249, False: 179]
  ------------------
 9832|       |      //Error(Loc, "expected constant expression");
 9833|    249|      return false;
 9834|    249|    }
 9835|       |
 9836|    179|    switch (Width) {
 9837|     36|    case 2:
  ------------------
  |  Branch (9837:5): [True: 36, False: 143]
  ------------------
 9838|     36|      if (Value->getValue() > 0xffff) {
  ------------------
  |  Branch (9838:11): [True: 15, False: 21]
  ------------------
 9839|       |        //Error(Loc, "inst.n operand is too big, use inst.w instead");
 9840|     15|        return false;
 9841|     15|      }
 9842|     21|      break;
 9843|    143|    case 4:
  ------------------
  |  Branch (9843:5): [True: 143, False: 36]
  ------------------
 9844|    143|      if (Value->getValue() > 0xffffffff) {
  ------------------
  |  Branch (9844:11): [True: 3, False: 140]
  ------------------
 9845|       |        //Error(Loc,
 9846|       |        //      StringRef(Suffix ? "inst.w" : "inst") + " operand is too big");
 9847|      3|        return false;
 9848|      3|      }
 9849|    140|      break;
 9850|    140|    default:
  ------------------
  |  Branch (9850:5): [True: 0, False: 179]
  ------------------
 9851|      0|      llvm_unreachable("only supported widths are 2 and 4");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 9852|    179|    }
 9853|       |
 9854|    161|    getTargetStreamer().emitInst(Value->getValue(), Suffix);
 9855|       |
 9856|    161|    if (getLexer().is(AsmToken::EndOfStatement))
  ------------------
  |  Branch (9856:9): [True: 50, False: 111]
  ------------------
 9857|     50|      break;
 9858|       |
 9859|    111|    if (getLexer().isNot(AsmToken::Comma)) {
  ------------------
  |  Branch (9859:9): [True: 73, False: 38]
  ------------------
 9860|       |      //Error(Loc, "unexpected token in directive");
 9861|     73|      return false;
 9862|     73|    }
 9863|       |
 9864|     38|    Parser.Lex();
 9865|     38|  }
 9866|       |
 9867|     50|  Parser.Lex();
 9868|     50|  return false;
 9869|    416|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser24parseDirectiveObjectArchEN7llvm_ks5SMLocE:
10132|     25|bool ARMAsmParser::parseDirectiveObjectArch(SMLoc L) {
10133|     25|  MCAsmParser &Parser = getParser();
10134|     25|  if (getLexer().isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (10134:7): [True: 3, False: 22]
  ------------------
10135|       |    //Error(getLexer().getLoc(), "unexpected token");
10136|      3|    Parser.eatToEndOfStatement();
10137|      3|    return false;
10138|      3|  }
10139|       |
10140|     22|  StringRef Arch = Parser.getTok().getString();
10141|       |  //SMLoc ArchLoc = Parser.getTok().getLoc();
10142|     22|  getLexer().Lex();
10143|       |
10144|     22|  unsigned ID = ARM::parseArch(Arch);
10145|       |
10146|     22|  if (ID == ARM::AK_INVALID) {
  ------------------
  |  Branch (10146:7): [True: 10, False: 12]
  ------------------
10147|       |    //Error(ArchLoc, "unknown architecture '" + Arch + "'");
10148|     10|    Parser.eatToEndOfStatement();
10149|     10|    return false;
10150|     10|  }
10151|       |
10152|     12|  getTargetStreamer().emitObjectArch(ID);
10153|       |
10154|     12|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (10154:7): [True: 6, False: 6]
  ------------------
10155|       |    //Error(getLexer().getLoc(), "unexpected token");
10156|      6|    Parser.eatToEndOfStatement();
10157|      6|  }
10158|       |
10159|     12|  return false;
10160|     22|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser24parseDirectiveTLSDescSeqEN7llvm_ks5SMLocE:
10042|     78|{
10043|     78|  MCAsmParser &Parser = getParser();
10044|       |
10045|     78|  if (getLexer().isNot(AsmToken::Identifier)) {
  ------------------
  |  Branch (10045:7): [True: 20, False: 58]
  ------------------
10046|       |    //TokError("expected variable after '.tlsdescseq' directive");
10047|     20|    Parser.eatToEndOfStatement();
10048|     20|    return false;
10049|     20|  }
10050|       |
10051|     58|  const MCSymbolRefExpr *SRE =
10052|     58|    MCSymbolRefExpr::create(Parser.getTok().getIdentifier(),
10053|     58|                            MCSymbolRefExpr::VK_ARM_TLSDESCSEQ, getContext());
10054|     58|  Lex();
10055|       |
10056|     58|  if (getLexer().isNot(AsmToken::EndOfStatement)) {
  ------------------
  |  Branch (10056:7): [True: 26, False: 32]
  ------------------
10057|       |    //Error(Parser.getTok().getLoc(), "unexpected token");
10058|     26|    Parser.eatToEndOfStatement();
10059|     26|    return false;
10060|     26|  }
10061|       |
10062|     32|  getTargetStreamer().AnnotateTLSDescriptorSequence(SRE);
10063|     32|  return false;
10064|     58|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser23MatchAndEmitInstructionEN7llvm_ks5SMLocERjRNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS5_14default_deleteIS7_EEEEEERNS1_10MCStreamerERmbS3_SF_:
 8846|  35.6k|{
 8847|  35.6k|  MCInst Inst(Address);
 8848|  35.6k|  unsigned MatchResult;
 8849|       |
 8850|  35.6k|  MatchResult = MatchInstructionImpl(Operands, Inst, ErrorInfo,
 8851|  35.6k|                                     MatchingInlineAsm);
 8852|  35.6k|  switch (MatchResult) {
  ------------------
  |  Branch (8852:11): [True: 35.6k, False: 0]
  ------------------
 8853|  29.8k|  case Match_Success:
  ------------------
  |  Branch (8853:3): [True: 29.8k, False: 5.86k]
  ------------------
 8854|       |    // Context sensitive operand constraints aren't handled by the matcher,
 8855|       |    // so check them here.
 8856|  29.8k|    if (validateInstruction(Inst, Operands)) {
  ------------------
  |  Branch (8856:9): [True: 157, False: 29.6k]
  ------------------
 8857|       |      // Still progress the IT block, otherwise one wrong condition causes
 8858|       |      // nasty cascading errors.
 8859|    157|      forwardITPosition();
 8860|    157|      return true;
 8861|    157|    }
 8862|       |
 8863|  29.6k|    { // processInstruction() updates inITBlock state, we need to save it away
 8864|  29.6k|      bool wasInITBlock = inITBlock();
 8865|       |
 8866|       |      // Some instructions need post-processing to, for example, tweak which
 8867|       |      // encoding is selected. Loop on it while changes happen so the
 8868|       |      // individual transformations can chain off each other. E.g.,
 8869|       |      // tPOP(r8)->t2LDMIA_UPD(sp,r8)->t2STR_POST(sp,r8)
 8870|  30.9k|      while (processInstruction(Inst, Operands, Out))
  ------------------
  |  Branch (8870:14): [True: 1.33k, False: 29.6k]
  ------------------
 8871|  1.33k|        ;
 8872|       |
 8873|       |      // Only after the instruction is fully processed, we can validate it
 8874|  29.6k|      if (wasInITBlock && hasV8Ops() && isThumb() &&
  ------------------
  |  Branch (8874:11): [True: 499, False: 29.1k]
  |  Branch (8874:27): [True: 61, False: 438]
  |  Branch (8874:41): [True: 14, False: 47]
  ------------------
 8875|     14|          !isV8EligibleForIT(&Inst)) {
  ------------------
  |  Branch (8875:11): [True: 14, False: 0]
  ------------------
 8876|     14|        Warning(IDLoc, "deprecated instruction in IT block");
 8877|     14|      }
 8878|  29.6k|    }
 8879|       |
 8880|       |    // Only move forward at the very end so that everything in validate
 8881|       |    // and process gets a consistent answer about whether we're in an IT
 8882|       |    // block.
 8883|  29.6k|    forwardITPosition();
 8884|       |
 8885|       |    // ITasm is an ARM mode pseudo-instruction that just sets the ITblock and
 8886|       |    // doesn't actually encode.
 8887|  29.6k|    if (Inst.getOpcode() == ARM::ITasm)
  ------------------
  |  Branch (8887:9): [True: 330, False: 29.3k]
  ------------------
 8888|    330|      return false;
 8889|       |
 8890|  29.3k|    Inst.setLoc(IDLoc);
 8891|  29.3k|    Out.EmitInstruction(Inst, getSTI(), ErrorCode);
 8892|  29.3k|    if (ErrorCode == 0) {
  ------------------
  |  Branch (8892:9): [True: 29.2k, False: 15]
  ------------------
 8893|  29.2k|        Address = Inst.getAddress(); // Keystone update address
 8894|  29.2k|        return false;
 8895|  29.2k|    } else
 8896|     15|        return true;
 8897|    236|  case Match_MissingFeature: {
  ------------------
  |  Branch (8897:3): [True: 236, False: 35.4k]
  ------------------
 8898|    236|    ErrorCode = KS_ERR_ASM_ARM_MISSINGFEATURE;
 8899|    236|    return true;
 8900|  29.3k|  }
 8901|  2.84k|  case Match_InvalidOperand: {
  ------------------
  |  Branch (8901:3): [True: 2.84k, False: 32.8k]
  ------------------
 8902|       |#if 0
 8903|       |    SMLoc ErrorLoc = IDLoc;
 8904|       |    if (ErrorInfo != ~0ULL) {
 8905|       |      if (ErrorInfo >= Operands.size())
 8906|       |        return Error(IDLoc, "too few operands for instruction");
 8907|       |
 8908|       |      ErrorLoc = ((ARMOperand &)*Operands[ErrorInfo]).getStartLoc();
 8909|       |      if (ErrorLoc == SMLoc()) ErrorLoc = IDLoc;
 8910|       |    }
 8911|       |#endif
 8912|       |
 8913|       |    // return Error(ErrorLoc, "invalid operand for instruction");
 8914|  2.84k|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8915|  2.84k|    return true;
 8916|  29.3k|  }
 8917|  2.66k|  case Match_MnemonicFail:
  ------------------
  |  Branch (8917:3): [True: 2.66k, False: 33.0k]
  ------------------
 8918|       |    //return Error(IDLoc, "invalid instruction",
 8919|       |    //             ((ARMOperand &)*Operands[0]).getLocRange());
 8920|  2.66k|    ErrorCode = KS_ERR_ASM_ARM_MNEMONICFAIL;
 8921|  2.66k|    return true;
 8922|      0|  case Match_RequiresNotITBlock:
  ------------------
  |  Branch (8922:3): [True: 0, False: 35.6k]
  ------------------
 8923|       |    //return Error(IDLoc, "flag setting instruction only valid outside IT block");
 8924|      0|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8925|      0|    return true;
 8926|      1|  case Match_RequiresITBlock:
  ------------------
  |  Branch (8926:3): [True: 1, False: 35.6k]
  ------------------
 8927|       |    //return Error(IDLoc, "instruction only valid inside IT block");
 8928|      1|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8929|      1|    return true;
 8930|      1|  case Match_RequiresV6:
  ------------------
  |  Branch (8930:3): [True: 1, False: 35.6k]
  ------------------
 8931|       |    //return Error(IDLoc, "instruction variant requires ARMv6 or later");
 8932|      1|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8933|      1|    return true;
 8934|      1|  case Match_RequiresThumb2:
  ------------------
  |  Branch (8934:3): [True: 1, False: 35.6k]
  ------------------
 8935|       |    //return Error(IDLoc, "instruction variant requires Thumb2");
 8936|      1|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8937|      1|    return true;
 8938|      1|  case Match_RequiresV8:
  ------------------
  |  Branch (8938:3): [True: 1, False: 35.6k]
  ------------------
 8939|       |    //return Error(IDLoc, "instruction variant requires ARMv8 or later");
 8940|      1|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8941|      1|    return true;
 8942|     31|  case Match_ImmRange0_15: {
  ------------------
  |  Branch (8942:3): [True: 31, False: 35.6k]
  ------------------
 8943|     31|    SMLoc ErrorLoc = ((ARMOperand &)*Operands[ErrorInfo]).getStartLoc();
 8944|     31|    if (ErrorLoc == SMLoc()) ErrorLoc = IDLoc;
  ------------------
  |  Branch (8944:9): [True: 0, False: 31]
  ------------------
 8945|       |    // return Error(ErrorLoc, "immediate operand must be in the range [0,15]");
 8946|     31|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8947|     31|    return true;
 8948|  29.3k|  }
 8949|     93|  case Match_ImmRange0_239: {
  ------------------
  |  Branch (8949:3): [True: 93, False: 35.5k]
  ------------------
 8950|     93|    SMLoc ErrorLoc = ((ARMOperand &)*Operands[ErrorInfo]).getStartLoc();
 8951|     93|    if (ErrorLoc == SMLoc()) ErrorLoc = IDLoc;
  ------------------
  |  Branch (8951:9): [True: 0, False: 93]
  ------------------
 8952|       |    // return Error(ErrorLoc, "immediate operand must be in the range [0,239]");
 8953|     93|    ErrorCode = KS_ERR_ASM_ARM_INVALIDOPERAND;
 8954|     93|    return true;
 8955|  29.3k|  }
 8956|      0|  case Match_AlignedMemoryRequiresNone:
  ------------------
  |  Branch (8956:3): [True: 0, False: 35.6k]
  ------------------
 8957|      0|  case Match_DupAlignedMemoryRequiresNone:
  ------------------
  |  Branch (8957:3): [True: 0, False: 35.6k]
  ------------------
 8958|      0|  case Match_AlignedMemoryRequires16:
  ------------------
  |  Branch (8958:3): [True: 0, False: 35.6k]
  ------------------
 8959|      0|  case Match_DupAlignedMemoryRequires16:
  ------------------
  |  Branch (8959:3): [True: 0, False: 35.6k]
  ------------------
 8960|      0|  case Match_AlignedMemoryRequires32:
  ------------------
  |  Branch (8960:3): [True: 0, False: 35.6k]
  ------------------
 8961|      0|  case Match_DupAlignedMemoryRequires32:
  ------------------
  |  Branch (8961:3): [True: 0, False: 35.6k]
  ------------------
 8962|      0|  case Match_AlignedMemoryRequires64:
  ------------------
  |  Branch (8962:3): [True: 0, False: 35.6k]
  ------------------
 8963|      0|  case Match_DupAlignedMemoryRequires64:
  ------------------
  |  Branch (8963:3): [True: 0, False: 35.6k]
  ------------------
 8964|      0|  case Match_AlignedMemoryRequires64or128:
  ------------------
  |  Branch (8964:3): [True: 0, False: 35.6k]
  ------------------
 8965|      0|  case Match_DupAlignedMemoryRequires64or128:
  ------------------
  |  Branch (8965:3): [True: 0, False: 35.6k]
  ------------------
 8966|      0|  case Match_AlignedMemoryRequires64or128or256:
  ------------------
  |  Branch (8966:3): [True: 0, False: 35.6k]
  ------------------
 8967|      0|  {
 8968|      0|    SMLoc ErrorLoc = ((ARMOperand &)*Operands[ErrorInfo]).getAlignmentLoc();
 8969|      0|    if (ErrorLoc == SMLoc()) ErrorLoc = IDLoc;
  ------------------
  |  Branch (8969:9): [True: 0, False: 0]
  ------------------
 8970|      0|    switch (MatchResult) {
 8971|      0|      default:
  ------------------
  |  Branch (8971:7): [True: 0, False: 0]
  ------------------
 8972|      0|        llvm_unreachable("Missing Match_Aligned type");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 8973|      0|      case Match_AlignedMemoryRequiresNone:
  ------------------
  |  Branch (8973:7): [True: 0, False: 0]
  ------------------
 8974|      0|      case Match_DupAlignedMemoryRequiresNone:
  ------------------
  |  Branch (8974:7): [True: 0, False: 0]
  ------------------
 8975|       |        //return Error(ErrorLoc, "alignment must be omitted");
 8976|      0|        return true;
 8977|      0|      case Match_AlignedMemoryRequires16:
  ------------------
  |  Branch (8977:7): [True: 0, False: 0]
  ------------------
 8978|      0|      case Match_DupAlignedMemoryRequires16:
  ------------------
  |  Branch (8978:7): [True: 0, False: 0]
  ------------------
 8979|       |        //return Error(ErrorLoc, "alignment must be 16 or omitted");
 8980|      0|        return true;
 8981|      0|      case Match_AlignedMemoryRequires32:
  ------------------
  |  Branch (8981:7): [True: 0, False: 0]
  ------------------
 8982|      0|      case Match_DupAlignedMemoryRequires32:
  ------------------
  |  Branch (8982:7): [True: 0, False: 0]
  ------------------
 8983|       |        //return Error(ErrorLoc, "alignment must be 32 or omitted");
 8984|      0|        return true;
 8985|      0|      case Match_AlignedMemoryRequires64:
  ------------------
  |  Branch (8985:7): [True: 0, False: 0]
  ------------------
 8986|      0|      case Match_DupAlignedMemoryRequires64:
  ------------------
  |  Branch (8986:7): [True: 0, False: 0]
  ------------------
 8987|       |        //return Error(ErrorLoc, "alignment must be 64 or omitted");
 8988|      0|        return true;
 8989|      0|      case Match_AlignedMemoryRequires64or128:
  ------------------
  |  Branch (8989:7): [True: 0, False: 0]
  ------------------
 8990|      0|      case Match_DupAlignedMemoryRequires64or128:
  ------------------
  |  Branch (8990:7): [True: 0, False: 0]
  ------------------
 8991|       |        //return Error(ErrorLoc, "alignment must be 64, 128 or omitted");
 8992|      0|        return true;
 8993|      0|      case Match_AlignedMemoryRequires64or128or256:
  ------------------
  |  Branch (8993:7): [True: 0, False: 0]
  ------------------
 8994|       |        //return Error(ErrorLoc, "alignment must be 64, 128, 256 or omitted");
 8995|      0|        return true;
 8996|      0|    }
 8997|      0|  }
 8998|  35.6k|  }
 8999|       |
 9000|      0|  llvm_unreachable("Implement any new match types added!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 9001|  35.6k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isAM2OffsetImmEv:
 1163|    637|  bool isAM2OffsetImm() const {
 1164|    637|    if (!isImm()) return false;
  ------------------
  |  Branch (1164:9): [True: 38, False: 599]
  ------------------
 1165|       |    // Immediate offset in range [-4095, 4095].
 1166|    599|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1167|    599|    if (!CE) return false;
  ------------------
  |  Branch (1167:9): [True: 5, False: 594]
  ------------------
 1168|    594|    int64_t Val = CE->getValue();
 1169|    594|    return (Val == INT32_MIN) || (Val > -4096 && Val < 4096);
  ------------------
  |  Branch (1169:12): [True: 0, False: 594]
  |  Branch (1169:35): [True: 594, False: 0]
  |  Branch (1169:50): [True: 589, False: 5]
  ------------------
 1170|    599|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isAM3OffsetEv:
 1189|     61|  bool isAM3Offset() const {
 1190|     61|    if (Kind != k_Immediate && Kind != k_PostIndexRegister)
  ------------------
  |  Branch (1190:9): [True: 10, False: 51]
  |  Branch (1190:32): [True: 2, False: 8]
  ------------------
 1191|      2|      return false;
 1192|     59|    if (Kind == k_PostIndexRegister)
  ------------------
  |  Branch (1192:9): [True: 8, False: 51]
  ------------------
 1193|      8|      return PostIdxReg.ShiftTy == ARM_AM::no_shift;
 1194|       |    // Immediate offset in range [-255, 255].
 1195|     51|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1196|     51|    if (!CE) return false;
  ------------------
  |  Branch (1196:9): [True: 1, False: 50]
  ------------------
 1197|     50|    int64_t Val = CE->getValue();
 1198|       |    // Special case, #-0 is INT32_MIN.
 1199|     50|    return (Val > -256 && Val < 256) || Val == INT32_MIN;
  ------------------
  |  Branch (1199:13): [True: 50, False: 0]
  |  Branch (1199:27): [True: 48, False: 2]
  |  Branch (1199:41): [True: 0, False: 2]
  ------------------
 1200|     51|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isAddrMode3Ev:
 1171|  1.11k|  bool isAddrMode3() const {
 1172|       |    // If we have an immediate that's not a constant, treat it as a label
 1173|       |    // reference needing a fixup. If it is a constant, it's something else
 1174|       |    // and we reject it.
 1175|  1.11k|    if (isImm() && !isa<MCConstantExpr>(getImm()))
  ------------------
  |  Branch (1175:9): [True: 944, False: 174]
  |  Branch (1175:9): [True: 940, False: 178]
  |  Branch (1175:20): [True: 940, False: 4]
  ------------------
 1176|    940|      return true;
 1177|    178|    if (!isMem() || Memory.Alignment != 0) return false;
  ------------------
  |  Branch (1177:9): [True: 12, False: 166]
  |  Branch (1177:21): [True: 0, False: 166]
  ------------------
 1178|       |    // No shifts are legal for AM3.
 1179|    166|    if (Memory.ShiftType != ARM_AM::no_shift) return false;
  ------------------
  |  Branch (1179:9): [True: 0, False: 166]
  ------------------
 1180|       |    // Check for register offset.
 1181|    166|    if (Memory.OffsetRegNum) return true;
  ------------------
  |  Branch (1181:9): [True: 21, False: 145]
  ------------------
 1182|       |    // Immediate offset in range [-255, 255].
 1183|    145|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1183:9): [True: 131, False: 14]
  ------------------
 1184|     14|    int64_t Val = Memory.OffsetImm->getValue();
 1185|       |    // The #-0 offset is encoded as INT32_MIN, and we have to check 
 1186|       |    // for this too.
 1187|     14|    return (Val > -256 && Val < 256) || Val == INT32_MIN;
  ------------------
  |  Branch (1187:13): [True: 14, False: 0]
  |  Branch (1187:27): [True: 12, False: 2]
  |  Branch (1187:41): [True: 0, False: 2]
  ------------------
 1188|    145|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isAddrMode5Ev:
 1201|    638|  bool isAddrMode5() const {
 1202|       |    // If we have an immediate that's not a constant, treat it as a label
 1203|       |    // reference needing a fixup. If it is a constant, it's something else
 1204|       |    // and we reject it.
 1205|    638|    if (isImm() && !isa<MCConstantExpr>(getImm()))
  ------------------
  |  Branch (1205:9): [True: 622, False: 16]
  |  Branch (1205:9): [True: 614, False: 24]
  |  Branch (1205:20): [True: 614, False: 8]
  ------------------
 1206|    614|      return true;
 1207|     24|    if (!isMem() || Memory.Alignment != 0) return false;
  ------------------
  |  Branch (1207:9): [True: 19, False: 5]
  |  Branch (1207:21): [True: 0, False: 5]
  ------------------
 1208|       |    // Check for register offset.
 1209|      5|    if (Memory.OffsetRegNum) return false;
  ------------------
  |  Branch (1209:9): [True: 1, False: 4]
  ------------------
 1210|       |    // Immediate offset in range [-1020, 1020] and a multiple of 4.
 1211|      4|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1211:9): [True: 1, False: 3]
  ------------------
 1212|      3|    int64_t Val = Memory.OffsetImm->getValue();
 1213|      3|    return (Val >= -1020 && Val <= 1020 && ((Val & 3) == 0)) ||
  ------------------
  |  Branch (1213:13): [True: 3, False: 0]
  |  Branch (1213:29): [True: 2, False: 1]
  |  Branch (1213:44): [True: 1, False: 1]
  ------------------
 1214|      2|      Val == INT32_MIN;
  ------------------
  |  Branch (1214:7): [True: 0, False: 2]
  ------------------
 1215|      4|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isAdrLabelEv:
  996|  2.02k|  bool isAdrLabel() const {
  997|       |    // If we have an immediate that's not a constant, treat it as a label
  998|       |    // reference needing a fixup.
  999|  2.02k|    if (isImm() && !isa<MCConstantExpr>(getImm()))
  ------------------
  |  Branch (999:9): [True: 2.02k, False: 2]
  |  Branch (999:9): [True: 1.72k, False: 300]
  |  Branch (999:20): [True: 1.72k, False: 298]
  ------------------
 1000|  1.72k|      return true;
 1001|       |
 1002|       |    // If it is a constant, it must fit into a modified immediate encoding.
 1003|    300|    if (!isImm()) return false;
  ------------------
  |  Branch (1003:9): [True: 2, False: 298]
  ------------------
 1004|    298|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1005|    298|    if (!CE) return false;
  ------------------
  |  Branch (1005:9): [True: 0, False: 298]
  ------------------
 1006|    298|    int64_t Value = CE->getValue();
 1007|    298|    return (ARM_AM::getSOImmVal(Value) != -1 ||
  ------------------
  |  Branch (1007:13): [True: 115, False: 183]
  ------------------
 1008|    183|            ARM_AM::getSOImmVal(-Value) != -1);
  ------------------
  |  Branch (1008:13): [True: 85, False: 98]
  ------------------
 1009|    298|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isBankedRegEv:
 1393|    339|  bool isBankedReg() const { return Kind == k_BankedReg; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isBitfieldEv:
 1069|      8|  bool isBitfield() const { return Kind == k_BitfieldDescriptor; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand7isCCOutEv:
  662|  75.0k|  bool isCCOut() const { return Kind == k_CCOut; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isCondCodeEv:
  661|   205k|  bool isCondCode() const { return Kind == k_CondCode; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isCoprocNumEv:
  658|    788|  bool isCoprocNum() const { return Kind == k_CoprocNum; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isCoprocRegEv:
  659|    499|  bool isCoprocReg() const { return Kind == k_CoprocReg; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand7isFPImmEv:
  732|    234|  bool isFPImm() const {
  733|    234|    if (!isImm()) return false;
  ------------------
  |  Branch (733:9): [True: 19, False: 215]
  ------------------
  734|    215|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  735|    215|    if (!CE) return false;
  ------------------
  |  Branch (735:9): [True: 2, False: 213]
  ------------------
  736|    213|    int Val = ARM_AM::getFP32Imm(APInt(32, CE->getValue()));
  737|    213|    return Val != -1;
  738|    215|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isImm0_15Ev:
  831|    357|  bool isImm0_15() const {
  832|    357|    if (!isImm()) return false;
  ------------------
  |  Branch (832:9): [True: 5, False: 352]
  ------------------
  833|    352|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  834|    352|    if (!CE) return false;
  ------------------
  |  Branch (834:9): [True: 3, False: 349]
  ------------------
  835|    349|    int64_t Value = CE->getValue();
  836|    349|    return Value >= 0 && Value < 16;
  ------------------
  |  Branch (836:12): [True: 290, False: 59]
  |  Branch (836:26): [True: 169, False: 121]
  ------------------
  837|    352|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8isImm0_1Ev:
  810|     88|  bool isImm0_1() const {
  811|     88|    if (!isImm()) return false;
  ------------------
  |  Branch (811:9): [True: 2, False: 86]
  ------------------
  812|     86|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  813|     86|    if (!CE) return false;
  ------------------
  |  Branch (813:9): [True: 2, False: 84]
  ------------------
  814|     84|    int64_t Value = CE->getValue();
  815|     84|    return Value >= 0 && Value < 2;
  ------------------
  |  Branch (815:12): [True: 48, False: 36]
  |  Branch (815:26): [True: 2, False: 46]
  ------------------
  816|     86|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isImm0_239Ev:
  782|    241|  bool isImm0_239() const {
  783|    241|    if (!isImm()) return false;
  ------------------
  |  Branch (783:9): [True: 2, False: 239]
  ------------------
  784|    239|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  785|    239|    if (!CE) return false;
  ------------------
  |  Branch (785:9): [True: 2, False: 237]
  ------------------
  786|    237|    int64_t Value = CE->getValue();
  787|    237|    return Value >= 0 && Value < 240;
  ------------------
  |  Branch (787:12): [True: 135, False: 102]
  |  Branch (787:26): [True: 55, False: 80]
  ------------------
  788|    239|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isImm0_255Ev:
  789|  3.30k|  bool isImm0_255() const {
  790|  3.30k|    if (!isImm()) return false;
  ------------------
  |  Branch (790:9): [True: 2.33k, False: 965]
  ------------------
  791|    965|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  792|    965|    if (!CE) return false;
  ------------------
  |  Branch (792:9): [True: 311, False: 654]
  ------------------
  793|    654|    int64_t Value = CE->getValue();
  794|    654|    return Value >= 0 && Value < 256;
  ------------------
  |  Branch (794:12): [True: 341, False: 313]
  |  Branch (794:26): [True: 220, False: 121]
  ------------------
  795|    965|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isImm0_31Ev:
  838|  4.09k|  bool isImm0_31() const {
  839|  4.09k|    if (!isImm()) return false;
  ------------------
  |  Branch (839:9): [True: 1.85k, False: 2.23k]
  ------------------
  840|  2.23k|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  841|  2.23k|    if (!CE) return false;
  ------------------
  |  Branch (841:9): [True: 37, False: 2.19k]
  ------------------
  842|  2.19k|    int64_t Value = CE->getValue();
  843|  2.19k|    return Value >= 0 && Value < 32;
  ------------------
  |  Branch (843:12): [True: 2.11k, False: 82]
  |  Branch (843:26): [True: 2.01k, False: 99]
  ------------------
  844|  2.23k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isImm0_32Ev:
  936|    360|  bool isImm0_32() const {
  937|    360|    if (!isImm()) return false;
  ------------------
  |  Branch (937:9): [True: 218, False: 142]
  ------------------
  938|    142|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  939|    142|    if (!CE) return false;
  ------------------
  |  Branch (939:9): [True: 4, False: 138]
  ------------------
  940|    138|    int64_t Value = CE->getValue();
  941|    138|    return Value >= 0 && Value < 33;
  ------------------
  |  Branch (941:12): [True: 107, False: 31]
  |  Branch (941:26): [True: 67, False: 40]
  ------------------
  942|    142|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isImm0_63Ev:
  845|    130|  bool isImm0_63() const {
  846|    130|    if (!isImm()) return false;
  ------------------
  |  Branch (846:9): [True: 1, False: 129]
  ------------------
  847|    129|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  848|    129|    if (!CE) return false;
  ------------------
  |  Branch (848:9): [True: 1, False: 128]
  ------------------
  849|    128|    int64_t Value = CE->getValue();
  850|    128|    return Value >= 0 && Value < 64;
  ------------------
  |  Branch (850:12): [True: 74, False: 54]
  |  Branch (850:26): [True: 6, False: 68]
  ------------------
  851|    129|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isImm0_65535Ev:
  943|    179|  bool isImm0_65535() const {
  944|    179|    if (!isImm()) return false;
  ------------------
  |  Branch (944:9): [True: 3, False: 176]
  ------------------
  945|    176|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  946|    176|    if (!CE) return false;
  ------------------
  |  Branch (946:9): [True: 3, False: 173]
  ------------------
  947|    173|    int64_t Value = CE->getValue();
  948|    173|    return Value >= 0 && Value < 65536;
  ------------------
  |  Branch (948:12): [True: 111, False: 62]
  |  Branch (948:26): [True: 43, False: 68]
  ------------------
  949|    176|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isImm1_32Ev:
  929|     22|  bool isImm1_32() const {
  930|     22|    if (!isImm()) return false;
  ------------------
  |  Branch (930:9): [True: 6, False: 16]
  ------------------
  931|     16|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  932|     16|    if (!CE) return false;
  ------------------
  |  Branch (932:9): [True: 6, False: 10]
  ------------------
  933|     10|    int64_t Value = CE->getValue();
  934|     10|    return Value > 0 && Value < 33;
  ------------------
  |  Branch (934:12): [True: 6, False: 4]
  |  Branch (934:25): [True: 6, False: 0]
  ------------------
  935|     16|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isImm24bitEv:
  968|    112|  bool isImm24bit() const {
  969|    112|    if (!isImm()) return false;
  ------------------
  |  Branch (969:9): [True: 1, False: 111]
  ------------------
  970|    111|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  971|    111|    if (!CE) return false;
  ------------------
  |  Branch (971:9): [True: 4, False: 107]
  ------------------
  972|    107|    int64_t Value = CE->getValue();
  973|    107|    return Value >= 0 && Value <= 0xffffff;
  ------------------
  |  Branch (973:12): [True: 73, False: 34]
  |  Branch (973:26): [True: 32, False: 41]
  ------------------
  974|    111|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand18isImm256_65535ExprEv:
  950|    100|  bool isImm256_65535Expr() const {
  951|    100|    if (!isImm()) return false;
  ------------------
  |  Branch (951:9): [True: 38, False: 62]
  ------------------
  952|     62|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  953|       |    // If it's not a constant expression, it'll generate a fixup and be
  954|       |    // handled later.
  955|     62|    if (!CE) return true;
  ------------------
  |  Branch (955:9): [True: 4, False: 58]
  ------------------
  956|     58|    int64_t Value = CE->getValue();
  957|     58|    return Value >= 256 && Value < 65536;
  ------------------
  |  Branch (957:12): [True: 42, False: 16]
  |  Branch (957:28): [True: 36, False: 6]
  ------------------
  958|     62|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20isInstSyncBarrierOptEv:
 1047|    326|  bool isInstSyncBarrierOpt() const { return Kind == k_InstSyncBarrierOpt; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isMSRMaskEv:
 1392|    552|  bool isMSRMask() const { return Kind == k_MSRMask; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isMemBarrierOptEv:
 1046|  1.21k|  bool isMemBarrierOpt() const { return Kind == k_MemBarrierOpt; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22isMemImm0_1020s4OffsetEv:
 1318|      1|  bool isMemImm0_1020s4Offset() const {
 1319|      1|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1319:9): [True: 1, False: 0]
  |  Branch (1319:21): [True: 0, False: 0]
  |  Branch (1319:49): [True: 0, False: 0]
  ------------------
 1320|      1|      return false;
 1321|       |    // Immediate offset a multiple of 4 in range [0, 1020].
 1322|      0|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1322:9): [True: 0, False: 0]
  ------------------
 1323|      0|    int64_t Val = Memory.OffsetImm->getValue();
 1324|      0|    return Val >= 0 && Val <= 1020 && (Val & 3) == 0;
  ------------------
  |  Branch (1324:12): [True: 0, False: 0]
  |  Branch (1324:24): [True: 0, False: 0]
  |  Branch (1324:39): [True: 0, False: 0]
  ------------------
 1325|      0|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16isMemImm12OffsetEv:
 1362|  2.28k|  bool isMemImm12Offset() const {
 1363|       |    // If we have an immediate that's not a constant, treat it as a label
 1364|       |    // reference needing a fixup. If it is a constant, it's something else
 1365|       |    // and we reject it.
 1366|  2.28k|    if (isImm() && !isa<MCConstantExpr>(getImm()))
  ------------------
  |  Branch (1366:9): [True: 804, False: 1.48k]
  |  Branch (1366:9): [True: 791, False: 1.49k]
  |  Branch (1366:20): [True: 791, False: 13]
  ------------------
 1367|    791|      return true;
 1368|       |
 1369|  1.49k|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1369:9): [True: 126, False: 1.36k]
  |  Branch (1369:21): [True: 26, False: 1.34k]
  |  Branch (1369:49): [True: 0, False: 1.34k]
  ------------------
 1370|    152|      return false;
 1371|       |    // Immediate offset in range [-4095, 4095].
 1372|  1.34k|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1372:9): [True: 1.29k, False: 43]
  ------------------
 1373|     43|    int64_t Val = Memory.OffsetImm->getValue();
 1374|     43|    return (Val > -4096 && Val < 4096) || (Val == INT32_MIN);
  ------------------
  |  Branch (1374:13): [True: 43, False: 0]
  |  Branch (1374:28): [True: 41, False: 2]
  |  Branch (1374:43): [True: 0, False: 2]
  ------------------
 1375|  1.34k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isMemImm8OffsetEv:
 1326|    707|  bool isMemImm8Offset() const {
 1327|    707|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1327:9): [True: 19, False: 688]
  |  Branch (1327:21): [True: 6, False: 682]
  |  Branch (1327:49): [True: 0, False: 682]
  ------------------
 1328|     25|      return false;
 1329|       |    // Base reg of PC isn't allowed for these encodings.
 1330|    682|    if (Memory.BaseRegNum == ARM::PC) return false;
  ------------------
  |  Branch (1330:9): [True: 12, False: 670]
  ------------------
 1331|       |    // Immediate offset in range [-255, 255].
 1332|    670|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1332:9): [True: 667, False: 3]
  ------------------
 1333|      3|    int64_t Val = Memory.OffsetImm->getValue();
 1334|      3|    return (Val == INT32_MIN) || (Val > -256 && Val < 256);
  ------------------
  |  Branch (1334:12): [True: 0, False: 3]
  |  Branch (1334:35): [True: 3, False: 0]
  |  Branch (1334:49): [True: 1, False: 2]
  ------------------
 1335|    670|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isMemImm8s4OffsetEv:
 1304|    112|  bool isMemImm8s4Offset() const {
 1305|       |    // If we have an immediate that's not a constant, treat it as a label
 1306|       |    // reference needing a fixup. If it is a constant, it's something else
 1307|       |    // and we reject it.
 1308|    112|    if (isImm() && !isa<MCConstantExpr>(getImm()))
  ------------------
  |  Branch (1308:9): [True: 57, False: 55]
  |  Branch (1308:9): [True: 55, False: 57]
  |  Branch (1308:20): [True: 55, False: 2]
  ------------------
 1309|     55|      return true;
 1310|     57|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1310:9): [True: 10, False: 47]
  |  Branch (1310:21): [True: 3, False: 44]
  |  Branch (1310:49): [True: 0, False: 44]
  ------------------
 1311|     13|      return false;
 1312|       |    // Immediate offset a multiple of 4 in range [-1020, 1020].
 1313|     44|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1313:9): [True: 40, False: 4]
  ------------------
 1314|      4|    int64_t Val = Memory.OffsetImm->getValue();
 1315|       |    // Special case, #-0 is INT32_MIN.
 1316|      4|    return (Val >= -1020 && Val <= 1020 && (Val & 3) == 0) || Val == INT32_MIN;
  ------------------
  |  Branch (1316:13): [True: 4, False: 0]
  |  Branch (1316:29): [True: 4, False: 0]
  |  Branch (1316:44): [True: 1, False: 3]
  |  Branch (1316:63): [True: 0, False: 3]
  ------------------
 1317|     44|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand18isMemNegImm8OffsetEv:
 1344|  1.67k|  bool isMemNegImm8Offset() const {
 1345|  1.67k|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1345:9): [True: 915, False: 758]
  |  Branch (1345:21): [True: 35, False: 723]
  |  Branch (1345:49): [True: 0, False: 723]
  ------------------
 1346|    950|      return false;
 1347|       |    // Base reg of PC isn't allowed for these encodings.
 1348|    723|    if (Memory.BaseRegNum == ARM::PC) return false;
  ------------------
  |  Branch (1348:9): [True: 13, False: 710]
  ------------------
 1349|       |    // Immediate offset in range [-255, -1].
 1350|    710|    if (!Memory.OffsetImm) return false;
  ------------------
  |  Branch (1350:9): [True: 681, False: 29]
  ------------------
 1351|     29|    int64_t Val = Memory.OffsetImm->getValue();
 1352|     29|    return (Val == INT32_MIN) || (Val > -256 && Val < 0);
  ------------------
  |  Branch (1352:12): [True: 0, False: 29]
  |  Branch (1352:35): [True: 29, False: 0]
  |  Branch (1352:49): [True: 0, False: 29]
  ------------------
 1353|    710|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand13isMemNoOffsetEbj:
 1074|  1.00k|  bool isMemNoOffset(bool alignOK = false, unsigned Alignment = 0) const {
 1075|  1.00k|    if (!isMem())
  ------------------
  |  Branch (1075:9): [True: 105, False: 896]
  ------------------
 1076|    105|      return false;
 1077|       |    // No offset of any kind.
 1078|    896|    return Memory.OffsetRegNum == 0 && Memory.OffsetImm == nullptr &&
  ------------------
  |  Branch (1078:12): [True: 871, False: 25]
  |  Branch (1078:40): [True: 858, False: 13]
  ------------------
 1079|    858|     (alignOK || Memory.Alignment == Alignment);
  ------------------
  |  Branch (1079:7): [True: 0, False: 858]
  |  Branch (1079:18): [True: 858, False: 0]
  ------------------
 1080|  1.00k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand18isMemPosImm8OffsetEv:
 1336|     38|  bool isMemPosImm8Offset() const {
 1337|     38|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1337:9): [True: 1, False: 37]
  |  Branch (1337:21): [True: 1, False: 36]
  |  Branch (1337:49): [True: 0, False: 36]
  ------------------
 1338|      2|      return false;
 1339|       |    // Immediate offset in range [0, 255].
 1340|     36|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1340:9): [True: 18, False: 18]
  ------------------
 1341|     18|    int64_t Val = Memory.OffsetImm->getValue();
 1342|     18|    return Val >= 0 && Val < 256;
  ------------------
  |  Branch (1342:12): [True: 17, False: 1]
  |  Branch (1342:24): [True: 16, False: 1]
  ------------------
 1343|     36|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isMemRegOffsetEv:
 1243|    827|  bool isMemRegOffset() const {
 1244|    827|    if (!isMem() || !Memory.OffsetRegNum || Memory.Alignment != 0)
  ------------------
  |  Branch (1244:9): [True: 128, False: 699]
  |  Branch (1244:21): [True: 673, False: 26]
  |  Branch (1244:45): [True: 0, False: 26]
  ------------------
 1245|    801|      return false;
 1246|     26|    return true;
 1247|    827|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isModImmNegEv:
 1061|  2.01k|  bool isModImmNeg() const {
 1062|  2.01k|    if (!isImm()) return false;
  ------------------
  |  Branch (1062:9): [True: 1.41k, False: 594]
  ------------------
 1063|    594|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1064|    594|    if (!CE) return false;
  ------------------
  |  Branch (1064:9): [True: 88, False: 506]
  ------------------
 1065|    506|    int64_t Value = CE->getValue();
 1066|    506|    return ARM_AM::getSOImmVal(Value) == -1 &&
  ------------------
  |  Branch (1066:12): [True: 485, False: 21]
  ------------------
 1067|    485|      ARM_AM::getSOImmVal(-Value) != -1;
  ------------------
  |  Branch (1067:7): [True: 348, False: 137]
  ------------------
 1068|    594|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isModImmNotEv:
 1054|    910|  bool isModImmNot() const {
 1055|    910|    if (!isImm()) return false;
  ------------------
  |  Branch (1055:9): [True: 607, False: 303]
  ------------------
 1056|    303|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1057|    303|    if (!CE) return false;
  ------------------
  |  Branch (1057:9): [True: 11, False: 292]
  ------------------
 1058|    292|    int64_t Value = CE->getValue();
 1059|    292|    return ARM_AM::getSOImmVal(~Value) != -1;
 1060|    303|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand19isPostIdxRegShiftedEv:
 1070|     48|  bool isPostIdxRegShifted() const { return Kind == k_PostIndexRegister; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isProcIFlagsEv:
 1394|    124|  bool isProcIFlags() const { return Kind == k_ProcIFlags; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8isRotImmEv:
 1052|      3|  bool isRotImm() const { return Kind == k_RotateImmediate; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isSetEndImmEv:
 1034|     56|  bool isSetEndImm() const {
 1035|     56|    if (!isImm()) return false;
  ------------------
  |  Branch (1035:9): [True: 0, False: 56]
  ------------------
 1036|     56|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1037|     56|    if (!CE) return false;
  ------------------
  |  Branch (1037:9): [True: 2, False: 54]
  ------------------
 1038|     54|    int64_t Value = CE->getValue();
 1039|     54|    return Value == 1 || Value == 0;
  ------------------
  |  Branch (1039:12): [True: 47, False: 7]
  |  Branch (1039:26): [True: 5, False: 2]
  ------------------
 1040|     56|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isRegShiftedImmEv:
 1051|  8.10k|  bool isRegShiftedImm() const { return Kind == k_ShiftedImmediate; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isRegShiftedRegEv:
 1050|  2.75k|  bool isRegShiftedReg() const { return Kind == k_ShiftedRegister; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isThumbMemPCEv:
  716|  1.29k|  bool isThumbMemPC() const {
  717|  1.29k|    int64_t Val = 0;
  718|  1.29k|    if (isImm()) {
  ------------------
  |  Branch (718:9): [True: 1.22k, False: 69]
  ------------------
  719|  1.22k|      if (isa<MCSymbolRefExpr>(Imm.Val)) return true;
  ------------------
  |  Branch (719:11): [True: 1.17k, False: 55]
  ------------------
  720|     55|      const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Imm.Val);
  721|     55|      if (!CE) return false;
  ------------------
  |  Branch (721:11): [True: 12, False: 43]
  ------------------
  722|     43|      Val = CE->getValue();
  723|     43|    }
  724|     69|    else if (isMem()) {
  ------------------
  |  Branch (724:14): [True: 65, False: 4]
  ------------------
  725|     65|      if(!Memory.OffsetImm || Memory.OffsetRegNum) return false;
  ------------------
  |  Branch (725:10): [True: 34, False: 31]
  |  Branch (725:31): [True: 0, False: 31]
  ------------------
  726|     31|      if(Memory.BaseRegNum != ARM::PC) return false;
  ------------------
  |  Branch (726:10): [True: 31, False: 0]
  ------------------
  727|      0|      Val = Memory.OffsetImm->getValue();
  728|      0|    }
  729|      4|    else return false;
  730|     43|    return ((Val % 4) == 0) && (Val >= 0) && (Val <= 1020);
  ------------------
  |  Branch (730:12): [True: 25, False: 18]
  |  Branch (730:32): [True: 19, False: 6]
  |  Branch (730:46): [True: 8, False: 11]
  ------------------
  731|  1.29k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isImmThumbSREv:
  975|  1.74k|  bool isImmThumbSR() const {
  976|  1.74k|    if (!isImm()) return false;
  ------------------
  |  Branch (976:9): [True: 1.36k, False: 382]
  ------------------
  977|    382|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  978|    382|    if (!CE) return false;
  ------------------
  |  Branch (978:9): [True: 6, False: 376]
  ------------------
  979|    376|    int64_t Value = CE->getValue();
  980|    376|    return Value > 0 && Value < 33;
  ------------------
  |  Branch (980:12): [True: 336, False: 40]
  |  Branch (980:25): [True: 259, False: 77]
  ------------------
  981|    382|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16isUnsignedOffsetILj8ELj2EEEbv:
  669|  2.10k|  bool isUnsignedOffset() const {
  670|  2.10k|    if (!isImm()) return false;
  ------------------
  |  Branch (670:9): [True: 2, False: 2.09k]
  ------------------
  671|  2.09k|    if (isa<MCSymbolRefExpr>(Imm.Val)) return true;
  ------------------
  |  Branch (671:9): [True: 76, False: 2.02k]
  ------------------
  672|  2.02k|    if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Imm.Val)) {
  ------------------
  |  Branch (672:31): [True: 310, False: 1.71k]
  ------------------
  673|    310|      int64_t Val = CE->getValue();
  674|    310|      int64_t Align = 1LL << scale;
  675|    310|      int64_t Max = Align * ((1LL << width) - 1);
  676|    310|      return ((Val % Align) == 0) && (Val >= 0) && (Val <= Max);
  ------------------
  |  Branch (676:14): [True: 179, False: 131]
  |  Branch (676:38): [True: 68, False: 111]
  |  Branch (676:52): [True: 15, False: 53]
  ------------------
  677|    310|    }
  678|  1.71k|    return false;
  679|  2.02k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22isVecListDPairAllLanesEv:
 1452|     75|  bool isVecListDPairAllLanes() const {
 1453|     75|    if (!isSingleSpacedVectorAllLanes()) return false;
  ------------------
  |  Branch (1453:9): [True: 69, False: 6]
  ------------------
 1454|      6|    return (ARMMCRegisterClasses[ARM::DPairRegClassID]
 1455|      6|              .contains(VectorList.RegNum));
 1456|     75|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand28isSingleSpacedVectorAllLanesEv:
 1441|    153|  bool isSingleSpacedVectorAllLanes() const {
 1442|    153|    return Kind == k_VectorListAllLanes && !VectorList.isDoubleSpaced;
  ------------------
  |  Branch (1442:12): [True: 15, False: 138]
  |  Branch (1442:44): [True: 15, False: 0]
  ------------------
 1443|    153|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isVecListDPairEv:
 1408|     81|  bool isVecListDPair() const {
 1409|     81|    if (!isSingleSpacedVectorList()) return false;
  ------------------
  |  Branch (1409:9): [True: 64, False: 17]
  ------------------
 1410|     17|    return (ARMMCRegisterClasses[ARM::DPairRegClassID]
 1411|     17|              .contains(VectorList.RegNum));
 1412|     81|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24isSingleSpacedVectorListEv:
 1397|    300|  bool isSingleSpacedVectorList() const {
 1398|    300|    return Kind == k_VectorList && !VectorList.isDoubleSpaced;
  ------------------
  |  Branch (1398:12): [True: 74, False: 226]
  |  Branch (1398:36): [True: 74, False: 0]
  ------------------
 1399|    300|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand28isVecListDPairSpacedAllLanesEv:
 1458|     36|  bool isVecListDPairSpacedAllLanes() const {
 1459|     36|    if (!isDoubleSpacedVectorAllLanes()) return false;
  ------------------
  |  Branch (1459:9): [True: 36, False: 0]
  ------------------
 1460|      0|    return VectorList.Count == 2;
 1461|     36|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand28isDoubleSpacedVectorAllLanesEv:
 1444|     75|  bool isDoubleSpacedVectorAllLanes() const {
 1445|     75|    return Kind == k_VectorListAllLanes && VectorList.isDoubleSpaced;
  ------------------
  |  Branch (1445:12): [True: 9, False: 66]
  |  Branch (1445:44): [True: 0, False: 9]
  ------------------
 1446|     75|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20isVecListDPairSpacedEv:
 1424|     36|  bool isVecListDPairSpaced() const {
 1425|     36|    if (Kind != k_VectorList) return false;
  ------------------
  |  Branch (1425:9): [True: 30, False: 6]
  ------------------
 1426|      6|    if (isSingleSpacedVectorList()) return false;
  ------------------
  |  Branch (1426:9): [True: 6, False: 0]
  ------------------
 1427|      0|    return (ARMMCRegisterClasses[ARM::DPairSpcRegClassID]
 1428|      0|              .contains(VectorList.RegNum));
 1429|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22isVecListFourDAllLanesEv:
 1473|     24|  bool isVecListFourDAllLanes() const {
 1474|     24|    if (!isSingleSpacedVectorAllLanes()) return false;
  ------------------
  |  Branch (1474:9): [True: 21, False: 3]
  ------------------
 1475|      3|    return VectorList.Count == 4;
 1476|     24|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isVecListFourDEv:
 1419|    105|  bool isVecListFourD() const {
 1420|    105|    if (!isSingleSpacedVectorList()) return false;
  ------------------
  |  Branch (1420:9): [True: 82, False: 23]
  ------------------
 1421|     23|    return VectorList.Count == 4;
 1422|    105|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25isVecListFourDByteIndexedEv:
 1554|      6|  bool isVecListFourDByteIndexed() const {
 1555|      6|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1555:9): [True: 6, False: 0]
  ------------------
 1556|      0|    return VectorList.Count == 4 && VectorList.LaneIndex <= 7;
  ------------------
  |  Branch (1556:12): [True: 0, False: 0]
  |  Branch (1556:37): [True: 0, False: 0]
  ------------------
 1557|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand27isSingleSpacedVectorIndexedEv:
 1483|    117|  bool isSingleSpacedVectorIndexed() const {
 1484|    117|    return Kind == k_VectorListIndexed && !VectorList.isDoubleSpaced;
  ------------------
  |  Branch (1484:12): [True: 18, False: 99]
  |  Branch (1484:43): [True: 18, False: 0]
  ------------------
 1485|    117|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26isVecListFourDHWordIndexedEv:
 1559|      3|  bool isVecListFourDHWordIndexed() const {
 1560|      3|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1560:9): [True: 3, False: 0]
  ------------------
 1561|      0|    return VectorList.Count == 4 && VectorList.LaneIndex <= 3;
  ------------------
  |  Branch (1561:12): [True: 0, False: 0]
  |  Branch (1561:37): [True: 0, False: 0]
  ------------------
 1562|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25isVecListFourDWordIndexedEv:
 1574|     15|  bool isVecListFourDWordIndexed() const {
 1575|     15|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1575:9): [True: 12, False: 3]
  ------------------
 1576|      3|    return VectorList.Count == 4 && VectorList.LaneIndex <= 1;
  ------------------
  |  Branch (1576:12): [True: 0, False: 3]
  |  Branch (1576:37): [True: 0, False: 0]
  ------------------
 1577|     15|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22isVecListFourQAllLanesEv:
 1478|     24|  bool isVecListFourQAllLanes() const {
 1479|     24|    if (!isDoubleSpacedVectorAllLanes()) return false;
  ------------------
  |  Branch (1479:9): [True: 24, False: 0]
  ------------------
 1480|      0|    return VectorList.Count == 4;
 1481|     24|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isVecListFourQEv:
 1436|     24|  bool isVecListFourQ() const {
 1437|     24|    if (!isDoubleSpacedVectorList()) return false;
  ------------------
  |  Branch (1437:9): [True: 24, False: 0]
  ------------------
 1438|      0|    return VectorList.Count == 4;
 1439|     24|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24isDoubleSpacedVectorListEv:
 1400|     42|  bool isDoubleSpacedVectorList() const {
 1401|     42|    return Kind == k_VectorList && VectorList.isDoubleSpaced;
  ------------------
  |  Branch (1401:12): [True: 12, False: 30]
  |  Branch (1401:36): [True: 0, False: 12]
  ------------------
 1402|     42|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26isVecListFourQHWordIndexedEv:
 1569|      3|  bool isVecListFourQHWordIndexed() const {
 1570|      3|    if (!isDoubleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1570:9): [True: 3, False: 0]
  ------------------
 1571|      0|    return VectorList.Count == 4 && VectorList.LaneIndex <= 3;
  ------------------
  |  Branch (1571:12): [True: 0, False: 0]
  |  Branch (1571:37): [True: 0, False: 0]
  ------------------
 1572|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand27isDoubleSpacedVectorIndexedEv:
 1486|     63|  bool isDoubleSpacedVectorIndexed() const {
 1487|     63|    return Kind == k_VectorListIndexed && VectorList.isDoubleSpaced;
  ------------------
  |  Branch (1487:12): [True: 12, False: 51]
  |  Branch (1487:43): [True: 0, False: 12]
  ------------------
 1488|     63|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25isVecListFourQWordIndexedEv:
 1564|     15|  bool isVecListFourQWordIndexed() const {
 1565|     15|    if (!isDoubleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1565:9): [True: 15, False: 0]
  ------------------
 1566|      0|    return VectorList.Count == 4 && VectorList.LaneIndex <= 1;
  ------------------
  |  Branch (1566:12): [True: 0, False: 0]
  |  Branch (1566:37): [True: 0, False: 0]
  ------------------
 1567|     15|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21isVecListOneDAllLanesEv:
 1447|     39|  bool isVecListOneDAllLanes() const {
 1448|     39|    if (!isSingleSpacedVectorAllLanes()) return false;
  ------------------
  |  Branch (1448:9): [True: 36, False: 3]
  ------------------
 1449|      3|    return VectorList.Count == 1;
 1450|     39|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand13isVecListOneDEv:
 1403|     45|  bool isVecListOneD() const {
 1404|     45|    if (!isSingleSpacedVectorList()) return false;
  ------------------
  |  Branch (1404:9): [True: 34, False: 11]
  ------------------
 1405|     11|    return VectorList.Count == 1;
 1406|     45|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24isVecListOneDByteIndexedEv:
 1489|      3|  bool isVecListOneDByteIndexed() const {
 1490|      3|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1490:9): [True: 3, False: 0]
  ------------------
 1491|      0|    return VectorList.Count == 1 && VectorList.LaneIndex <= 7;
  ------------------
  |  Branch (1491:12): [True: 0, False: 0]
  |  Branch (1491:37): [True: 0, False: 0]
  ------------------
 1492|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25isVecListOneDHWordIndexedEv:
 1494|      3|  bool isVecListOneDHWordIndexed() const {
 1495|      3|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1495:9): [True: 3, False: 0]
  ------------------
 1496|      0|    return VectorList.Count == 1 && VectorList.LaneIndex <= 3;
  ------------------
  |  Branch (1496:12): [True: 0, False: 0]
  |  Branch (1496:37): [True: 0, False: 0]
  ------------------
 1497|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24isVecListOneDWordIndexedEv:
 1499|     33|  bool isVecListOneDWordIndexed() const {
 1500|     33|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1500:9): [True: 27, False: 6]
  ------------------
 1501|      6|    return VectorList.Count == 1 && VectorList.LaneIndex <= 1;
  ------------------
  |  Branch (1501:12): [True: 3, False: 3]
  |  Branch (1501:37): [True: 3, False: 0]
  ------------------
 1502|     33|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23isVecListThreeDAllLanesEv:
 1463|     15|  bool isVecListThreeDAllLanes() const {
 1464|     15|    if (!isSingleSpacedVectorAllLanes()) return false;
  ------------------
  |  Branch (1464:9): [True: 12, False: 3]
  ------------------
 1465|      3|    return VectorList.Count == 3;
 1466|     15|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isVecListThreeDEv:
 1414|     63|  bool isVecListThreeD() const {
 1415|     63|    if (!isSingleSpacedVectorList()) return false;
  ------------------
  |  Branch (1415:9): [True: 46, False: 17]
  ------------------
 1416|     17|    return VectorList.Count == 3;
 1417|     63|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26isVecListThreeDByteIndexedEv:
 1529|      3|  bool isVecListThreeDByteIndexed() const {
 1530|      3|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1530:9): [True: 3, False: 0]
  ------------------
 1531|      0|    return VectorList.Count == 3 && VectorList.LaneIndex <= 7;
  ------------------
  |  Branch (1531:12): [True: 0, False: 0]
  |  Branch (1531:37): [True: 0, False: 0]
  ------------------
 1532|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand27isVecListThreeDHWordIndexedEv:
 1534|      6|  bool isVecListThreeDHWordIndexed() const {
 1535|      6|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1535:9): [True: 6, False: 0]
  ------------------
 1536|      0|    return VectorList.Count == 3 && VectorList.LaneIndex <= 3;
  ------------------
  |  Branch (1536:12): [True: 0, False: 0]
  |  Branch (1536:37): [True: 0, False: 0]
  ------------------
 1537|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26isVecListThreeDWordIndexedEv:
 1549|      9|  bool isVecListThreeDWordIndexed() const {
 1550|      9|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1550:9): [True: 6, False: 3]
  ------------------
 1551|      3|    return VectorList.Count == 3 && VectorList.LaneIndex <= 1;
  ------------------
  |  Branch (1551:12): [True: 0, False: 3]
  |  Branch (1551:37): [True: 0, False: 0]
  ------------------
 1552|      9|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23isVecListThreeQAllLanesEv:
 1468|     15|  bool isVecListThreeQAllLanes() const {
 1469|     15|    if (!isDoubleSpacedVectorAllLanes()) return false;
  ------------------
  |  Branch (1469:9): [True: 15, False: 0]
  ------------------
 1470|      0|    return VectorList.Count == 3;
 1471|     15|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isVecListThreeQEv:
 1431|     18|  bool isVecListThreeQ() const {
 1432|     18|    if (!isDoubleSpacedVectorList()) return false;
  ------------------
  |  Branch (1432:9): [True: 18, False: 0]
  ------------------
 1433|      0|    return VectorList.Count == 3;
 1434|     18|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand27isVecListThreeQHWordIndexedEv:
 1544|      6|  bool isVecListThreeQHWordIndexed() const {
 1545|      6|    if (!isDoubleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1545:9): [True: 6, False: 0]
  ------------------
 1546|      0|    return VectorList.Count == 3 && VectorList.LaneIndex <= 3;
  ------------------
  |  Branch (1546:12): [True: 0, False: 0]
  |  Branch (1546:37): [True: 0, False: 0]
  ------------------
 1547|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26isVecListThreeQWordIndexedEv:
 1539|      9|  bool isVecListThreeQWordIndexed() const {
 1540|      9|    if (!isDoubleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1540:9): [True: 9, False: 0]
  ------------------
 1541|      0|    return VectorList.Count == 3 && VectorList.LaneIndex <= 1;
  ------------------
  |  Branch (1541:12): [True: 0, False: 0]
  |  Branch (1541:37): [True: 0, False: 0]
  ------------------
 1542|      9|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24isVecListTwoDByteIndexedEv:
 1504|      6|  bool isVecListTwoDByteIndexed() const {
 1505|      6|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1505:9): [True: 6, False: 0]
  ------------------
 1506|      0|    return VectorList.Count == 2 && VectorList.LaneIndex <= 7;
  ------------------
  |  Branch (1506:12): [True: 0, False: 0]
  |  Branch (1506:37): [True: 0, False: 0]
  ------------------
 1507|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25isVecListTwoDHWordIndexedEv:
 1509|      6|  bool isVecListTwoDHWordIndexed() const {
 1510|      6|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1510:9): [True: 6, False: 0]
  ------------------
 1511|      0|    return VectorList.Count == 2 && VectorList.LaneIndex <= 3;
  ------------------
  |  Branch (1511:12): [True: 0, False: 0]
  |  Branch (1511:37): [True: 0, False: 0]
  ------------------
 1512|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24isVecListTwoDWordIndexedEv:
 1524|     24|  bool isVecListTwoDWordIndexed() const {
 1525|     24|    if (!isSingleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1525:9): [True: 18, False: 6]
  ------------------
 1526|      6|    return VectorList.Count == 2 && VectorList.LaneIndex <= 1;
  ------------------
  |  Branch (1526:12): [True: 3, False: 3]
  |  Branch (1526:37): [True: 3, False: 0]
  ------------------
 1527|     24|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25isVecListTwoQHWordIndexedEv:
 1519|      6|  bool isVecListTwoQHWordIndexed() const {
 1520|      6|    if (!isDoubleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1520:9): [True: 6, False: 0]
  ------------------
 1521|      0|    return VectorList.Count == 2 && VectorList.LaneIndex <= 3;
  ------------------
  |  Branch (1521:12): [True: 0, False: 0]
  |  Branch (1521:37): [True: 0, False: 0]
  ------------------
 1522|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24isVecListTwoQWordIndexedEv:
 1514|     24|  bool isVecListTwoQWordIndexed() const {
 1515|     24|    if (!isDoubleSpacedVectorIndexed()) return false;
  ------------------
  |  Branch (1515:9): [True: 24, False: 0]
  ------------------
 1516|      0|    return VectorList.Count == 2 && VectorList.LaneIndex <= 1;
  ------------------
  |  Branch (1516:12): [True: 0, False: 0]
  |  Branch (1516:37): [True: 0, False: 0]
  ------------------
 1517|     24|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isVectorIndex16Ev:
 1583|     46|  bool isVectorIndex16() const {
 1584|     46|    if (Kind != k_VectorIndex) return false;
  ------------------
  |  Branch (1584:9): [True: 46, False: 0]
  ------------------
 1585|      0|    return VectorIndex.Val < 4;
 1586|     46|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isVectorIndex32Ev:
 1587|    137|  bool isVectorIndex32() const {
 1588|    137|    if (Kind != k_VectorIndex) return false;
  ------------------
  |  Branch (1588:9): [True: 137, False: 0]
  ------------------
 1589|      0|    return VectorIndex.Val < 2;
 1590|    137|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isVectorIndex8Ev:
 1579|      5|  bool isVectorIndex8() const {
 1580|      5|    if (Kind != k_VectorIndex) return false;
  ------------------
  |  Branch (1580:9): [True: 5, False: 0]
  ------------------
 1581|      0|    return VectorIndex.Val < 8;
 1582|      5|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8isMemTBBEv:
 1230|      1|  bool isMemTBB() const {
 1231|      1|    if (!isMem() || !Memory.OffsetRegNum || Memory.isNegative ||
  ------------------
  |  Branch (1231:9): [True: 1, False: 0]
  |  Branch (1231:21): [True: 0, False: 0]
  |  Branch (1231:45): [True: 0, False: 0]
  ------------------
 1232|      0|        Memory.ShiftType != ARM_AM::no_shift || Memory.Alignment != 0)
  ------------------
  |  Branch (1232:9): [True: 0, False: 0]
  |  Branch (1232:49): [True: 0, False: 0]
  ------------------
 1233|      1|      return false;
 1234|      0|    return true;
 1235|      1|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8isMemTBHEv:
 1236|      2|  bool isMemTBH() const {
 1237|      2|    if (!isMem() || !Memory.OffsetRegNum || Memory.isNegative ||
  ------------------
  |  Branch (1237:9): [True: 2, False: 0]
  |  Branch (1237:21): [True: 0, False: 0]
  |  Branch (1237:45): [True: 0, False: 0]
  ------------------
 1238|      0|        Memory.ShiftType != ARM_AM::lsl || Memory.ShiftImm != 1 ||
  ------------------
  |  Branch (1238:9): [True: 0, False: 0]
  |  Branch (1238:44): [True: 0, False: 0]
  ------------------
 1239|      0|        Memory.Alignment != 0 )
  ------------------
  |  Branch (1239:9): [True: 0, False: 0]
  ------------------
 1240|      2|      return false;
 1241|      0|    return true;
 1242|      2|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand11isImm0_4095Ev:
  796|    819|  bool isImm0_4095() const {
  797|    819|    if (!isImm()) return false;
  ------------------
  |  Branch (797:9): [True: 408, False: 411]
  ------------------
  798|    411|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  799|    411|    if (!CE) return false;
  ------------------
  |  Branch (799:9): [True: 11, False: 400]
  ------------------
  800|    400|    int64_t Value = CE->getValue();
  801|    400|    return Value >= 0 && Value < 4096;
  ------------------
  |  Branch (801:12): [True: 334, False: 66]
  |  Branch (801:26): [True: 316, False: 18]
  ------------------
  802|    411|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isImm0_4095NegEv:
  803|    501|  bool isImm0_4095Neg() const {
  804|    501|    if (!isImm()) return false;
  ------------------
  |  Branch (804:9): [True: 402, False: 99]
  ------------------
  805|     99|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  806|     99|    if (!CE) return false;
  ------------------
  |  Branch (806:9): [True: 10, False: 89]
  ------------------
  807|     89|    int64_t Value = -CE->getValue();
  808|     89|    return Value > 0 && Value < 4096;
  ------------------
  |  Branch (808:12): [True: 69, False: 20]
  |  Branch (808:25): [True: 51, False: 18]
  ------------------
  809|     99|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand8isITMaskEv:
  663|    622|  bool isITMask() const { return Kind == k_ITCondMask; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isITCondCodeEv:
  664|    566|  bool isITCondCode() const { return Kind == k_CondCode; }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isNEONi16splatEv:
 1603|     84|  bool isNEONi16splat() const {
 1604|     84|    if (isNEONByteReplicate(2))
  ------------------
  |  Branch (1604:9): [True: 3, False: 81]
  ------------------
 1605|      3|      return false; // Leave that for bytes replication and forbid by default.
 1606|     81|    if (!isImm())
  ------------------
  |  Branch (1606:9): [True: 7, False: 74]
  ------------------
 1607|      7|      return false;
 1608|     74|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1609|       |    // Must be a constant.
 1610|     74|    if (!CE) return false;
  ------------------
  |  Branch (1610:9): [True: 2, False: 72]
  ------------------
 1611|     72|    unsigned Value = CE->getValue();
 1612|     72|    return ARM_AM::isNEONi16splat(Value);
 1613|     74|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand19isNEONByteReplicateEj:
 1647|    669|  bool isNEONByteReplicate(unsigned NumBytes) const {
 1648|    669|    if (!isImm())
  ------------------
  |  Branch (1648:9): [True: 36, False: 633]
  ------------------
 1649|     36|      return false;
 1650|    633|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1651|       |    // Must be a constant.
 1652|    633|    if (!CE)
  ------------------
  |  Branch (1652:9): [True: 8, False: 625]
  ------------------
 1653|      8|      return false;
 1654|    625|    int64_t Value = CE->getValue();
 1655|    625|    if (!Value)
  ------------------
  |  Branch (1655:9): [True: 19, False: 606]
  ------------------
 1656|     19|      return false; // Don't bother with zero.
 1657|       |
 1658|    606|    unsigned char B = Value & 0xff;
 1659|    659|    for (unsigned i = 1; i < NumBytes; ++i) {
  ------------------
  |  Branch (1659:26): [True: 647, False: 12]
  ------------------
 1660|    647|      Value >>= 8;
 1661|    647|      if ((Value & 0xff) != B)
  ------------------
  |  Branch (1661:11): [True: 594, False: 53]
  ------------------
 1662|    594|        return false;
 1663|    647|    }
 1664|     12|    return true;
 1665|    606|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isNEONi32splatEv:
 1625|     10|  bool isNEONi32splat() const {
 1626|     10|    if (isNEONByteReplicate(4))
  ------------------
  |  Branch (1626:9): [True: 1, False: 9]
  ------------------
 1627|      1|      return false; // Leave that for bytes replication and forbid by default.
 1628|      9|    if (!isImm())
  ------------------
  |  Branch (1628:9): [True: 1, False: 8]
  ------------------
 1629|      1|      return false;
 1630|      8|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1631|       |    // Must be a constant.
 1632|      8|    if (!CE) return false;
  ------------------
  |  Branch (1632:9): [True: 1, False: 7]
  ------------------
 1633|      7|    unsigned Value = CE->getValue();
 1634|      7|    return ARM_AM::isNEONi32splat(Value);
 1635|      8|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isNEONi64splatEv:
 1705|      5|  bool isNEONi64splat() const {
 1706|      5|    if (!isImm()) return false;
  ------------------
  |  Branch (1706:9): [True: 1, False: 4]
  ------------------
 1707|      4|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1708|       |    // Must be a constant.
 1709|      4|    if (!CE) return false;
  ------------------
  |  Branch (1709:9): [True: 1, False: 3]
  ------------------
 1710|      3|    uint64_t Value = CE->getValue();
 1711|       |    // i64 value with each byte being either 0 or 0xff.
 1712|     19|    for (unsigned i = 0; i < 8; ++i)
  ------------------
  |  Branch (1712:26): [True: 17, False: 2]
  ------------------
 1713|     17|      if ((Value & 0xff) != 0 && (Value & 0xff) != 0xff) return false;
  ------------------
  |  Branch (1713:11): [True: 1, False: 16]
  |  Branch (1713:34): [True: 1, False: 0]
  ------------------
 1714|      2|    return true;
 1715|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand13isNEONi8splatEv:
 1592|     12|  bool isNEONi8splat() const {
 1593|     12|    if (!isImm()) return false;
  ------------------
  |  Branch (1593:9): [True: 1, False: 11]
  ------------------
 1594|     11|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1595|       |    // Must be a constant.
 1596|     11|    if (!CE) return false;
  ------------------
  |  Branch (1596:9): [True: 1, False: 10]
  ------------------
 1597|     10|    int64_t Value = CE->getValue();
 1598|       |    // i8 value splatted across 8 bytes. The immediate is just the 8 byte
 1599|       |    // value.
 1600|     10|    return Value >= 0 && Value < 256;
  ------------------
  |  Branch (1600:12): [True: 9, False: 1]
  |  Branch (1600:26): [True: 5, False: 4]
  ------------------
 1601|     11|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isNEONi16splatNotEv:
 1615|     10|  bool isNEONi16splatNot() const {
 1616|     10|    if (!isImm())
  ------------------
  |  Branch (1616:9): [True: 1, False: 9]
  ------------------
 1617|      1|      return false;
 1618|      9|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1619|       |    // Must be a constant.
 1620|      9|    if (!CE) return false;
  ------------------
  |  Branch (1620:9): [True: 1, False: 8]
  ------------------
 1621|      8|    unsigned Value = CE->getValue();
 1622|      8|    return ARM_AM::isNEONi16splat(~Value & 0xffff);
 1623|      9|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isNEONi32splatNotEv:
 1637|     22|  bool isNEONi32splatNot() const {
 1638|     22|    if (!isImm())
  ------------------
  |  Branch (1638:9): [True: 6, False: 16]
  ------------------
 1639|      6|      return false;
 1640|     16|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1641|       |    // Must be a constant.
 1642|     16|    if (!CE) return false;
  ------------------
  |  Branch (1642:9): [True: 1, False: 15]
  ------------------
 1643|     15|    unsigned Value = CE->getValue();
 1644|     15|    return ARM_AM::isNEONi32splat(~Value);
 1645|     16|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22isNEONi16ByteReplicateEv:
 1666|     57|  bool isNEONi16ByteReplicate() const { return isNEONByteReplicate(2); }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand13isNEONi32vmovEv:
 1668|    329|  bool isNEONi32vmov() const {
 1669|    329|    if (isNEONByteReplicate(4))
  ------------------
  |  Branch (1669:9): [True: 3, False: 326]
  ------------------
 1670|      3|      return false; // Let it to be classified as byte-replicate case.
 1671|    326|    if (!isImm())
  ------------------
  |  Branch (1671:9): [True: 20, False: 306]
  ------------------
 1672|     20|      return false;
 1673|    306|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1674|       |    // Must be a constant.
 1675|    306|    if (!CE)
  ------------------
  |  Branch (1675:9): [True: 2, False: 304]
  ------------------
 1676|      2|      return false;
 1677|    304|    int64_t Value = CE->getValue();
 1678|       |    // i32 value with set bits only in one byte X000, 0X00, 00X0, or 000X,
 1679|       |    // for VMOV/VMVN only, 00Xf or 0Xff are also accepted.
 1680|       |    // FIXME: This is probably wrong and a copy and paste from previous example
 1681|    304|    return (Value >= 0 && Value < 256) ||
  ------------------
  |  Branch (1681:13): [True: 170, False: 134]
  |  Branch (1681:27): [True: 29, False: 141]
  ------------------
 1682|    275|      (Value >= 0x0100 && Value <= 0xff00) ||
  ------------------
  |  Branch (1682:8): [True: 141, False: 134]
  |  Branch (1682:27): [True: 42, False: 99]
  ------------------
 1683|    233|      (Value >= 0x010000 && Value <= 0xff0000) ||
  ------------------
  |  Branch (1683:8): [True: 97, False: 136]
  |  Branch (1683:29): [True: 13, False: 84]
  ------------------
 1684|    220|      (Value >= 0x01000000 && Value <= 0xff000000) ||
  ------------------
  |  Branch (1684:8): [True: 82, False: 138]
  |  Branch (1684:31): [True: 27, False: 55]
  ------------------
 1685|    193|      (Value >= 0x01ff && Value <= 0xffff && (Value & 0xff) == 0xff) ||
  ------------------
  |  Branch (1685:8): [True: 59, False: 134]
  |  Branch (1685:27): [True: 2, False: 57]
  |  Branch (1685:46): [True: 1, False: 1]
  ------------------
 1686|    192|      (Value >= 0x01ffff && Value <= 0xffffff && (Value & 0xffff) == 0xffff);
  ------------------
  |  Branch (1686:8): [True: 57, False: 135]
  |  Branch (1686:29): [True: 2, False: 55]
  |  Branch (1686:50): [True: 1, False: 1]
  ------------------
 1687|    306|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22isNEONi32ByteReplicateEv:
 1667|    189|  bool isNEONi32ByteReplicate() const { return isNEONByteReplicate(4); }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16isNEONi32vmovNegEv:
 1688|    188|  bool isNEONi32vmovNeg() const {
 1689|    188|    if (!isImm()) return false;
  ------------------
  |  Branch (1689:9): [True: 1, False: 187]
  ------------------
 1690|    187|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1691|       |    // Must be a constant.
 1692|    187|    if (!CE) return false;
  ------------------
  |  Branch (1692:9): [True: 1, False: 186]
  ------------------
 1693|    186|    int64_t Value = ~CE->getValue();
 1694|       |    // i32 value with set bits only in one byte X000, 0X00, 00X0, or 000X,
 1695|       |    // for VMOV/VMVN only, 00Xf or 0Xff are also accepted.
 1696|       |    // FIXME: This is probably wrong and a copy and paste from previous example
 1697|    186|    return (Value >= 0 && Value < 256) ||
  ------------------
  |  Branch (1697:13): [True: 121, False: 65]
  |  Branch (1697:27): [True: 3, False: 118]
  ------------------
 1698|    183|      (Value >= 0x0100 && Value <= 0xff00) ||
  ------------------
  |  Branch (1698:8): [True: 118, False: 65]
  |  Branch (1698:27): [True: 20, False: 98]
  ------------------
 1699|    163|      (Value >= 0x010000 && Value <= 0xff0000) ||
  ------------------
  |  Branch (1699:8): [True: 97, False: 66]
  |  Branch (1699:29): [True: 21, False: 76]
  ------------------
 1700|    142|      (Value >= 0x01000000 && Value <= 0xff000000) ||
  ------------------
  |  Branch (1700:8): [True: 75, False: 67]
  |  Branch (1700:31): [True: 19, False: 56]
  ------------------
 1701|    123|      (Value >= 0x01ff && Value <= 0xffff && (Value & 0xff) == 0xff) ||
  ------------------
  |  Branch (1701:8): [True: 58, False: 65]
  |  Branch (1701:27): [True: 1, False: 57]
  |  Branch (1701:46): [True: 0, False: 1]
  ------------------
 1702|    123|      (Value >= 0x01ffff && Value <= 0xffffff && (Value & 0xffff) == 0xffff);
  ------------------
  |  Branch (1702:8): [True: 57, False: 66]
  |  Branch (1702:29): [True: 1, False: 56]
  |  Branch (1702:50): [True: 0, False: 1]
  ------------------
 1703|    187|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isShrImm16Ev:
  880|     19|  bool isShrImm16() const {
  881|     19|    if (!isImm()) return false;
  ------------------
  |  Branch (881:9): [True: 6, False: 13]
  ------------------
  882|     13|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  883|     13|    if (!CE) return false;
  ------------------
  |  Branch (883:9): [True: 2, False: 11]
  ------------------
  884|     11|    int64_t Value = CE->getValue();
  885|     11|    return Value > 0 && Value <= 16;
  ------------------
  |  Branch (885:12): [True: 10, False: 1]
  |  Branch (885:25): [True: 9, False: 1]
  ------------------
  886|     13|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isShrImm32Ev:
  887|     20|  bool isShrImm32() const {
  888|     20|    if (!isImm()) return false;
  ------------------
  |  Branch (888:9): [True: 6, False: 14]
  ------------------
  889|     14|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  890|     14|    if (!CE) return false;
  ------------------
  |  Branch (890:9): [True: 2, False: 12]
  ------------------
  891|     12|    int64_t Value = CE->getValue();
  892|     12|    return Value > 0 && Value <= 32;
  ------------------
  |  Branch (892:12): [True: 11, False: 1]
  |  Branch (892:25): [True: 11, False: 0]
  ------------------
  893|     14|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand10isShrImm64Ev:
  894|     16|  bool isShrImm64() const {
  895|     16|    if (!isImm()) return false;
  ------------------
  |  Branch (895:9): [True: 5, False: 11]
  ------------------
  896|     11|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  897|     11|    if (!CE) return false;
  ------------------
  |  Branch (897:9): [True: 1, False: 10]
  ------------------
  898|     10|    int64_t Value = CE->getValue();
  899|     10|    return Value > 0 && Value <= 64;
  ------------------
  |  Branch (899:12): [True: 9, False: 1]
  |  Branch (899:25): [True: 9, False: 0]
  ------------------
  900|     11|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand9isShrImm8Ev:
  873|     13|  bool isShrImm8() const {
  874|     13|    if (!isImm()) return false;
  ------------------
  |  Branch (874:9): [True: 3, False: 10]
  ------------------
  875|     10|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  876|     10|    if (!CE) return false;
  ------------------
  |  Branch (876:9): [True: 1, False: 9]
  ------------------
  877|      9|    int64_t Value = CE->getValue();
  878|      9|    return Value > 0 && Value <= 8;
  ------------------
  |  Branch (878:12): [True: 8, False: 1]
  |  Branch (878:25): [True: 8, False: 0]
  ------------------
  879|     10|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isT2SOImmNegEv:
 1025|  7.79k|  bool isT2SOImmNeg() const {
 1026|  7.79k|    if (!isImm()) return false;
  ------------------
  |  Branch (1026:9): [True: 6.17k, False: 1.62k]
  ------------------
 1027|  1.62k|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1028|  1.62k|    if (!CE) return false;
  ------------------
  |  Branch (1028:9): [True: 603, False: 1.01k]
  ------------------
 1029|  1.01k|    int64_t Value = CE->getValue();
 1030|       |    // Only use this when not representable as a plain so_imm.
 1031|  1.01k|    return ARM_AM::getT2SOImmVal(Value) == -1 &&
  ------------------
  |  Branch (1031:12): [True: 584, False: 435]
  ------------------
 1032|    584|      ARM_AM::getT2SOImmVal(-Value) != -1;
  ------------------
  |  Branch (1032:7): [True: 321, False: 263]
  ------------------
 1033|  1.62k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isT2SOImmNotEv:
 1017|    554|  bool isT2SOImmNot() const {
 1018|    554|    if (!isImm()) return false;
  ------------------
  |  Branch (1018:9): [True: 273, False: 281]
  ------------------
 1019|    281|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1020|    281|    if (!CE) return false;
  ------------------
  |  Branch (1020:9): [True: 41, False: 240]
  ------------------
 1021|    240|    int64_t Value = CE->getValue();
 1022|    240|    return ARM_AM::getT2SOImmVal(Value) == -1 &&
  ------------------
  |  Branch (1022:12): [True: 96, False: 144]
  ------------------
 1023|     96|      ARM_AM::getT2SOImmVal(~Value) != -1;
  ------------------
  |  Branch (1023:7): [True: 19, False: 77]
  ------------------
 1024|    281|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isMemUImm12OffsetEv:
 1354|  1.73k|  bool isMemUImm12Offset() const {
 1355|  1.73k|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1355:9): [True: 918, False: 815]
  |  Branch (1355:21): [True: 34, False: 781]
  |  Branch (1355:49): [True: 0, False: 781]
  ------------------
 1356|    952|      return false;
 1357|       |    // Immediate offset in range [0, 4095].
 1358|    781|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1358:9): [True: 717, False: 64]
  ------------------
 1359|     64|    int64_t Val = Memory.OffsetImm->getValue();
 1360|     64|    return (Val >= 0 && Val < 4096);
  ------------------
  |  Branch (1360:13): [True: 64, False: 0]
  |  Branch (1360:25): [True: 62, False: 2]
  ------------------
 1361|    781|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16isT2MemRegOffsetEv:
 1248|  1.67k|  bool isT2MemRegOffset() const {
 1249|  1.67k|    if (!isMem() || !Memory.OffsetRegNum || Memory.isNegative ||
  ------------------
  |  Branch (1249:9): [True: 918, False: 758]
  |  Branch (1249:21): [True: 724, False: 34]
  |  Branch (1249:45): [True: 3, False: 31]
  ------------------
 1250|     31|        Memory.Alignment != 0)
  ------------------
  |  Branch (1250:9): [True: 0, False: 31]
  ------------------
 1251|  1.64k|      return false;
 1252|       |    // Only lsl #{0, 1, 2, 3} allowed.
 1253|     31|    if (Memory.ShiftType == ARM_AM::no_shift)
  ------------------
  |  Branch (1253:9): [True: 31, False: 0]
  ------------------
 1254|     31|      return true;
 1255|      0|    if (Memory.ShiftType != ARM_AM::lsl || Memory.ShiftImm > 3)
  ------------------
  |  Branch (1255:9): [True: 0, False: 0]
  |  Branch (1255:44): [True: 0, False: 0]
  ------------------
 1256|      0|      return false;
 1257|      0|    return true;
 1258|      0|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isMemPCRelImm12Ev:
 1081|  1.62k|  bool isMemPCRelImm12() const {
 1082|  1.62k|    if (!isMem() || Memory.OffsetRegNum != 0 || Memory.Alignment != 0)
  ------------------
  |  Branch (1082:9): [True: 909, False: 719]
  |  Branch (1082:21): [True: 21, False: 698]
  |  Branch (1082:49): [True: 0, False: 698]
  ------------------
 1083|    930|      return false;
 1084|       |    // Base register must be PC.
 1085|    698|    if (Memory.BaseRegNum != ARM::PC)
  ------------------
  |  Branch (1085:9): [True: 685, False: 13]
  ------------------
 1086|    685|      return false;
 1087|       |    // Immediate offset in range [-4095, 4095].
 1088|     13|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1088:9): [True: 13, False: 0]
  ------------------
 1089|      0|    int64_t Val = Memory.OffsetImm->getValue();
 1090|      0|    return (Val > -4096 && Val < 4096) || (Val == INT32_MIN);
  ------------------
  |  Branch (1090:13): [True: 0, False: 0]
  |  Branch (1090:28): [True: 0, False: 0]
  |  Branch (1090:43): [True: 0, False: 0]
  ------------------
 1091|     13|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isMemThumbRIs1Ev:
 1286|    657|  bool isMemThumbRIs1() const {
 1287|    657|    if (!isMem() || Memory.OffsetRegNum != 0 ||
  ------------------
  |  Branch (1287:9): [True: 6, False: 651]
  |  Branch (1287:21): [True: 7, False: 644]
  ------------------
 1288|    644|        !isARMLowRegister(Memory.BaseRegNum) || Memory.Alignment != 0)
  ------------------
  |  Branch (1288:9): [True: 11, False: 633]
  |  Branch (1288:49): [True: 0, False: 633]
  ------------------
 1289|     24|      return false;
 1290|       |    // Immediate offset in range [0, 31].
 1291|    633|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1291:9): [True: 610, False: 23]
  ------------------
 1292|     23|    int64_t Val = Memory.OffsetImm->getValue();
 1293|     23|    return Val >= 0 && Val <= 31;
  ------------------
  |  Branch (1293:12): [True: 23, False: 0]
  |  Branch (1293:24): [True: 22, False: 1]
  ------------------
 1294|    633|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isMemThumbRIs2Ev:
 1277|    910|  bool isMemThumbRIs2() const {
 1278|    910|    if (!isMem() || Memory.OffsetRegNum != 0 ||
  ------------------
  |  Branch (1278:9): [True: 852, False: 58]
  |  Branch (1278:21): [True: 19, False: 39]
  ------------------
 1279|     39|        !isARMLowRegister(Memory.BaseRegNum) || Memory.Alignment != 0)
  ------------------
  |  Branch (1279:9): [True: 5, False: 34]
  |  Branch (1279:49): [True: 0, False: 34]
  ------------------
 1280|    876|      return false;
 1281|       |    // Immediate offset, multiple of 4 in range [0, 62].
 1282|     34|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1282:9): [True: 15, False: 19]
  ------------------
 1283|     19|    int64_t Val = Memory.OffsetImm->getValue();
 1284|     19|    return Val >= 0 && Val <= 62 && (Val % 2) == 0;
  ------------------
  |  Branch (1284:12): [True: 19, False: 0]
  |  Branch (1284:24): [True: 15, False: 4]
  |  Branch (1284:37): [True: 4, False: 11]
  ------------------
 1285|     34|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14isMemThumbRIs4Ev:
 1268|    798|  bool isMemThumbRIs4() const {
 1269|    798|    if (!isMem() || Memory.OffsetRegNum != 0 ||
  ------------------
  |  Branch (1269:9): [True: 716, False: 82]
  |  Branch (1269:21): [True: 16, False: 66]
  ------------------
 1270|     66|        !isARMLowRegister(Memory.BaseRegNum) || Memory.Alignment != 0)
  ------------------
  |  Branch (1270:9): [True: 10, False: 56]
  |  Branch (1270:49): [True: 0, False: 56]
  ------------------
 1271|    742|      return false;
 1272|       |    // Immediate offset, multiple of 4 in range [0, 124].
 1273|     56|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1273:9): [True: 9, False: 47]
  ------------------
 1274|     47|    int64_t Val = Memory.OffsetImm->getValue();
 1275|     47|    return Val >= 0 && Val <= 124 && (Val % 4) == 0;
  ------------------
  |  Branch (1275:12): [True: 47, False: 0]
  |  Branch (1275:24): [True: 41, False: 6]
  |  Branch (1275:38): [True: 18, False: 23]
  ------------------
 1276|     56|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand12isMemThumbRREv:
 1259|  2.44k|  bool isMemThumbRR() const {
 1260|       |    // Thumb reg+reg addressing is simple. Just two registers, a base and
 1261|       |    // an offset. No shifts, negations or any other complicating factors.
 1262|  2.44k|    if (!isMem() || !Memory.OffsetRegNum || Memory.isNegative ||
  ------------------
  |  Branch (1262:9): [True: 1.67k, False: 769]
  |  Branch (1262:21): [True: 727, False: 42]
  |  Branch (1262:45): [True: 3, False: 39]
  ------------------
 1263|     39|        Memory.ShiftType != ARM_AM::no_shift || Memory.Alignment != 0)
  ------------------
  |  Branch (1263:9): [True: 0, False: 39]
  |  Branch (1263:49): [True: 0, False: 39]
  ------------------
 1264|  2.40k|      return false;
 1265|     39|    return isARMLowRegister(Memory.BaseRegNum) &&
  ------------------
  |  Branch (1265:12): [True: 19, False: 20]
  ------------------
 1266|     19|      (!Memory.OffsetRegNum || isARMLowRegister(Memory.OffsetRegNum));
  ------------------
  |  Branch (1266:8): [True: 0, False: 19]
  |  Branch (1266:32): [True: 12, False: 7]
  ------------------
 1267|  2.44k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand13isMemThumbSPIEv:
 1295|    773|  bool isMemThumbSPI() const {
 1296|    773|    if (!isMem() || Memory.OffsetRegNum != 0 ||
  ------------------
  |  Branch (1296:9): [True: 716, False: 57]
  |  Branch (1296:21): [True: 13, False: 44]
  ------------------
 1297|     44|        Memory.BaseRegNum != ARM::SP || Memory.Alignment != 0)
  ------------------
  |  Branch (1297:9): [True: 44, False: 0]
  |  Branch (1297:41): [True: 0, False: 0]
  ------------------
 1298|    773|      return false;
 1299|       |    // Immediate offset, multiple of 4 in range [0, 1020].
 1300|      0|    if (!Memory.OffsetImm) return true;
  ------------------
  |  Branch (1300:9): [True: 0, False: 0]
  ------------------
 1301|      0|    int64_t Val = Memory.OffsetImm->getValue();
 1302|      0|    return Val >= 0 && Val <= 1020 && (Val % 4) == 0;
  ------------------
  |  Branch (1302:12): [True: 0, False: 0]
  |  Branch (1302:24): [True: 0, False: 0]
  |  Branch (1302:39): [True: 0, False: 0]
  ------------------
 1303|      0|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand15isImm0_508s4NegEv:
  774|    306|  bool isImm0_508s4Neg() const {
  775|    306|    if (!isImm()) return false;
  ------------------
  |  Branch (775:9): [True: 73, False: 233]
  ------------------
  776|    233|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
  777|    233|    if (!CE) return false;
  ------------------
  |  Branch (777:9): [True: 5, False: 228]
  ------------------
  778|    228|    int64_t Value = -CE->getValue();
  779|       |    // explicitly exclude zero. we want that to use the normal 0_508 version.
  780|    228|    return ((Value & 3) == 0) && Value > 0 && Value <= 508;
  ------------------
  |  Branch (780:12): [True: 85, False: 143]
  |  Branch (780:34): [True: 33, False: 52]
  |  Branch (780:47): [True: 20, False: 13]
  ------------------
  781|    233|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14addRegOperandsERN7llvm_ks6MCInstEj:
 1764|  28.0k|  void addRegOperands(MCInst &Inst, unsigned N) const {
 1765|  28.0k|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1765:5): [True: 28.0k, False: 0]
  |  Branch (1765:5): [True: 28.0k, Folded]
  |  Branch (1765:5): [True: 28.0k, False: 0]
  ------------------
 1766|  28.0k|    Inst.addOperand(MCOperand::createReg(getReg()));
 1767|  28.0k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16addCCOutOperandsERN7llvm_ks6MCInstEj:
 1759|  7.12k|  void addCCOutOperands(MCInst &Inst, unsigned N) const {
 1760|  7.12k|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1760:5): [True: 7.12k, False: 0]
  |  Branch (1760:5): [True: 7.12k, Folded]
  |  Branch (1760:5): [True: 7.12k, False: 0]
  ------------------
 1761|  7.12k|    Inst.addOperand(MCOperand::createReg(getReg()));
 1762|  7.12k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand19addCondCodeOperandsERN7llvm_ks6MCInstEj:
 1727|  27.2k|  void addCondCodeOperands(MCInst &Inst, unsigned N) const {
 1728|  27.2k|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (1728:5): [True: 27.2k, False: 0]
  |  Branch (1728:5): [True: 27.2k, Folded]
  |  Branch (1728:5): [True: 27.2k, False: 0]
  ------------------
 1729|  27.2k|    Inst.addOperand(MCOperand::createImm(unsigned(getCondCode())));
 1730|  27.2k|    unsigned RegNum = getCondCode() == ARMCC::AL ? 0: ARM::CPSR;
  ------------------
  |  Branch (1730:23): [True: 25.1k, False: 2.12k]
  ------------------
 1731|  27.2k|    Inst.addOperand(MCOperand::createReg(RegNum));
 1732|  27.2k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24addRegShiftedRegOperandsERN7llvm_ks6MCInstEj:
 1769|     20|  void addRegShiftedRegOperands(MCInst &Inst, unsigned N) const {
 1770|     20|    assert(N == 3 && "Invalid number of operands!");
  ------------------
  |  Branch (1770:5): [True: 20, False: 0]
  |  Branch (1770:5): [True: 20, Folded]
  |  Branch (1770:5): [True: 20, False: 0]
  ------------------
 1771|     20|    assert(isRegShiftedReg() &&
  ------------------
  |  Branch (1771:5): [True: 20, False: 0]
  |  Branch (1771:5): [True: 20, Folded]
  |  Branch (1771:5): [True: 20, False: 0]
  ------------------
 1772|     20|           "addRegShiftedRegOperands() on non-RegShiftedReg!");
 1773|     20|    Inst.addOperand(MCOperand::createReg(RegShiftedReg.SrcReg));
 1774|     20|    Inst.addOperand(MCOperand::createReg(RegShiftedReg.ShiftReg));
 1775|     20|    Inst.addOperand(MCOperand::createImm(
 1776|     20|      ARM_AM::getSORegOpc(RegShiftedReg.ShiftTy, RegShiftedReg.ShiftImm)));
 1777|     20|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17addModImmOperandsERN7llvm_ks6MCInstEj:
 1818|  3.09k|  void addModImmOperands(MCInst &Inst, unsigned N) const {
 1819|  3.09k|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1819:5): [True: 3.09k, False: 0]
  |  Branch (1819:5): [True: 3.09k, Folded]
  |  Branch (1819:5): [True: 3.09k, False: 0]
  ------------------
 1820|       |
 1821|       |    // Support for fixups (MCFixup)
 1822|  3.09k|    if (isImm())
  ------------------
  |  Branch (1822:9): [True: 689, False: 2.40k]
  ------------------
 1823|    689|      return addImmOperands(Inst, N);
 1824|       |
 1825|  2.40k|    Inst.addOperand(MCOperand::createImm(ModImm.Bits | (ModImm.Rot << 7)));
 1826|  2.40k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24addRegShiftedImmOperandsERN7llvm_ks6MCInstEj:
 1779|    301|  void addRegShiftedImmOperands(MCInst &Inst, unsigned N) const {
 1780|    301|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (1780:5): [True: 301, False: 0]
  |  Branch (1780:5): [True: 301, Folded]
  |  Branch (1780:5): [True: 301, False: 0]
  ------------------
 1781|    301|    assert(isRegShiftedImm() &&
  ------------------
  |  Branch (1781:5): [True: 301, False: 0]
  |  Branch (1781:5): [True: 301, Folded]
  |  Branch (1781:5): [True: 301, False: 0]
  ------------------
 1782|    301|           "addRegShiftedImmOperands() on non-RegShiftedImm!");
 1783|    301|    Inst.addOperand(MCOperand::createReg(RegShiftedImm.SrcReg));
 1784|       |    // Shift of #32 is encoded as 0 where permitted
 1785|    301|    unsigned Imm = (RegShiftedImm.ShiftImm == 32 ? 0 : RegShiftedImm.ShiftImm);
  ------------------
  |  Branch (1785:21): [True: 9, False: 292]
  ------------------
 1786|    301|    Inst.addOperand(MCOperand::createImm(
 1787|    301|      ARM_AM::getSORegOpc(RegShiftedImm.ShiftTy, Imm)));
 1788|    301|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand14addImmOperandsERN7llvm_ks6MCInstEj:
 1853|  12.7k|  void addImmOperands(MCInst &Inst, unsigned N) const {
 1854|  12.7k|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1854:5): [True: 12.7k, False: 0]
  |  Branch (1854:5): [True: 12.7k, Folded]
  |  Branch (1854:5): [True: 12.7k, False: 0]
  ------------------
 1855|  12.7k|    addExpr(Inst, getImm());
 1856|  12.7k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand7addExprERN7llvm_ks6MCInstEPKNS1_6MCExprE:
 1717|  13.5k|  void addExpr(MCInst &Inst, const MCExpr *Expr) const {
 1718|       |    // Add as immediates when possible.  Null MCExpr = 0.
 1719|  13.5k|    if (!Expr)
  ------------------
  |  Branch (1719:9): [True: 0, False: 13.5k]
  ------------------
 1720|      0|      Inst.addOperand(MCOperand::createImm(0));
 1721|  13.5k|    else if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr))
  ------------------
  |  Branch (1721:36): [True: 4.32k, False: 9.25k]
  ------------------
 1722|  4.32k|      Inst.addOperand(MCOperand::createImm(CE->getValue()));
 1723|  9.25k|    else
 1724|  9.25k|      Inst.addOperand(MCOperand::createExpr(Expr));
 1725|  13.5k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addImm0_508s4OperandsERN7llvm_ks6MCInstEj:
 1901|    350|  void addImm0_508s4Operands(MCInst &Inst, unsigned N) const {
 1902|    350|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1902:5): [True: 350, False: 0]
  |  Branch (1902:5): [True: 350, Folded]
  |  Branch (1902:5): [True: 350, False: 0]
  ------------------
 1903|       |    // The immediate is scaled by four in the encoding and is stored
 1904|       |    // in the MCInst as such. Lop off the low two bits here.
 1905|    350|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1906|    350|    Inst.addOperand(MCOperand::createImm(CE->getValue() / 4));
 1907|    350|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24addImm0_508s4NegOperandsERN7llvm_ks6MCInstEj:
 1893|     20|  void addImm0_508s4NegOperands(MCInst &Inst, unsigned N) const {
 1894|     20|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1894:5): [True: 20, False: 0]
  |  Branch (1894:5): [True: 20, Folded]
  |  Branch (1894:5): [True: 20, False: 0]
  ------------------
 1895|       |    // The immediate is scaled by four in the encoding and is stored
 1896|       |    // in the MCInst as such. Lop off the low two bits here.
 1897|     20|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1898|     20|    Inst.addOperand(MCOperand::createImm(-(CE->getValue() / 4)));
 1899|     20|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addImm0_4095NegOperandsERN7llvm_ks6MCInstEj:
 1959|     51|  void addImm0_4095NegOperands(MCInst &Inst, unsigned N) const {
 1960|     51|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1960:5): [True: 51, False: 0]
  |  Branch (1960:5): [True: 51, Folded]
  |  Branch (1960:5): [True: 51, False: 0]
  ------------------
 1961|       |    // The operand is actually an imm0_4095, but we have its
 1962|       |    // negation in the assembly source, so twiddle it here.
 1963|     51|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1964|     51|    Inst.addOperand(MCOperand::createImm(-CE->getValue()));
 1965|     51|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addT2SOImmNegOperandsERN7llvm_ks6MCInstEj:
 1951|     28|  void addT2SOImmNegOperands(MCInst &Inst, unsigned N) const {
 1952|     28|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1952:5): [True: 28, False: 0]
  |  Branch (1952:5): [True: 28, Folded]
  |  Branch (1952:5): [True: 28, False: 0]
  ------------------
 1953|       |    // The operand is actually a t2_so_imm, but we have its
 1954|       |    // negation in the assembly source, so twiddle it here.
 1955|     28|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1956|     28|    Inst.addOperand(MCOperand::createImm(-CE->getValue()));
 1957|     28|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20addModImmNegOperandsERN7llvm_ks6MCInstEj:
 1835|    348|  void addModImmNegOperands(MCInst &Inst, unsigned N) const {
 1836|    348|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1836:5): [True: 348, False: 0]
  |  Branch (1836:5): [True: 348, Folded]
  |  Branch (1836:5): [True: 348, False: 0]
  ------------------
 1837|    348|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1838|    348|    uint32_t Enc = ARM_AM::getSOImmVal(-CE->getValue());
 1839|    348|    Inst.addOperand(MCOperand::createImm(Enc));
 1840|    348|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22addImm0_1020s4OperandsERN7llvm_ks6MCInstEj:
 1885|      8|  void addImm0_1020s4Operands(MCInst &Inst, unsigned N) const {
 1886|      8|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1886:5): [True: 8, False: 0]
  |  Branch (1886:5): [True: 8, Folded]
  |  Branch (1886:5): [True: 8, False: 0]
  ------------------
 1887|       |    // The immediate is scaled by four in the encoding and is stored
 1888|       |    // in the MCInst as such. Lop off the low two bits here.
 1889|      8|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1890|      8|    Inst.addOperand(MCOperand::createImm(CE->getValue() / 4));
 1891|      8|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand30addUnsignedOffset_b8s2OperandsERN7llvm_ks6MCInstEj:
 1967|     65|  void addUnsignedOffset_b8s2Operands(MCInst &Inst, unsigned N) const {
 1968|     65|    if(const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm())) {
  ------------------
  |  Branch (1968:30): [True: 3, False: 62]
  ------------------
 1969|      3|      Inst.addOperand(MCOperand::createImm(CE->getValue() >> 2));
 1970|      3|      return;
 1971|      3|    }
 1972|       |
 1973|     62|    const MCSymbolRefExpr *SR = dyn_cast<MCSymbolRefExpr>(Imm.Val);
 1974|     62|    assert(SR && "Unknown value type!");
  ------------------
  |  Branch (1974:5): [True: 62, False: 0]
  |  Branch (1974:5): [True: 62, Folded]
  |  Branch (1974:5): [True: 62, False: 0]
  ------------------
 1975|     62|    Inst.addOperand(MCOperand::createExpr(SR));
 1976|     62|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand19addAdrLabelOperandsERN7llvm_ks6MCInstEj:
 2019|  1.92k|  void addAdrLabelOperands(MCInst &Inst, unsigned N) const {
 2020|  1.92k|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2020:5): [True: 1.92k, False: 0]
  |  Branch (2020:5): [True: 1.92k, Folded]
  |  Branch (2020:5): [True: 1.92k, False: 0]
  ------------------
 2021|  1.92k|    assert(isImm() && "Not an immediate!");
  ------------------
  |  Branch (2021:5): [True: 1.92k, False: 0]
  |  Branch (2021:5): [True: 1.92k, Folded]
  |  Branch (2021:5): [True: 1.92k, False: 0]
  ------------------
 2022|       |
 2023|       |    // If we have an immediate that's not a constant, treat it as a label
 2024|       |    // reference needing a fixup. 
 2025|  1.92k|    if (!isa<MCConstantExpr>(getImm())) {
  ------------------
  |  Branch (2025:9): [True: 1.72k, False: 199]
  ------------------
 2026|  1.72k|      Inst.addOperand(MCOperand::createExpr(getImm()));
 2027|  1.72k|      return;
 2028|  1.72k|    }
 2029|       |
 2030|    199|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2031|    199|    int Val = CE->getValue();
 2032|    199|    Inst.addOperand(MCOperand::createImm(Val));
 2033|    199|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addT2SOImmNotOperandsERN7llvm_ks6MCInstEj:
 1943|      6|  void addT2SOImmNotOperands(MCInst &Inst, unsigned N) const {
 1944|      6|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1944:5): [True: 6, False: 0]
  |  Branch (1944:5): [True: 6, Folded]
  |  Branch (1944:5): [True: 6, False: 0]
  ------------------
 1945|       |    // The operand is actually a t2_so_imm, but we have its bitwise
 1946|       |    // negation in the assembly source, so twiddle it here.
 1947|      6|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1948|      6|    Inst.addOperand(MCOperand::createImm(~CE->getValue()));
 1949|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20addModImmNotOperandsERN7llvm_ks6MCInstEj:
 1828|    164|  void addModImmNotOperands(MCInst &Inst, unsigned N) const {
 1829|    164|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1829:5): [True: 164, False: 0]
  |  Branch (1829:5): [True: 164, Folded]
  |  Branch (1829:5): [True: 164, False: 0]
  ------------------
 1830|    164|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1831|    164|    uint32_t Enc = ARM_AM::getSOImmVal(~CE->getValue());
 1832|    164|    Inst.addOperand(MCOperand::createImm(Enc));
 1833|    164|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addImmThumbSROperandsERN7llvm_ks6MCInstEj:
 1925|    139|  void addImmThumbSROperands(MCInst &Inst, unsigned N) const {
 1926|    139|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1926:5): [True: 139, False: 0]
  |  Branch (1926:5): [True: 139, Folded]
  |  Branch (1926:5): [True: 139, False: 0]
  ------------------
 1927|       |    // The constant encodes as the immediate, except for 32, which encodes as
 1928|       |    // zero.
 1929|    139|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1930|    139|    unsigned Imm = CE->getValue();
 1931|    139|    Inst.addOperand(MCOperand::createImm((Imm == 32 ? 0 : Imm)));
  ------------------
  |  Branch (1931:43): [True: 0, False: 139]
  ------------------
 1932|    139|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser16cvtThumbBranchesERN7llvm_ks6MCInstERKNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS5_14default_deleteIS7_EEEEEE:
 4808|  2.82k|                                    const OperandVector &Operands) {
 4809|  2.82k|  int CondOp = -1, ImmOp = -1;
 4810|  2.82k|  switch(Inst.getOpcode()) {
 4811|  2.71k|    case ARM::tB:
  ------------------
  |  Branch (4811:5): [True: 2.71k, False: 106]
  ------------------
 4812|  2.71k|    case ARM::tBcc:  CondOp = 1; ImmOp = 2; break;
  ------------------
  |  Branch (4812:5): [True: 0, False: 2.82k]
  ------------------
 4813|       |
 4814|    106|    case ARM::t2B:
  ------------------
  |  Branch (4814:5): [True: 106, False: 2.71k]
  ------------------
 4815|    106|    case ARM::t2Bcc: CondOp = 1; ImmOp = 3; break;
  ------------------
  |  Branch (4815:5): [True: 0, False: 2.82k]
  ------------------
 4816|       |
 4817|      0|    default: llvm_unreachable("Unexpected instruction in cvtThumbBranches");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (4817:5): [True: 0, False: 2.82k]
  ------------------
 4818|  2.82k|  }
 4819|       |  // first decide whether or not the branch should be conditional
 4820|       |  // by looking at it's location relative to an IT block
 4821|  2.82k|  if(inITBlock()) {
  ------------------
  |  Branch (4821:6): [True: 67, False: 2.75k]
  ------------------
 4822|       |    // inside an IT block we cannot have any conditional branches. any 
 4823|       |    // such instructions needs to be converted to unconditional form
 4824|     67|    switch(Inst.getOpcode()) {
  ------------------
  |  Branch (4824:12): [True: 0, False: 67]
  ------------------
 4825|      0|      case ARM::tBcc: Inst.setOpcode(ARM::tB); break;
  ------------------
  |  Branch (4825:7): [True: 0, False: 67]
  ------------------
 4826|      0|      case ARM::t2Bcc: Inst.setOpcode(ARM::t2B); break;
  ------------------
  |  Branch (4826:7): [True: 0, False: 67]
  ------------------
 4827|     67|    }
 4828|  2.75k|  } else {
 4829|       |    // outside IT blocks we can only have unconditional branches with AL
 4830|       |    // condition code or conditional branches with non-AL condition code
 4831|  2.75k|    unsigned Cond = static_cast<ARMOperand &>(*Operands[CondOp]).getCondCode();
 4832|  2.75k|    switch(Inst.getOpcode()) {
  ------------------
  |  Branch (4832:12): [True: 2.75k, False: 0]
  ------------------
 4833|  2.64k|      case ARM::tB:
  ------------------
  |  Branch (4833:7): [True: 2.64k, False: 106]
  ------------------
 4834|  2.64k|      case ARM::tBcc: 
  ------------------
  |  Branch (4834:7): [True: 0, False: 2.75k]
  ------------------
 4835|  2.64k|        Inst.setOpcode(Cond == ARMCC::AL ? ARM::tB : ARM::tBcc); 
  ------------------
  |  Branch (4835:24): [True: 1.89k, False: 750]
  ------------------
 4836|  2.64k|        break;
 4837|    106|      case ARM::t2B:
  ------------------
  |  Branch (4837:7): [True: 106, False: 2.64k]
  ------------------
 4838|    106|      case ARM::t2Bcc: 
  ------------------
  |  Branch (4838:7): [True: 0, False: 2.75k]
  ------------------
 4839|    106|        Inst.setOpcode(Cond == ARMCC::AL ? ARM::t2B : ARM::t2Bcc);
  ------------------
  |  Branch (4839:24): [True: 10, False: 96]
  ------------------
 4840|    106|        break;
 4841|  2.75k|    }
 4842|  2.75k|  }
 4843|       |
 4844|       |  // now decide on encoding size based on branch target range
 4845|  2.82k|  switch(Inst.getOpcode()) {
  ------------------
  |  Branch (4845:10): [True: 2.71k, False: 106]
  ------------------
 4846|       |    // classify tB as either t2B or t1B based on range of immediate operand
 4847|  1.96k|    case ARM::tB: {
  ------------------
  |  Branch (4847:5): [True: 1.96k, False: 856]
  ------------------
 4848|  1.96k|      ARMOperand &op = static_cast<ARMOperand &>(*Operands[ImmOp]);
 4849|  1.96k|      if (!op.isSignedOffsetRel<11, 1>(Inst.getAddress()) && isThumb() && hasV8MBaseline())
  ------------------
  |  Branch (4849:11): [True: 426, False: 1.53k]
  |  Branch (4849:62): [True: 426, False: 0]
  |  Branch (4849:75): [True: 423, False: 3]
  ------------------
 4850|    423|        Inst.setOpcode(ARM::t2B);
 4851|  1.96k|      break;
 4852|      0|    }
 4853|       |    // classify tBcc as either t2Bcc or t1Bcc based on range of immediate operand
 4854|    750|    case ARM::tBcc: {
  ------------------
  |  Branch (4854:5): [True: 750, False: 2.07k]
  ------------------
 4855|    750|      ARMOperand &op = static_cast<ARMOperand &>(*Operands[ImmOp]);
 4856|    750|      if (!op.isSignedOffsetRel<8, 1>(Inst.getAddress()) && isThumb() && hasV8MBaseline())
  ------------------
  |  Branch (4856:11): [True: 262, False: 488]
  |  Branch (4856:61): [True: 262, False: 0]
  |  Branch (4856:74): [True: 239, False: 23]
  ------------------
 4857|    239|        Inst.setOpcode(ARM::t2Bcc);
 4858|    750|      break;
 4859|      0|    }
 4860|  2.82k|  }
 4861|  2.82k|  ((ARMOperand &)*Operands[ImmOp]).addImmOperands(Inst, 1);
 4862|  2.82k|  ((ARMOperand &)*Operands[CondOp]).addCondCodeOperands(Inst, 2);
 4863|  2.82k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isSignedOffsetRelILj11ELj1EEEbl:
  699|  3.50k|  bool isSignedOffsetRel(int64_t Addr) const {
  700|  3.50k|    if (!isImm()) return false;
  ------------------
  |  Branch (700:9): [True: 0, False: 3.50k]
  ------------------
  701|  3.50k|    if (isa<MCSymbolRefExpr>(Imm.Val)) return true;
  ------------------
  |  Branch (701:9): [True: 1.68k, False: 1.82k]
  ------------------
  702|  1.82k|    if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Imm.Val)) {
  ------------------
  |  Branch (702:31): [True: 1.81k, False: 4]
  ------------------
  703|  1.81k|      int64_t Val = CE->getValue() - Addr;
  704|  1.81k|      int64_t Align = 1LL << scale;
  705|  1.81k|      int64_t Max = Align * ((1LL << (width-1)) - 1);
  706|  1.81k|      int64_t Min = -Align * (1LL << (width-1));
  707|  1.81k|      return ((Val % Align) == 0) && (Val >= Min) && (Val <= Max);
  ------------------
  |  Branch (707:14): [True: 1.80k, False: 8]
  |  Branch (707:38): [True: 1.73k, False: 79]
  |  Branch (707:54): [True: 1.39k, False: 338]
  ------------------
  708|  1.81k|    }
  709|      4|    return false;
  710|  1.82k|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser14hasV8MBaselineEv:
  273|    688|  bool hasV8MBaseline() const {
  274|    688|    return getSTI().getFeatureBits()[ARM::HasV8MBaselineOps];
  275|    688|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isSignedOffsetRelILj8ELj1EEEbl:
  699|  1.26k|  bool isSignedOffsetRel(int64_t Addr) const {
  700|  1.26k|    if (!isImm()) return false;
  ------------------
  |  Branch (700:9): [True: 0, False: 1.26k]
  ------------------
  701|  1.26k|    if (isa<MCSymbolRefExpr>(Imm.Val)) return true;
  ------------------
  |  Branch (701:9): [True: 724, False: 537]
  ------------------
  702|    537|    if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Imm.Val)) {
  ------------------
  |  Branch (702:31): [True: 534, False: 3]
  ------------------
  703|    534|      int64_t Val = CE->getValue() - Addr;
  704|    534|      int64_t Align = 1LL << scale;
  705|    534|      int64_t Max = Align * ((1LL << (width-1)) - 1);
  706|    534|      int64_t Min = -Align * (1LL << (width-1));
  707|    534|      return ((Val % Align) == 0) && (Val >= Min) && (Val <= Max);
  ------------------
  |  Branch (707:14): [True: 531, False: 3]
  |  Branch (707:38): [True: 486, False: 45]
  |  Branch (707:54): [True: 252, False: 234]
  ------------------
  708|    534|    }
  709|      3|    return false;
  710|    537|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand19addBitfieldOperandsERN7llvm_ks6MCInstEj:
 1842|      3|  void addBitfieldOperands(MCInst &Inst, unsigned N) const {
 1843|      3|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1843:5): [True: 3, False: 0]
  |  Branch (1843:5): [True: 3, Folded]
  |  Branch (1843:5): [True: 3, False: 0]
  ------------------
 1844|       |    // Munge the lsb/width into a bitfield mask.
 1845|      3|    unsigned lsb = Bitfield.LSB;
 1846|      3|    unsigned width = Bitfield.Width;
 1847|       |    // Make a 32-bit mask w/ the referenced bits clear and all other bits set.
 1848|      3|    uint32_t Mask = ~(((uint32_t)0xffffffff >> lsb) << (32 - width) >>
 1849|      3|                      (32 - (lsb + width)));
 1850|      3|    Inst.addOperand(MCOperand::createImm(Mask));
 1851|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20addCoprocNumOperandsERN7llvm_ks6MCInstEj:
 1734|    311|  void addCoprocNumOperands(MCInst &Inst, unsigned N) const {
 1735|    311|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1735:5): [True: 311, False: 0]
  |  Branch (1735:5): [True: 311, Folded]
  |  Branch (1735:5): [True: 311, False: 0]
  ------------------
 1736|    311|    Inst.addOperand(MCOperand::createImm(getCoproc()));
 1737|    311|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20addCoprocRegOperandsERN7llvm_ks6MCInstEj:
 1739|    311|  void addCoprocRegOperands(MCInst &Inst, unsigned N) const {
 1740|    311|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1740:5): [True: 311, False: 0]
  |  Branch (1740:5): [True: 311, Folded]
  |  Branch (1740:5): [True: 311, False: 0]
  ------------------
 1741|    311|    Inst.addOperand(MCOperand::createImm(getCoproc()));
 1742|    311|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addProcIFlagsOperandsERN7llvm_ks6MCInstEj:
 2396|     40|  void addProcIFlagsOperands(MCInst &Inst, unsigned N) const {
 2397|     40|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2397:5): [True: 40, False: 0]
  |  Branch (2397:5): [True: 40, Folded]
  |  Branch (2397:5): [True: 40, False: 0]
  ------------------
 2398|     40|    Inst.addOperand(MCOperand::createImm(unsigned(getProcIFlags())));
 2399|     40|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24addMemBarrierOptOperandsERN7llvm_ks6MCInstEj:
 1998|    754|  void addMemBarrierOptOperands(MCInst &Inst, unsigned N) const {
 1999|    754|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1999:5): [True: 754, False: 0]
  |  Branch (1999:5): [True: 754, Folded]
  |  Branch (1999:5): [True: 754, False: 0]
  ------------------
 2000|    754|    Inst.addOperand(MCOperand::createImm(unsigned(getMemBarrierOpt())));
 2001|    754|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand16addFPImmOperandsERN7llvm_ks6MCInstEj:
 1870|    110|  void addFPImmOperands(MCInst &Inst, unsigned N) const {
 1871|    110|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1871:5): [True: 110, False: 0]
  |  Branch (1871:5): [True: 110, Folded]
  |  Branch (1871:5): [True: 110, False: 0]
  ------------------
 1872|    110|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1873|    110|    int Val = ARM_AM::getFP32Imm(APInt(32, CE->getValue()));
 1874|    110|    Inst.addOperand(MCOperand::createImm(Val));
 1875|    110|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand29addInstSyncBarrierOptOperandsERN7llvm_ks6MCInstEj:
 2003|    264|  void addInstSyncBarrierOptOperands(MCInst &Inst, unsigned N) const {
 2004|    264|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2004:5): [True: 264, False: 0]
  |  Branch (2004:5): [True: 264, Folded]
  |  Branch (2004:5): [True: 264, False: 0]
  ------------------
 2005|    264|    Inst.addOperand(MCOperand::createImm(unsigned(getInstSyncBarrierOpt())));
 2006|    264|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addITCondCodeOperandsERN7llvm_ks6MCInstEj:
 1754|    431|  void addITCondCodeOperands(MCInst &Inst, unsigned N) const {
 1755|    431|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1755:5): [True: 431, False: 0]
  |  Branch (1755:5): [True: 431, Folded]
  |  Branch (1755:5): [True: 431, False: 0]
  ------------------
 1756|    431|    Inst.addOperand(MCOperand::createImm(unsigned(getCondCode())));
 1757|    431|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17addITMaskOperandsERN7llvm_ks6MCInstEj:
 1749|    431|  void addITMaskOperands(MCInst &Inst, unsigned N) const {
 1750|    431|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1750:5): [True: 431, False: 0]
  |  Branch (1750:5): [True: 431, Folded]
  |  Branch (1750:5): [True: 431, False: 0]
  ------------------
 1751|    431|    Inst.addOperand(MCOperand::createImm(ITMask.Mask));
 1752|    431|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22addMemNoOffsetOperandsERN7llvm_ks6MCInstEj:
 2008|    697|  void addMemNoOffsetOperands(MCInst &Inst, unsigned N) const {
 2009|    697|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2009:5): [True: 697, False: 0]
  |  Branch (2009:5): [True: 697, Folded]
  |  Branch (2009:5): [True: 697, False: 0]
  ------------------
 2010|    697|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2011|    697|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20addAddrMode5OperandsERN7llvm_ks6MCInstEj:
 2170|    539|  void addAddrMode5Operands(MCInst &Inst, unsigned N) const {
 2171|    539|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2171:5): [True: 539, False: 0]
  |  Branch (2171:5): [True: 539, Folded]
  |  Branch (2171:5): [True: 539, False: 0]
  ------------------
 2172|       |    // If we have an immediate that's not a constant, treat it as a label
 2173|       |    // reference needing a fixup. If it is a constant, it's something else
 2174|       |    // and we reject it.
 2175|    539|    if (isImm()) {
  ------------------
  |  Branch (2175:9): [True: 537, False: 2]
  ------------------
 2176|    537|      Inst.addOperand(MCOperand::createExpr(getImm()));
 2177|    537|      Inst.addOperand(MCOperand::createImm(0));
 2178|    537|      return;
 2179|    537|    }
 2180|       |
 2181|       |    // The lower two bits are always zero and as such are not encoded.
 2182|      2|    int32_t Val = Memory.OffsetImm ? Memory.OffsetImm->getValue() / 4 : 0;
  ------------------
  |  Branch (2182:19): [True: 1, False: 1]
  ------------------
 2183|      2|    ARM_AM::AddrOpc AddSub = Val < 0 ? ARM_AM::sub : ARM_AM::add;
  ------------------
  |  Branch (2183:30): [True: 1, False: 1]
  ------------------
 2184|       |    // Special case for #-0
 2185|      2|    if (Val == INT32_MIN) Val = 0;
  ------------------
  |  Branch (2185:9): [True: 0, False: 2]
  ------------------
 2186|      2|    if (Val < 0) Val = -Val;
  ------------------
  |  Branch (2186:9): [True: 1, False: 1]
  ------------------
 2187|      2|    Val = ARM_AM::getAM5Opc(AddSub, Val);
 2188|      2|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2189|      2|    Inst.addOperand(MCOperand::createImm(Val));
 2190|      2|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addThumbMemPCOperandsERN7llvm_ks6MCInstEj:
 1978|    517|  void addThumbMemPCOperands(MCInst &Inst, unsigned N) const {
 1979|    517|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (1979:5): [True: 517, False: 0]
  |  Branch (1979:5): [True: 517, Folded]
  |  Branch (1979:5): [True: 517, False: 0]
  ------------------
 1980|    517|    if (isImm()) {
  ------------------
  |  Branch (1980:9): [True: 517, False: 0]
  ------------------
 1981|    517|      const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 1982|    517|      if (CE) {
  ------------------
  |  Branch (1982:11): [True: 8, False: 509]
  ------------------
 1983|      8|        Inst.addOperand(MCOperand::createImm(CE->getValue()));
 1984|      8|        return;
 1985|      8|      }
 1986|       |
 1987|    509|      const MCSymbolRefExpr *SR = dyn_cast<MCSymbolRefExpr>(Imm.Val);
 1988|    509|      assert(SR && "Unknown value type!");
  ------------------
  |  Branch (1988:7): [True: 509, False: 0]
  |  Branch (1988:7): [True: 509, Folded]
  |  Branch (1988:7): [True: 509, False: 0]
  ------------------
 1989|    509|      Inst.addOperand(MCOperand::createExpr(SR));
 1990|    509|      return;
 1991|    509|    }
 1992|       |
 1993|    517|    assert(isMem()  && "Unknown value type!");
  ------------------
  |  Branch (1993:5): [True: 0, False: 0]
  |  Branch (1993:5): [True: 0, Folded]
  |  Branch (1993:5): [True: 0, False: 0]
  ------------------
 1994|      0|    assert(isa<MCConstantExpr>(Memory.OffsetImm) && "Unknown value type!");
  ------------------
  |  Branch (1994:5): [True: 0, False: 0]
  |  Branch (1994:5): [True: 0, Folded]
  |  Branch (1994:5): [True: 0, False: 0]
  ------------------
 1995|      0|    Inst.addOperand(MCOperand::createImm(Memory.OffsetImm->getValue()));
 1996|      0|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addMemThumbRIs4OperandsERN7llvm_ks6MCInstEj:
 2318|     22|  void addMemThumbRIs4Operands(MCInst &Inst, unsigned N) const {
 2319|     22|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2319:5): [True: 22, False: 0]
  |  Branch (2319:5): [True: 22, Folded]
  |  Branch (2319:5): [True: 22, False: 0]
  ------------------
 2320|     22|    int64_t Val = Memory.OffsetImm ? (Memory.OffsetImm->getValue() / 4) : 0;
  ------------------
  |  Branch (2320:19): [True: 15, False: 7]
  ------------------
 2321|     22|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2322|     22|    Inst.addOperand(MCOperand::createImm(Val));
 2323|     22|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand21addMemThumbRROperandsERN7llvm_ks6MCInstEj:
 2312|      7|  void addMemThumbRROperands(MCInst &Inst, unsigned N) const {
 2313|      7|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2313:5): [True: 7, False: 0]
  |  Branch (2313:5): [True: 7, Folded]
  |  Branch (2313:5): [True: 7, False: 0]
  ------------------
 2314|      7|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2315|      7|    Inst.addOperand(MCOperand::createReg(Memory.OffsetRegNum));
 2316|      7|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25addMemImm12OffsetOperandsERN7llvm_ks6MCInstEj:
 2268|    833|  void addMemImm12OffsetOperands(MCInst &Inst, unsigned N) const {
 2269|    833|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2269:5): [True: 833, False: 0]
  |  Branch (2269:5): [True: 833, Folded]
  |  Branch (2269:5): [True: 833, False: 0]
  ------------------
 2270|       |    // If this is an immediate, it's a label reference.
 2271|    833|    if (isImm()) {
  ------------------
  |  Branch (2271:9): [True: 789, False: 44]
  ------------------
 2272|    789|      addExpr(Inst, getImm());
 2273|    789|      Inst.addOperand(MCOperand::createImm(0));
 2274|    789|      return;
 2275|    789|    }
 2276|       |
 2277|       |    // Otherwise, it's a normal memory reg+offset.
 2278|     44|    int64_t Val = Memory.OffsetImm ? Memory.OffsetImm->getValue() : 0;
  ------------------
  |  Branch (2278:19): [True: 22, False: 22]
  ------------------
 2279|     44|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2280|     44|    Inst.addOperand(MCOperand::createImm(Val));
 2281|     44|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addMemRegOffsetOperandsERN7llvm_ks6MCInstEj:
 2295|     16|  void addMemRegOffsetOperands(MCInst &Inst, unsigned N) const {
 2296|     16|    assert(N == 3 && "Invalid number of operands!");
  ------------------
  |  Branch (2296:5): [True: 16, False: 0]
  |  Branch (2296:5): [True: 16, Folded]
  |  Branch (2296:5): [True: 16, False: 0]
  ------------------
 2297|     16|    unsigned Val =
 2298|     16|      ARM_AM::getAM2Opc(Memory.isNegative ? ARM_AM::sub : ARM_AM::add,
  ------------------
  |  Branch (2298:25): [True: 0, False: 16]
  ------------------
 2299|     16|                        Memory.ShiftImm, Memory.ShiftType);
 2300|     16|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2301|     16|    Inst.addOperand(MCOperand::createReg(Memory.OffsetRegNum));
 2302|     16|    Inst.addOperand(MCOperand::createImm(Val));
 2303|     16|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26addMemUImm12OffsetOperandsERN7llvm_ks6MCInstEj:
 2253|     57|  void addMemUImm12OffsetOperands(MCInst &Inst, unsigned N) const {
 2254|     57|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2254:5): [True: 57, False: 0]
  |  Branch (2254:5): [True: 57, Folded]
  |  Branch (2254:5): [True: 57, False: 0]
  ------------------
 2255|       |    // If this is an immediate, it's a label reference.
 2256|     57|    if (isImm()) {
  ------------------
  |  Branch (2256:9): [True: 0, False: 57]
  ------------------
 2257|      0|      addExpr(Inst, getImm());
 2258|      0|      Inst.addOperand(MCOperand::createImm(0));
 2259|      0|      return;
 2260|      0|    }
 2261|       |
 2262|       |    // Otherwise, it's a normal memory reg+offset.
 2263|     57|    int64_t Val = Memory.OffsetImm ? Memory.OffsetImm->getValue() : 0;
  ------------------
  |  Branch (2263:19): [True: 44, False: 13]
  ------------------
 2264|     57|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2265|     57|    Inst.addOperand(MCOperand::createImm(Val));
 2266|     57|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25addT2MemRegOffsetOperandsERN7llvm_ks6MCInstEj:
 2305|      8|  void addT2MemRegOffsetOperands(MCInst &Inst, unsigned N) const {
 2306|      8|    assert(N == 3 && "Invalid number of operands!");
  ------------------
  |  Branch (2306:5): [True: 8, False: 0]
  |  Branch (2306:5): [True: 8, Folded]
  |  Branch (2306:5): [True: 8, False: 0]
  ------------------
 2307|      8|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2308|      8|    Inst.addOperand(MCOperand::createReg(Memory.OffsetRegNum));
 2309|      8|    Inst.addOperand(MCOperand::createImm(Memory.ShiftImm));
 2310|      8|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand24addMemImm8OffsetOperandsERN7llvm_ks6MCInstEj:
 2238|     21|  void addMemImm8OffsetOperands(MCInst &Inst, unsigned N) const {
 2239|     21|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2239:5): [True: 21, False: 0]
  |  Branch (2239:5): [True: 21, Folded]
  |  Branch (2239:5): [True: 21, False: 0]
  ------------------
 2240|     21|    int64_t Val = Memory.OffsetImm ? Memory.OffsetImm->getValue() : 0;
  ------------------
  |  Branch (2240:19): [True: 17, False: 4]
  ------------------
 2241|     21|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2242|     21|    Inst.addOperand(MCOperand::createImm(Val));
 2243|     21|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addAM2OffsetImmOperandsERN7llvm_ks6MCInstEj:
 2105|    575|  void addAM2OffsetImmOperands(MCInst &Inst, unsigned N) const {
 2106|    575|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2106:5): [True: 575, False: 0]
  |  Branch (2106:5): [True: 575, Folded]
  |  Branch (2106:5): [True: 575, False: 0]
  ------------------
 2107|    575|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2108|    575|    assert(CE && "non-constant AM2OffsetImm operand!");
  ------------------
  |  Branch (2108:5): [True: 575, False: 0]
  |  Branch (2108:5): [True: 575, Folded]
  |  Branch (2108:5): [True: 575, False: 0]
  ------------------
 2109|    575|    int32_t Val = CE->getValue();
 2110|    575|    ARM_AM::AddrOpc AddSub = Val < 0 ? ARM_AM::sub : ARM_AM::add;
  ------------------
  |  Branch (2110:30): [True: 1, False: 574]
  ------------------
 2111|       |    // Special case for #-0
 2112|    575|    if (Val == INT32_MIN) Val = 0;
  ------------------
  |  Branch (2112:9): [True: 0, False: 575]
  ------------------
 2113|    575|    if (Val < 0) Val = -Val;
  ------------------
  |  Branch (2113:9): [True: 1, False: 574]
  ------------------
 2114|    575|    Val = ARM_AM::getAM2Opc(AddSub, Val, ARM_AM::no_shift);
 2115|    575|    Inst.addOperand(MCOperand::createReg(0));
 2116|    575|    Inst.addOperand(MCOperand::createImm(Val));
 2117|    575|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand28addPostIdxRegShiftedOperandsERN7llvm_ks6MCInstEj:
 2375|     38|  void addPostIdxRegShiftedOperands(MCInst &Inst, unsigned N) const {
 2376|     38|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2376:5): [True: 38, False: 0]
  |  Branch (2376:5): [True: 38, Folded]
  |  Branch (2376:5): [True: 38, False: 0]
  ------------------
 2377|     38|    Inst.addOperand(MCOperand::createReg(PostIdxReg.RegNum));
 2378|       |    // The sign, shift type, and shift amount are encoded in a single operand
 2379|       |    // using the AM2 encoding helpers.
 2380|     38|    ARM_AM::AddrOpc opc = PostIdxReg.isAdd ? ARM_AM::add : ARM_AM::sub;
  ------------------
  |  Branch (2380:27): [True: 38, False: 0]
  ------------------
 2381|     38|    unsigned Imm = ARM_AM::getAM2Opc(opc, PostIdxReg.ShiftImm,
 2382|     38|                                     PostIdxReg.ShiftTy);
 2383|     38|    Inst.addOperand(MCOperand::createImm(Imm));
 2384|     38|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addMemThumbRIs1OperandsERN7llvm_ks6MCInstEj:
 2332|     30|  void addMemThumbRIs1Operands(MCInst &Inst, unsigned N) const {
 2333|     30|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2333:5): [True: 30, False: 0]
  |  Branch (2333:5): [True: 30, Folded]
  |  Branch (2333:5): [True: 30, False: 0]
  ------------------
 2334|     30|    int64_t Val = Memory.OffsetImm ? (Memory.OffsetImm->getValue()) : 0;
  ------------------
  |  Branch (2334:19): [True: 17, False: 13]
  ------------------
 2335|     30|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2336|     30|    Inst.addOperand(MCOperand::createImm(Val));
 2337|     30|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand27addMemPosImm8OffsetOperandsERN7llvm_ks6MCInstEj:
 2245|     20|  void addMemPosImm8OffsetOperands(MCInst &Inst, unsigned N) const {
 2246|     20|    addMemImm8OffsetOperands(Inst, N);
 2247|     20|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26addMemImm8s4OffsetOperandsERN7llvm_ks6MCInstEj:
 2214|     14|  void addMemImm8s4OffsetOperands(MCInst &Inst, unsigned N) const {
 2215|     14|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2215:5): [True: 14, False: 0]
  |  Branch (2215:5): [True: 14, Folded]
  |  Branch (2215:5): [True: 14, False: 0]
  ------------------
 2216|       |    // If we have an immediate that's not a constant, treat it as a label
 2217|       |    // reference needing a fixup. If it is a constant, it's something else
 2218|       |    // and we reject it.
 2219|     14|    if (isImm()) {
  ------------------
  |  Branch (2219:9): [True: 10, False: 4]
  ------------------
 2220|     10|      Inst.addOperand(MCOperand::createExpr(getImm()));
 2221|     10|      Inst.addOperand(MCOperand::createImm(0));
 2222|     10|      return;
 2223|     10|    }
 2224|       |
 2225|      4|    int64_t Val = Memory.OffsetImm ? Memory.OffsetImm->getValue() : 0;
  ------------------
  |  Branch (2225:19): [True: 1, False: 3]
  ------------------
 2226|      4|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2227|      4|    Inst.addOperand(MCOperand::createImm(Val));
 2228|      4|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20addAddrMode3OperandsERN7llvm_ks6MCInstEj:
 2119|    962|  void addAddrMode3Operands(MCInst &Inst, unsigned N) const {
 2120|    962|    assert(N == 3 && "Invalid number of operands!");
  ------------------
  |  Branch (2120:5): [True: 962, False: 0]
  |  Branch (2120:5): [True: 962, Folded]
  |  Branch (2120:5): [True: 962, False: 0]
  ------------------
 2121|       |    // If we have an immediate that's not a constant, treat it as a label
 2122|       |    // reference needing a fixup. If it is a constant, it's something else
 2123|       |    // and we reject it.
 2124|    962|    if (isImm()) {
  ------------------
  |  Branch (2124:9): [True: 930, False: 32]
  ------------------
 2125|    930|      Inst.addOperand(MCOperand::createExpr(getImm()));
 2126|    930|      Inst.addOperand(MCOperand::createReg(0));
 2127|    930|      Inst.addOperand(MCOperand::createImm(0));
 2128|    930|      return;
 2129|    930|    }
 2130|       |
 2131|     32|    int32_t Val = Memory.OffsetImm ? Memory.OffsetImm->getValue() : 0;
  ------------------
  |  Branch (2131:19): [True: 10, False: 22]
  ------------------
 2132|     32|    if (!Memory.OffsetRegNum) {
  ------------------
  |  Branch (2132:9): [True: 16, False: 16]
  ------------------
 2133|     16|      ARM_AM::AddrOpc AddSub = Val < 0 ? ARM_AM::sub : ARM_AM::add;
  ------------------
  |  Branch (2133:32): [True: 0, False: 16]
  ------------------
 2134|       |      // Special case for #-0
 2135|     16|      if (Val == INT32_MIN) Val = 0;
  ------------------
  |  Branch (2135:11): [True: 0, False: 16]
  ------------------
 2136|     16|      if (Val < 0) Val = -Val;
  ------------------
  |  Branch (2136:11): [True: 0, False: 16]
  ------------------
 2137|     16|      Val = ARM_AM::getAM3Opc(AddSub, Val);
 2138|     16|    } else {
 2139|       |      // For register offset, we encode the shift type and negation flag
 2140|       |      // here.
 2141|     16|      Val = ARM_AM::getAM3Opc(Memory.isNegative ? ARM_AM::sub : ARM_AM::add, 0);
  ------------------
  |  Branch (2141:31): [True: 3, False: 13]
  ------------------
 2142|     16|    }
 2143|     32|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2144|     32|    Inst.addOperand(MCOperand::createReg(Memory.OffsetRegNum));
 2145|     32|    Inst.addOperand(MCOperand::createImm(Val));
 2146|     32|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand20addAM3OffsetOperandsERN7llvm_ks6MCInstEj:
 2148|     38|  void addAM3OffsetOperands(MCInst &Inst, unsigned N) const {
 2149|     38|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2149:5): [True: 38, False: 0]
  |  Branch (2149:5): [True: 38, Folded]
  |  Branch (2149:5): [True: 38, False: 0]
  ------------------
 2150|     38|    if (Kind == k_PostIndexRegister) {
  ------------------
  |  Branch (2150:9): [True: 8, False: 30]
  ------------------
 2151|      8|      int32_t Val =
 2152|      8|        ARM_AM::getAM3Opc(PostIdxReg.isAdd ? ARM_AM::add : ARM_AM::sub, 0);
  ------------------
  |  Branch (2152:27): [True: 8, False: 0]
  ------------------
 2153|      8|      Inst.addOperand(MCOperand::createReg(PostIdxReg.RegNum));
 2154|      8|      Inst.addOperand(MCOperand::createImm(Val));
 2155|      8|      return;
 2156|      8|    }
 2157|       |
 2158|       |    // Constant offset.
 2159|     30|    const MCConstantExpr *CE = static_cast<const MCConstantExpr*>(getImm());
 2160|     30|    int32_t Val = CE->getValue();
 2161|     30|    ARM_AM::AddrOpc AddSub = Val < 0 ? ARM_AM::sub : ARM_AM::add;
  ------------------
  |  Branch (2161:30): [True: 1, False: 29]
  ------------------
 2162|       |    // Special case for #-0
 2163|     30|    if (Val == INT32_MIN) Val = 0;
  ------------------
  |  Branch (2163:9): [True: 0, False: 30]
  ------------------
 2164|     30|    if (Val < 0) Val = -Val;
  ------------------
  |  Branch (2164:9): [True: 1, False: 29]
  ------------------
 2165|     30|    Val = ARM_AM::getAM3Opc(AddSub, Val);
 2166|     30|    Inst.addOperand(MCOperand::createReg(0));
 2167|     30|    Inst.addOperand(MCOperand::createImm(Val));
 2168|     30|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addMemThumbRIs2OperandsERN7llvm_ks6MCInstEj:
 2325|      6|  void addMemThumbRIs2Operands(MCInst &Inst, unsigned N) const {
 2326|      6|    assert(N == 2 && "Invalid number of operands!");
  ------------------
  |  Branch (2326:5): [True: 6, False: 0]
  |  Branch (2326:5): [True: 6, Folded]
  |  Branch (2326:5): [True: 6, False: 0]
  ------------------
 2327|      6|    int64_t Val = Memory.OffsetImm ? (Memory.OffsetImm->getValue() / 2) : 0;
  ------------------
  |  Branch (2327:19): [True: 3, False: 3]
  ------------------
 2328|      6|    Inst.addOperand(MCOperand::createReg(Memory.BaseRegNum));
 2329|      6|    Inst.addOperand(MCOperand::createImm(Val));
 2330|      6|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand18addMSRMaskOperandsERN7llvm_ks6MCInstEj:
 2386|     83|  void addMSRMaskOperands(MCInst &Inst, unsigned N) const {
 2387|     83|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2387:5): [True: 83, False: 0]
  |  Branch (2387:5): [True: 83, Folded]
  |  Branch (2387:5): [True: 83, False: 0]
  ------------------
 2388|     83|    Inst.addOperand(MCOperand::createImm(unsigned(getMSRMask())));
 2389|     83|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser16cvtThumbMultiplyERN7llvm_ks6MCInstERKNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS5_14default_deleteIS7_EEEEEE:
 4792|     42|                                    const OperandVector &Operands) {
 4793|     42|  ((ARMOperand &)*Operands[3]).addRegOperands(Inst, 1);
 4794|     42|  ((ARMOperand &)*Operands[1]).addCCOutOperands(Inst, 1);
 4795|       |  // If we have a three-operand form, make sure to set Rn to be the operand
 4796|       |  // that isn't the same as Rd.
 4797|     42|  unsigned RegOp = 4;
 4798|     42|  if (Operands.size() == 6 &&
  ------------------
  |  Branch (4798:7): [True: 26, False: 16]
  ------------------
 4799|     26|      ((ARMOperand &)*Operands[4]).getReg() ==
  ------------------
  |  Branch (4799:7): [True: 15, False: 11]
  ------------------
 4800|     26|          ((ARMOperand &)*Operands[3]).getReg())
 4801|     15|    RegOp = 5;
 4802|     42|  ((ARMOperand &)*Operands[RegOp]).addRegOperands(Inst, 1);
 4803|     42|  Inst.addOperand(Inst.getOperand(0));
 4804|     42|  ((ARMOperand &)*Operands[2]).addCondCodeOperands(Inst, 2);
 4805|     42|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26addNEONi16splatNotOperandsERN7llvm_ks6MCInstEj:
 2444|      3|  void addNEONi16splatNotOperands(MCInst &Inst, unsigned N) const {
 2445|      3|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2445:5): [True: 3, False: 0]
  |  Branch (2445:5): [True: 3, Folded]
  |  Branch (2445:5): [True: 3, False: 0]
  ------------------
 2446|       |    // The immediate encodes the type of constant as well as the value.
 2447|      3|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2448|      3|    unsigned Value = CE->getValue();
 2449|      3|    Value = ARM_AM::encodeNEONi16splat(~Value & 0xffff);
 2450|      3|    Inst.addOperand(MCOperand::createImm(Value));
 2451|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand26addNEONi32splatNotOperandsERN7llvm_ks6MCInstEj:
 2462|     13|  void addNEONi32splatNotOperands(MCInst &Inst, unsigned N) const {
 2463|     13|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2463:5): [True: 13, False: 0]
  |  Branch (2463:5): [True: 13, Folded]
  |  Branch (2463:5): [True: 13, False: 0]
  ------------------
 2464|       |    // The immediate encodes the type of constant as well as the value.
 2465|     13|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2466|     13|    unsigned Value = CE->getValue();
 2467|     13|    Value = ARM_AM::encodeNEONi32splat(~Value);
 2468|     13|    Inst.addOperand(MCOperand::createImm(Value));
 2469|     13|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addNEONi16splatOperandsERN7llvm_ks6MCInstEj:
 2435|     27|  void addNEONi16splatOperands(MCInst &Inst, unsigned N) const {
 2436|     27|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2436:5): [True: 27, False: 0]
  |  Branch (2436:5): [True: 27, Folded]
  |  Branch (2436:5): [True: 27, False: 0]
  ------------------
 2437|       |    // The immediate encodes the type of constant as well as the value.
 2438|     27|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2439|     27|    unsigned Value = CE->getValue();
 2440|     27|    Value = ARM_AM::encodeNEONi16splat(Value);
 2441|     27|    Inst.addOperand(MCOperand::createImm(Value));
 2442|     27|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addNEONi32splatOperandsERN7llvm_ks6MCInstEj:
 2453|      3|  void addNEONi32splatOperands(MCInst &Inst, unsigned N) const {
 2454|      3|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2454:5): [True: 3, False: 0]
  |  Branch (2454:5): [True: 3, Folded]
  |  Branch (2454:5): [True: 3, False: 0]
  ------------------
 2455|       |    // The immediate encodes the type of constant as well as the value.
 2456|      3|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2457|      3|    unsigned Value = CE->getValue();
 2458|      3|    Value = ARM_AM::encodeNEONi32splat(Value);
 2459|      3|    Inst.addOperand(MCOperand::createImm(Value));
 2460|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22addNEONi32vmovOperandsERN7llvm_ks6MCInstEj:
 2484|     97|  void addNEONi32vmovOperands(MCInst &Inst, unsigned N) const {
 2485|     97|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2485:5): [True: 97, False: 0]
  |  Branch (2485:5): [True: 97, Folded]
  |  Branch (2485:5): [True: 97, False: 0]
  ------------------
 2486|       |    // The immediate encodes the type of constant as well as the value.
 2487|     97|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2488|     97|    unsigned Value = CE->getValue();
 2489|     97|    if (Value >= 256 && Value <= 0xffff)
  ------------------
  |  Branch (2489:9): [True: 74, False: 23]
  |  Branch (2489:25): [True: 36, False: 38]
  ------------------
 2490|     36|      Value = (Value >> 8) | ((Value & 0xff) ? 0xc00 : 0x200);
  ------------------
  |  Branch (2490:31): [True: 35, False: 1]
  ------------------
 2491|     61|    else if (Value > 0xffff && Value <= 0xffffff)
  ------------------
  |  Branch (2491:14): [True: 38, False: 23]
  |  Branch (2491:32): [True: 14, False: 24]
  ------------------
 2492|     14|      Value = (Value >> 16) | ((Value & 0xff) ? 0xd00 : 0x400);
  ------------------
  |  Branch (2492:32): [True: 13, False: 1]
  ------------------
 2493|     47|    else if (Value > 0xffffff)
  ------------------
  |  Branch (2493:14): [True: 24, False: 23]
  ------------------
 2494|     24|      Value = (Value >> 24) | 0x600;
 2495|     97|    Inst.addOperand(MCOperand::createImm(Value));
 2496|     97|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand32addNEONvmovByteReplicateOperandsERN7llvm_ks6MCInstEj:
 2498|      3|  void addNEONvmovByteReplicateOperands(MCInst &Inst, unsigned N) const {
 2499|      3|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2499:5): [True: 3, False: 0]
  |  Branch (2499:5): [True: 3, Folded]
  |  Branch (2499:5): [True: 3, False: 0]
  ------------------
 2500|       |    // The immediate encodes the type of constant as well as the value.
 2501|      3|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2502|      3|    unsigned Value = CE->getValue();
 2503|      3|    assert((Inst.getOpcode() == ARM::VMOVv8i8 ||
  ------------------
  |  Branch (2503:5): [True: 2, False: 1]
  |  Branch (2503:5): [True: 1, False: 0]
  |  Branch (2503:5): [True: 3, Folded]
  |  Branch (2503:5): [True: 3, False: 0]
  ------------------
 2504|      3|            Inst.getOpcode() == ARM::VMOVv16i8) &&
 2505|      3|           "All instructions that wants to replicate non-zero byte "
 2506|      3|           "always must be replaced with VMOVv8i8 or VMOVv16i8.");
 2507|      3|    unsigned B = Value & 0xff;
 2508|      3|    B |= 0xe00; // cmode = 0b1110
 2509|      3|    Inst.addOperand(MCOperand::createImm(B));
 2510|      3|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand25addNEONi32vmovNegOperandsERN7llvm_ks6MCInstEj:
 2511|     63|  void addNEONi32vmovNegOperands(MCInst &Inst, unsigned N) const {
 2512|     63|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2512:5): [True: 63, False: 0]
  |  Branch (2512:5): [True: 63, Folded]
  |  Branch (2512:5): [True: 63, False: 0]
  ------------------
 2513|       |    // The immediate encodes the type of constant as well as the value.
 2514|     63|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2515|     63|    unsigned Value = ~CE->getValue();
 2516|     63|    if (Value >= 256 && Value <= 0xffff)
  ------------------
  |  Branch (2516:9): [True: 60, False: 3]
  |  Branch (2516:25): [True: 20, False: 40]
  ------------------
 2517|     20|      Value = (Value >> 8) | ((Value & 0xff) ? 0xc00 : 0x200);
  ------------------
  |  Branch (2517:31): [True: 19, False: 1]
  ------------------
 2518|     43|    else if (Value > 0xffff && Value <= 0xffffff)
  ------------------
  |  Branch (2518:14): [True: 40, False: 3]
  |  Branch (2518:32): [True: 21, False: 19]
  ------------------
 2519|     21|      Value = (Value >> 16) | ((Value & 0xff) ? 0xd00 : 0x400);
  ------------------
  |  Branch (2519:32): [True: 21, False: 0]
  ------------------
 2520|     22|    else if (Value > 0xffffff)
  ------------------
  |  Branch (2520:14): [True: 19, False: 3]
  ------------------
 2521|     19|      Value = (Value >> 24) | 0x600;
 2522|     63|    Inst.addOperand(MCOperand::createImm(Value));
 2523|     63|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand23addNEONi64splatOperandsERN7llvm_ks6MCInstEj:
 2525|      2|  void addNEONi64splatOperands(MCInst &Inst, unsigned N) const {
 2526|      2|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2526:5): [True: 2, False: 0]
  |  Branch (2526:5): [True: 2, Folded]
  |  Branch (2526:5): [True: 2, False: 0]
  ------------------
 2527|       |    // The immediate encodes the type of constant as well as the value.
 2528|      2|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2529|      2|    uint64_t Value = CE->getValue();
 2530|      2|    unsigned Imm = 0;
 2531|     18|    for (unsigned i = 0; i < 8; ++i, Value >>= 8) {
  ------------------
  |  Branch (2531:26): [True: 16, False: 2]
  ------------------
 2532|     16|      Imm |= (Value & 1) << i;
 2533|     16|    }
 2534|      2|    Inst.addOperand(MCOperand::createImm(Imm | 0x1e00));
 2535|      2|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand22addNEONi8splatOperandsERN7llvm_ks6MCInstEj:
 2427|      5|  void addNEONi8splatOperands(MCInst &Inst, unsigned N) const {
 2428|      5|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2428:5): [True: 5, False: 0]
  |  Branch (2428:5): [True: 5, Folded]
  |  Branch (2428:5): [True: 5, False: 0]
  ------------------
 2429|       |    // The immediate encodes the type of constant as well as the value.
 2430|       |    // Mask in that this is an i8 splat.
 2431|      5|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2432|      5|    Inst.addOperand(MCOperand::createImm(CE->getValue() | 0xe00));
 2433|      5|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand31addNEONinvByteReplicateOperandsERN7llvm_ks6MCInstEj:
 2471|      2|  void addNEONinvByteReplicateOperands(MCInst &Inst, unsigned N) const {
 2472|      2|    assert(N == 1 && "Invalid number of operands!");
  ------------------
  |  Branch (2472:5): [True: 2, False: 0]
  |  Branch (2472:5): [True: 2, Folded]
  |  Branch (2472:5): [True: 2, False: 0]
  ------------------
 2473|       |    // The immediate encodes the type of constant as well as the value.
 2474|      2|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm());
 2475|      2|    unsigned Value = CE->getValue();
 2476|      2|    assert((Inst.getOpcode() == ARM::VMOVv8i8 ||
  ------------------
  |  Branch (2476:5): [True: 1, False: 1]
  |  Branch (2476:5): [True: 1, False: 0]
  |  Branch (2476:5): [True: 2, Folded]
  |  Branch (2476:5): [True: 2, False: 0]
  ------------------
 2477|      2|            Inst.getOpcode() == ARM::VMOVv16i8) &&
 2478|      2|           "All vmvn instructions that wants to replicate non-zero byte "
 2479|      2|           "always must be replaced with VMOVv8i8 or VMOVv16i8.");
 2480|      2|    unsigned B = ((~Value) & 0xff);
 2481|      2|    B |= 0xe00; // cmode = 0b1110
 2482|      2|    Inst.addOperand(MCOperand::createImm(B));
 2483|      2|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser19validateInstructionERN7llvm_ks6MCInstERKNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS5_14default_deleteIS7_EEEEEE:
 6286|  29.8k|{
 6287|  29.8k|  const MCInstrDesc &MCID = MII.get(Inst.getOpcode());
 6288|       |  //SMLoc Loc = Operands[0]->getStartLoc();
 6289|       |
 6290|       |  // Check the IT block state first.
 6291|       |  // NOTE: BKPT and HLT instructions have the interesting property of being
 6292|       |  // allowed in IT blocks, but not being predicable. They just always execute.
 6293|  29.8k|  if (inITBlock() && !instIsBreakpoint(Inst)) {
  ------------------
  |  Branch (6293:7): [True: 525, False: 29.2k]
  |  Branch (6293:22): [True: 507, False: 18]
  ------------------
 6294|    507|    unsigned Bit = 1;
 6295|    507|    if (ITState.FirstCond)
  ------------------
  |  Branch (6295:9): [True: 365, False: 142]
  ------------------
 6296|    365|      ITState.FirstCond = false;
 6297|    142|    else
 6298|    142|      Bit = (ITState.Mask >> (5 - ITState.CurPosition)) & 1;
 6299|       |    // The instruction must be predicable.
 6300|    507|    if (!MCID.isPredicable())
  ------------------
  |  Branch (6300:9): [True: 17, False: 490]
  ------------------
 6301|       |      //return Error(Loc, "instructions in IT block must be predicable");
 6302|     17|      return true;
 6303|    490|    unsigned Cond = Inst.getOperand(MCID.findFirstPredOperandIdx()).getImm();
 6304|    490|    unsigned ITCond = Bit ? ITState.Cond :
  ------------------
  |  Branch (6304:23): [True: 489, False: 1]
  ------------------
 6305|    490|      ARMCC::getOppositeCondition(ITState.Cond);
 6306|    490|    if (Cond != ITCond) {
  ------------------
  |  Branch (6306:9): [True: 7, False: 483]
  ------------------
 6307|       |      // Find the condition code Operand to get its SMLoc information.
 6308|      7|      SMLoc CondLoc;
 6309|     29|      for (unsigned I = 1; I < Operands.size(); ++I)
  ------------------
  |  Branch (6309:28): [True: 22, False: 7]
  ------------------
 6310|     22|        if (static_cast<ARMOperand &>(*Operands[I]).isCondCode())
  ------------------
  |  Branch (6310:13): [True: 7, False: 15]
  ------------------
 6311|      7|          CondLoc = Operands[I]->getStartLoc();
 6312|       |      //return Error(CondLoc, "incorrect condition in IT block; got '" +
 6313|       |      //             StringRef(ARMCondCodeToString(ARMCC::CondCodes(Cond))) +
 6314|       |      //             "', but expected '" +
 6315|       |      //             ARMCondCodeToString(ARMCC::CondCodes(ITCond)) + "'");
 6316|      7|      return true;
 6317|      7|    }
 6318|       |  // Check for non-'al' condition codes outside of the IT block.
 6319|  29.2k|  } else if (isThumbTwo() && MCID.isPredicable() &&
  ------------------
  |  Branch (6319:14): [True: 9.45k, False: 19.8k]
  |  Branch (6319:30): [True: 9.07k, False: 382]
  ------------------
 6320|  9.07k|             Inst.getOperand(MCID.findFirstPredOperandIdx()).getImm() !=
  ------------------
  |  Branch (6320:14): [True: 680, False: 8.39k]
  ------------------
 6321|  9.07k|             ARMCC::AL && Inst.getOpcode() != ARM::tBcc &&
  ------------------
  |  Branch (6321:27): [True: 222, False: 458]
  ------------------
 6322|    222|             Inst.getOpcode() != ARM::t2Bcc)
  ------------------
  |  Branch (6322:14): [True: 3, False: 219]
  ------------------
 6323|       |    //return Error(Loc, "predicated instructions must be in IT block");
 6324|      3|    return true;
 6325|       |
 6326|  29.7k|  const unsigned Opcode = Inst.getOpcode();
 6327|  29.7k|  switch (Opcode) {
  ------------------
  |  Branch (6327:11): [True: 3.72k, False: 26.0k]
  ------------------
 6328|     15|  case ARM::LDRD:
  ------------------
  |  Branch (6328:3): [True: 15, False: 29.7k]
  ------------------
 6329|     15|  case ARM::LDRD_PRE:
  ------------------
  |  Branch (6329:3): [True: 0, False: 29.7k]
  ------------------
 6330|     28|  case ARM::LDRD_POST: {
  ------------------
  |  Branch (6330:3): [True: 13, False: 29.7k]
  ------------------
 6331|     28|    const unsigned RtReg = Inst.getOperand(0).getReg();
 6332|       |
 6333|       |    // Rt can't be R14.
 6334|     28|    if (RtReg == ARM::LR)
  ------------------
  |  Branch (6334:9): [True: 0, False: 28]
  ------------------
 6335|       |      //return Error(Operands[3]->getStartLoc(),
 6336|       |      //             "Rt can't be R14");
 6337|      0|      return true;
 6338|       |
 6339|     28|    const unsigned Rt = MRI->getEncodingValue(RtReg);
 6340|       |    // Rt must be even-numbered.
 6341|     28|    if ((Rt & 1) == 1)
  ------------------
  |  Branch (6341:9): [True: 1, False: 27]
  ------------------
 6342|       |      //return Error(Operands[3]->getStartLoc(),
 6343|       |      //             "Rt must be even-numbered");
 6344|      1|      return true;
 6345|       |
 6346|       |    // Rt2 must be Rt + 1.
 6347|     27|    const unsigned Rt2 = MRI->getEncodingValue(Inst.getOperand(1).getReg());
 6348|     27|    if (Rt2 != Rt + 1)
  ------------------
  |  Branch (6348:9): [True: 1, False: 26]
  ------------------
 6349|       |      //return Error(Operands[3]->getStartLoc(),
 6350|       |      //             "destination operands must be sequential");
 6351|      1|      return true;
 6352|       |
 6353|     26|    if (Opcode == ARM::LDRD_PRE || Opcode == ARM::LDRD_POST) {
  ------------------
  |  Branch (6353:9): [True: 0, False: 26]
  |  Branch (6353:36): [True: 13, False: 13]
  ------------------
 6354|     13|      const unsigned Rn = MRI->getEncodingValue(Inst.getOperand(3).getReg());
 6355|       |      // For addressing modes with writeback, the base register needs to be
 6356|       |      // different from the destination registers.
 6357|     13|      if (Rn == Rt || Rn == Rt2)
  ------------------
  |  Branch (6357:11): [True: 1, False: 12]
  |  Branch (6357:23): [True: 1, False: 11]
  ------------------
 6358|       |        //return Error(Operands[3]->getStartLoc(),
 6359|       |        //             "base register needs to be different from destination "
 6360|       |        //             "registers");
 6361|      2|        return true;
 6362|     13|    }
 6363|       |
 6364|     24|    return false;
 6365|     26|  }
 6366|      4|  case ARM::t2LDRDi8:
  ------------------
  |  Branch (6366:3): [True: 4, False: 29.7k]
  ------------------
 6367|      4|  case ARM::t2LDRD_PRE:
  ------------------
  |  Branch (6367:3): [True: 0, False: 29.7k]
  ------------------
 6368|      7|  case ARM::t2LDRD_POST: {
  ------------------
  |  Branch (6368:3): [True: 3, False: 29.7k]
  ------------------
 6369|       |    // Rt2 must be different from Rt.
 6370|      7|    unsigned Rt = MRI->getEncodingValue(Inst.getOperand(0).getReg());
 6371|      7|    unsigned Rt2 = MRI->getEncodingValue(Inst.getOperand(1).getReg());
 6372|      7|    if (Rt2 == Rt)
  ------------------
  |  Branch (6372:9): [True: 0, False: 7]
  ------------------
 6373|       |      //return Error(Operands[3]->getStartLoc(),
 6374|       |      //             "destination operands can't be identical");
 6375|      0|      return true;
 6376|      7|    return false;
 6377|      7|  }
 6378|     34|  case ARM::t2BXJ: {
  ------------------
  |  Branch (6378:3): [True: 34, False: 29.7k]
  ------------------
 6379|     34|    const unsigned RmReg = Inst.getOperand(0).getReg();
 6380|       |    // Rm = SP is no longer unpredictable in v8-A
 6381|     34|    if (RmReg == ARM::SP && !hasV8Ops())
  ------------------
  |  Branch (6381:9): [True: 1, False: 33]
  |  Branch (6381:29): [True: 1, False: 0]
  ------------------
 6382|       |      //return Error(Operands[2]->getStartLoc(),
 6383|       |      //             "r13 (SP) is an unpredictable operand to BXJ");
 6384|      1|      return true;
 6385|     33|    return false;
 6386|     34|  }
 6387|     27|  case ARM::STRD: {
  ------------------
  |  Branch (6387:3): [True: 27, False: 29.7k]
  ------------------
 6388|       |    // Rt2 must be Rt + 1.
 6389|     27|    unsigned Rt = MRI->getEncodingValue(Inst.getOperand(0).getReg());
 6390|     27|    unsigned Rt2 = MRI->getEncodingValue(Inst.getOperand(1).getReg());
 6391|     27|    if (Rt2 != Rt + 1)
  ------------------
  |  Branch (6391:9): [True: 3, False: 24]
  ------------------
 6392|       |      //return Error(Operands[3]->getStartLoc(),
 6393|       |      //             "source operands must be sequential");
 6394|      3|      return true;
 6395|     24|    return false;
 6396|     27|  }
 6397|      0|  case ARM::STRD_PRE:
  ------------------
  |  Branch (6397:3): [True: 0, False: 29.7k]
  ------------------
 6398|      0|  case ARM::STRD_POST: {
  ------------------
  |  Branch (6398:3): [True: 0, False: 29.7k]
  ------------------
 6399|       |    // Rt2 must be Rt + 1.
 6400|      0|    unsigned Rt = MRI->getEncodingValue(Inst.getOperand(1).getReg());
 6401|      0|    unsigned Rt2 = MRI->getEncodingValue(Inst.getOperand(2).getReg());
 6402|      0|    if (Rt2 != Rt + 1)
  ------------------
  |  Branch (6402:9): [True: 0, False: 0]
  ------------------
 6403|       |      //return Error(Operands[3]->getStartLoc(),
 6404|       |      //             "source operands must be sequential");
 6405|      0|      return true;
 6406|      0|    return false;
 6407|      0|  }
 6408|      0|  case ARM::STR_PRE_IMM:
  ------------------
  |  Branch (6408:3): [True: 0, False: 29.7k]
  ------------------
 6409|      0|  case ARM::STR_PRE_REG:
  ------------------
  |  Branch (6409:3): [True: 0, False: 29.7k]
  ------------------
 6410|      0|  case ARM::STR_POST_IMM:
  ------------------
  |  Branch (6410:3): [True: 0, False: 29.7k]
  ------------------
 6411|      0|  case ARM::STR_POST_REG:
  ------------------
  |  Branch (6411:3): [True: 0, False: 29.7k]
  ------------------
 6412|      0|  case ARM::STRH_PRE:
  ------------------
  |  Branch (6412:3): [True: 0, False: 29.7k]
  ------------------
 6413|      0|  case ARM::STRH_POST:
  ------------------
  |  Branch (6413:3): [True: 0, False: 29.7k]
  ------------------
 6414|      0|  case ARM::STRB_PRE_IMM:
  ------------------
  |  Branch (6414:3): [True: 0, False: 29.7k]
  ------------------
 6415|      0|  case ARM::STRB_PRE_REG:
  ------------------
  |  Branch (6415:3): [True: 0, False: 29.7k]
  ------------------
 6416|      0|  case ARM::STRB_POST_IMM:
  ------------------
  |  Branch (6416:3): [True: 0, False: 29.7k]
  ------------------
 6417|      0|  case ARM::STRB_POST_REG: {
  ------------------
  |  Branch (6417:3): [True: 0, False: 29.7k]
  ------------------
 6418|       |    // Rt must be different from Rn.
 6419|      0|    const unsigned Rt = MRI->getEncodingValue(Inst.getOperand(1).getReg());
 6420|      0|    const unsigned Rn = MRI->getEncodingValue(Inst.getOperand(2).getReg());
 6421|       |
 6422|      0|    if (Rt == Rn)
  ------------------
  |  Branch (6422:9): [True: 0, False: 0]
  ------------------
 6423|       |      //return Error(Operands[3]->getStartLoc(),
 6424|       |      //             "source register and base register can't be identical");
 6425|      0|      return true;
 6426|      0|    return false;
 6427|      0|  }
 6428|      1|  case ARM::LDR_PRE_IMM:
  ------------------
  |  Branch (6428:3): [True: 1, False: 29.7k]
  ------------------
 6429|      7|  case ARM::LDR_PRE_REG:
  ------------------
  |  Branch (6429:3): [True: 6, False: 29.7k]
  ------------------
 6430|     18|  case ARM::LDR_POST_IMM:
  ------------------
  |  Branch (6430:3): [True: 11, False: 29.7k]
  ------------------
 6431|     39|  case ARM::LDR_POST_REG:
  ------------------
  |  Branch (6431:3): [True: 21, False: 29.7k]
  ------------------
 6432|     42|  case ARM::LDRH_PRE:
  ------------------
  |  Branch (6432:3): [True: 3, False: 29.7k]
  ------------------
 6433|     54|  case ARM::LDRH_POST:
  ------------------
  |  Branch (6433:3): [True: 12, False: 29.7k]
  ------------------
 6434|     54|  case ARM::LDRSH_PRE:
  ------------------
  |  Branch (6434:3): [True: 0, False: 29.7k]
  ------------------
 6435|     61|  case ARM::LDRSH_POST:
  ------------------
  |  Branch (6435:3): [True: 7, False: 29.7k]
  ------------------
 6436|     62|  case ARM::LDRB_PRE_IMM:
  ------------------
  |  Branch (6436:3): [True: 1, False: 29.7k]
  ------------------
 6437|     62|  case ARM::LDRB_PRE_REG:
  ------------------
  |  Branch (6437:3): [True: 0, False: 29.7k]
  ------------------
 6438|    625|  case ARM::LDRB_POST_IMM:
  ------------------
  |  Branch (6438:3): [True: 563, False: 29.2k]
  ------------------
 6439|    639|  case ARM::LDRB_POST_REG:
  ------------------
  |  Branch (6439:3): [True: 14, False: 29.7k]
  ------------------
 6440|    639|  case ARM::LDRSB_PRE:
  ------------------
  |  Branch (6440:3): [True: 0, False: 29.7k]
  ------------------
 6441|    645|  case ARM::LDRSB_POST: {
  ------------------
  |  Branch (6441:3): [True: 6, False: 29.7k]
  ------------------
 6442|       |    // Rt must be different from Rn.
 6443|    645|    const unsigned Rt = MRI->getEncodingValue(Inst.getOperand(0).getReg());
 6444|    645|    const unsigned Rn = MRI->getEncodingValue(Inst.getOperand(2).getReg());
 6445|       |
 6446|    645|    if (Rt == Rn)
  ------------------
  |  Branch (6446:9): [True: 1, False: 644]
  ------------------
 6447|       |      //return Error(Operands[3]->getStartLoc(),
 6448|       |      //             "destination register and base register can't be identical");
 6449|      1|      return true;
 6450|    644|    return false;
 6451|    645|  }
 6452|      0|  case ARM::SBFX:
  ------------------
  |  Branch (6452:3): [True: 0, False: 29.7k]
  ------------------
 6453|      0|  case ARM::UBFX: {
  ------------------
  |  Branch (6453:3): [True: 0, False: 29.7k]
  ------------------
 6454|       |    // Width must be in range [1, 32-lsb].
 6455|      0|    unsigned LSB = Inst.getOperand(2).getImm();
 6456|      0|    unsigned Widthm1 = Inst.getOperand(3).getImm();
 6457|      0|    if (Widthm1 >= 32 - LSB)
  ------------------
  |  Branch (6457:9): [True: 0, False: 0]
  ------------------
 6458|       |      //return Error(Operands[5]->getStartLoc(),
 6459|       |      //             "bitfield width must be in range [1,32-lsb]");
 6460|      0|      return true;
 6461|      0|    return false;
 6462|      0|  }
 6463|       |  // Notionally handles ARM::tLDMIA_UPD too.
 6464|      0|  case ARM::tLDMIA: {
  ------------------
  |  Branch (6464:3): [True: 0, False: 29.7k]
  ------------------
 6465|       |    // If we're parsing Thumb2, the .w variant is available and handles
 6466|       |    // most cases that are normally illegal for a Thumb1 LDM instruction.
 6467|       |    // We'll make the transformation in processInstruction() if necessary.
 6468|       |    //
 6469|       |    // Thumb LDM instructions are writeback iff the base register is not
 6470|       |    // in the register list.
 6471|      0|    unsigned Rn = Inst.getOperand(0).getReg();
 6472|      0|    bool HasWritebackToken =
 6473|      0|        (static_cast<ARMOperand &>(*Operands[3]).isToken() &&
  ------------------
  |  Branch (6473:10): [True: 0, False: 0]
  ------------------
 6474|      0|         static_cast<ARMOperand &>(*Operands[3]).getToken() == "!");
  ------------------
  |  Branch (6474:10): [True: 0, False: 0]
  ------------------
 6475|      0|    bool ListContainsBase;
 6476|      0|    if (checkLowRegisterList(Inst, 3, Rn, 0, ListContainsBase) && !isThumbTwo())
  ------------------
  |  Branch (6476:9): [True: 0, False: 0]
  |  Branch (6476:67): [True: 0, False: 0]
  ------------------
 6477|       |      //return Error(Operands[3 + HasWritebackToken]->getStartLoc(),
 6478|       |      //             "registers must be in range r0-r7");
 6479|      0|      return true;
 6480|       |    // If we should have writeback, then there should be a '!' token.
 6481|      0|    if (!ListContainsBase && !HasWritebackToken && !isThumbTwo())
  ------------------
  |  Branch (6481:9): [True: 0, False: 0]
  |  Branch (6481:30): [True: 0, False: 0]
  |  Branch (6481:52): [True: 0, False: 0]
  ------------------
 6482|       |      //return Error(Operands[2]->getStartLoc(),
 6483|       |      //             "writeback operator '!' expected");
 6484|      0|      return true;
 6485|       |    // If we should not have writeback, there must not be a '!'. This is
 6486|       |    // true even for the 32-bit wide encodings.
 6487|      0|    if (ListContainsBase && HasWritebackToken)
  ------------------
  |  Branch (6487:9): [True: 0, False: 0]
  |  Branch (6487:29): [True: 0, False: 0]
  ------------------
 6488|       |      //return Error(Operands[3]->getStartLoc(),
 6489|       |      //             "writeback operator '!' not allowed when base register "
 6490|       |      //             "in register list");
 6491|      0|      return true;
 6492|       |
 6493|      0|    if (validatetLDMRegList(Inst, Operands, 3))
  ------------------
  |  Branch (6493:9): [True: 0, False: 0]
  ------------------
 6494|      0|      return true;
 6495|      0|    break;
 6496|      0|  }
 6497|      0|  case ARM::LDMIA_UPD:
  ------------------
  |  Branch (6497:3): [True: 0, False: 29.7k]
  ------------------
 6498|      0|  case ARM::LDMDB_UPD:
  ------------------
  |  Branch (6498:3): [True: 0, False: 29.7k]
  ------------------
 6499|      0|  case ARM::LDMIB_UPD:
  ------------------
  |  Branch (6499:3): [True: 0, False: 29.7k]
  ------------------
 6500|      0|  case ARM::LDMDA_UPD:
  ------------------
  |  Branch (6500:3): [True: 0, False: 29.7k]
  ------------------
 6501|       |    // ARM variants loading and updating the same register are only officially
 6502|       |    // UNPREDICTABLE on v7 upwards. Goodness knows what they did before.
 6503|      0|    if (!hasV7Ops())
  ------------------
  |  Branch (6503:9): [True: 0, False: 0]
  ------------------
 6504|      0|      break;
 6505|      0|    if (listContainsReg(Inst, 3, Inst.getOperand(0).getReg()))
  ------------------
  |  Branch (6505:9): [True: 0, False: 0]
  ------------------
 6506|       |      //return Error(Operands.back()->getStartLoc(),
 6507|       |      //             "writeback register not allowed in register list");
 6508|      0|      return true;
 6509|      0|    break;
 6510|      0|  case ARM::t2LDMIA:
  ------------------
  |  Branch (6510:3): [True: 0, False: 29.7k]
  ------------------
 6511|      0|  case ARM::t2LDMDB:
  ------------------
  |  Branch (6511:3): [True: 0, False: 29.7k]
  ------------------
 6512|      0|    if (validatetLDMRegList(Inst, Operands, 3))
  ------------------
  |  Branch (6512:9): [True: 0, False: 0]
  ------------------
 6513|      0|      return true;
 6514|      0|    break;
 6515|      0|  case ARM::t2STMIA:
  ------------------
  |  Branch (6515:3): [True: 0, False: 29.7k]
  ------------------
 6516|      0|  case ARM::t2STMDB:
  ------------------
  |  Branch (6516:3): [True: 0, False: 29.7k]
  ------------------
 6517|      0|    if (validatetSTMRegList(Inst, Operands, 3))
  ------------------
  |  Branch (6517:9): [True: 0, False: 0]
  ------------------
 6518|      0|      return true;
 6519|      0|    break;
 6520|      0|  case ARM::t2LDMIA_UPD:
  ------------------
  |  Branch (6520:3): [True: 0, False: 29.7k]
  ------------------
 6521|      0|  case ARM::t2LDMDB_UPD:
  ------------------
  |  Branch (6521:3): [True: 0, False: 29.7k]
  ------------------
 6522|      0|  case ARM::t2STMIA_UPD:
  ------------------
  |  Branch (6522:3): [True: 0, False: 29.7k]
  ------------------
 6523|      0|  case ARM::t2STMDB_UPD: {
  ------------------
  |  Branch (6523:3): [True: 0, False: 29.7k]
  ------------------
 6524|      0|    if (listContainsReg(Inst, 3, Inst.getOperand(0).getReg()))
  ------------------
  |  Branch (6524:9): [True: 0, False: 0]
  ------------------
 6525|       |      //return Error(Operands.back()->getStartLoc(),
 6526|       |      //             "writeback register not allowed in register list");
 6527|      0|      return true;
 6528|       |
 6529|      0|    if (Opcode == ARM::t2LDMIA_UPD || Opcode == ARM::t2LDMDB_UPD) {
  ------------------
  |  Branch (6529:9): [True: 0, False: 0]
  |  Branch (6529:39): [True: 0, False: 0]
  ------------------
 6530|      0|      if (validatetLDMRegList(Inst, Operands, 3))
  ------------------
  |  Branch (6530:11): [True: 0, False: 0]
  ------------------
 6531|      0|        return true;
 6532|      0|    } else {
 6533|      0|      if (validatetSTMRegList(Inst, Operands, 3))
  ------------------
  |  Branch (6533:11): [True: 0, False: 0]
  ------------------
 6534|      0|        return true;
 6535|      0|    }
 6536|      0|    break;
 6537|      0|  }
 6538|      0|  case ARM::sysLDMIA_UPD:
  ------------------
  |  Branch (6538:3): [True: 0, False: 29.7k]
  ------------------
 6539|      0|  case ARM::sysLDMDA_UPD:
  ------------------
  |  Branch (6539:3): [True: 0, False: 29.7k]
  ------------------
 6540|      0|  case ARM::sysLDMDB_UPD:
  ------------------
  |  Branch (6540:3): [True: 0, False: 29.7k]
  ------------------
 6541|      0|  case ARM::sysLDMIB_UPD:
  ------------------
  |  Branch (6541:3): [True: 0, False: 29.7k]
  ------------------
 6542|      0|    if (!listContainsReg(Inst, 3, ARM::PC))
  ------------------
  |  Branch (6542:9): [True: 0, False: 0]
  ------------------
 6543|       |      //return Error(Operands[4]->getStartLoc(),
 6544|       |      //             "writeback register only allowed on system LDM "
 6545|       |      //             "if PC in register-list");
 6546|      0|      return true;
 6547|      0|    break;
 6548|      0|  case ARM::sysSTMIA_UPD:
  ------------------
  |  Branch (6548:3): [True: 0, False: 29.7k]
  ------------------
 6549|      0|  case ARM::sysSTMDA_UPD:
  ------------------
  |  Branch (6549:3): [True: 0, False: 29.7k]
  ------------------
 6550|      0|  case ARM::sysSTMDB_UPD:
  ------------------
  |  Branch (6550:3): [True: 0, False: 29.7k]
  ------------------
 6551|      0|  case ARM::sysSTMIB_UPD:
  ------------------
  |  Branch (6551:3): [True: 0, False: 29.7k]
  ------------------
 6552|       |    //return Error(Operands[2]->getStartLoc(),
 6553|       |    //             "system STM cannot have writeback register");
 6554|      0|    return true;
 6555|     41|  case ARM::tMUL: {
  ------------------
  |  Branch (6555:3): [True: 41, False: 29.7k]
  ------------------
 6556|       |    // The second source operand must be the same register as the destination
 6557|       |    // operand.
 6558|       |    //
 6559|       |    // In this case, we must directly check the parsed operands because the
 6560|       |    // cvtThumbMultiply() function is written in such a way that it guarantees
 6561|       |    // this first statement is always true for the new Inst.  Essentially, the
 6562|       |    // destination is unconditionally copied into the second source operand
 6563|       |    // without checking to see if it matches what we actually parsed.
 6564|     41|    if (Operands.size() == 6 && (((ARMOperand &)*Operands[3]).getReg() !=
  ------------------
  |  Branch (6564:9): [True: 25, False: 16]
  |  Branch (6564:33): [True: 20, False: 5]
  ------------------
 6565|     25|                                 ((ARMOperand &)*Operands[5]).getReg()) &&
 6566|     20|        (((ARMOperand &)*Operands[3]).getReg() !=
  ------------------
  |  Branch (6566:9): [True: 6, False: 14]
  ------------------
 6567|     20|         ((ARMOperand &)*Operands[4]).getReg())) {
 6568|       |      //return Error(Operands[3]->getStartLoc(),
 6569|       |      //             "destination register must match source register");
 6570|      6|      return true;
 6571|      6|    }
 6572|     35|    break;
 6573|     41|  }
 6574|       |  // Like for ldm/stm, push and pop have hi-reg handling version in Thumb2,
 6575|       |  // so only issue a diagnostic for thumb1. The instructions will be
 6576|       |  // switched to the t2 encodings in processInstruction() if necessary.
 6577|     35|  case ARM::tPOP: {
  ------------------
  |  Branch (6577:3): [True: 0, False: 29.7k]
  ------------------
 6578|      0|    bool ListContainsBase;
 6579|      0|    if (checkLowRegisterList(Inst, 2, 0, ARM::PC, ListContainsBase) &&
  ------------------
  |  Branch (6579:9): [True: 0, False: 0]
  ------------------
 6580|      0|        !isThumbTwo())
  ------------------
  |  Branch (6580:9): [True: 0, False: 0]
  ------------------
 6581|       |      //return Error(Operands[2]->getStartLoc(),
 6582|       |      //             "registers must be in range r0-r7 or pc");
 6583|      0|      return true;
 6584|      0|    if (validatetLDMRegList(Inst, Operands, 2, !isMClass()))
  ------------------
  |  Branch (6584:9): [True: 0, False: 0]
  ------------------
 6585|      0|      return true;
 6586|      0|    break;
 6587|      0|  }
 6588|      0|  case ARM::tPUSH: {
  ------------------
  |  Branch (6588:3): [True: 0, False: 29.7k]
  ------------------
 6589|      0|    bool ListContainsBase;
 6590|      0|    if (checkLowRegisterList(Inst, 2, 0, ARM::LR, ListContainsBase) &&
  ------------------
  |  Branch (6590:9): [True: 0, False: 0]
  ------------------
 6591|      0|        !isThumbTwo())
  ------------------
  |  Branch (6591:9): [True: 0, False: 0]
  ------------------
 6592|       |      //return Error(Operands[2]->getStartLoc(),
 6593|       |      //             "registers must be in range r0-r7 or lr");
 6594|      0|      return true;
 6595|      0|    if (validatetSTMRegList(Inst, Operands, 2))
  ------------------
  |  Branch (6595:9): [True: 0, False: 0]
  ------------------
 6596|      0|      return true;
 6597|      0|    break;
 6598|      0|  }
 6599|      0|  case ARM::tSTMIA_UPD: {
  ------------------
  |  Branch (6599:3): [True: 0, False: 29.7k]
  ------------------
 6600|      0|    bool ListContainsBase, InvalidLowList;
 6601|      0|    InvalidLowList = checkLowRegisterList(Inst, 4, Inst.getOperand(0).getReg(),
 6602|      0|                                          0, ListContainsBase);
 6603|      0|    if (InvalidLowList && !isThumbTwo())
  ------------------
  |  Branch (6603:9): [True: 0, False: 0]
  |  Branch (6603:27): [True: 0, False: 0]
  ------------------
 6604|       |      //return Error(Operands[4]->getStartLoc(),
 6605|       |      //             "registers must be in range r0-r7");
 6606|      0|      return true;
 6607|       |
 6608|       |    // This would be converted to a 32-bit stm, but that's not valid if the
 6609|       |    // writeback register is in the list.
 6610|      0|    if (InvalidLowList && ListContainsBase)
  ------------------
  |  Branch (6610:9): [True: 0, False: 0]
  |  Branch (6610:27): [True: 0, False: 0]
  ------------------
 6611|       |      //return Error(Operands[4]->getStartLoc(),
 6612|       |      //             "writeback operator '!' not allowed when base register "
 6613|       |      //             "in register list");
 6614|      0|      return true;
 6615|       |
 6616|      0|    if (validatetSTMRegList(Inst, Operands, 4))
  ------------------
  |  Branch (6616:9): [True: 0, False: 0]
  ------------------
 6617|      0|      return true;
 6618|      0|    break;
 6619|      0|  }
 6620|     69|  case ARM::tADDrSP: {
  ------------------
  |  Branch (6620:3): [True: 69, False: 29.7k]
  ------------------
 6621|       |    // If the non-SP source operand and the destination operand are not the
 6622|       |    // same, we need thumb2 (for the wide encoding), or we have an error.
 6623|     69|    if (!isThumbTwo() &&
  ------------------
  |  Branch (6623:9): [True: 59, False: 10]
  ------------------
 6624|     59|        Inst.getOperand(0).getReg() != Inst.getOperand(2).getReg()) {
  ------------------
  |  Branch (6624:9): [True: 1, False: 58]
  ------------------
 6625|       |      //return Error(Operands[4]->getStartLoc(),
 6626|       |      //             "source register must be the same as destination");
 6627|      1|      return true;
 6628|      1|    }
 6629|     68|    break;
 6630|     69|  }
 6631|       |  // Final range checking for Thumb unconditional branch instructions.
 6632|  1.54k|  case ARM::tB:
  ------------------
  |  Branch (6632:3): [True: 1.54k, False: 28.2k]
  ------------------
 6633|  1.54k|    if (!(static_cast<ARMOperand &>(*Operands[2])).isSignedOffsetRel<11, 1>(Inst.getAddress()))
  ------------------
  |  Branch (6633:9): [True: 3, False: 1.53k]
  ------------------
 6634|       |      //return Error(Operands[2]->getStartLoc(), "branch target out of range");
 6635|      3|      return true;
 6636|  1.53k|    break;
 6637|  1.53k|  case ARM::t2B: {
  ------------------
  |  Branch (6637:3): [True: 433, False: 29.3k]
  ------------------
 6638|    433|    int op = (Operands[2]->isImm()) ? 2 : 3;
  ------------------
  |  Branch (6638:14): [True: 423, False: 10]
  ------------------
 6639|    433|    if (!static_cast<ARMOperand &>(*Operands[op]).isSignedOffsetRel<24, 1>(Inst.getAddress()))
  ------------------
  |  Branch (6639:9): [True: 48, False: 385]
  ------------------
 6640|       |      //return Error(Operands[op]->getStartLoc(), "branch target out of range");
 6641|     48|      return true;
 6642|    385|    break;
 6643|    433|  }
 6644|       |  // Final range checking for Thumb conditional branch instructions.
 6645|    511|  case ARM::tBcc:
  ------------------
  |  Branch (6645:3): [True: 511, False: 29.2k]
  ------------------
 6646|    511|    if (!static_cast<ARMOperand &>(*Operands[2]).isSignedOffsetRel<8, 1>(Inst.getAddress()))
  ------------------
  |  Branch (6646:9): [True: 23, False: 488]
  ------------------
 6647|       |      //return Error(Operands[2]->getStartLoc(), "branch target out of range");
 6648|     23|      return true;
 6649|    488|    break;
 6650|    488|  case ARM::t2Bcc: {
  ------------------
  |  Branch (6650:3): [True: 335, False: 29.4k]
  ------------------
 6651|    335|    int Op = (Operands[2]->isImm()) ? 2 : 3;
  ------------------
  |  Branch (6651:14): [True: 239, False: 96]
  ------------------
 6652|    335|    if (!static_cast<ARMOperand &>(*Operands[Op]).isSignedOffsetRel<20, 1>(Inst.getAddress()))
  ------------------
  |  Branch (6652:9): [True: 36, False: 299]
  ------------------
 6653|       |      //return Error(Operands[Op]->getStartLoc(), "branch target out of range");
 6654|     36|      return true;
 6655|    299|    break;
 6656|    335|  }
 6657|    299|  case ARM::MOVi16:
  ------------------
  |  Branch (6657:3): [True: 33, False: 29.7k]
  ------------------
 6658|     41|  case ARM::t2MOVi16:
  ------------------
  |  Branch (6658:3): [True: 8, False: 29.7k]
  ------------------
 6659|     54|  case ARM::t2MOVTi16:
  ------------------
  |  Branch (6659:3): [True: 13, False: 29.7k]
  ------------------
 6660|     54|    {
 6661|       |    // We want to avoid misleadingly allowing something like "mov r0, <symbol>"
 6662|       |    // especially when we turn it into a movw and the expression <symbol> does
 6663|       |    // not have a :lower16: or :upper16 as part of the expression.  We don't
 6664|       |    // want the behavior of silently truncating, which can be unexpected and
 6665|       |    // lead to bugs that are difficult to find since this is an easy mistake
 6666|       |    // to make.
 6667|     54|    int i = (Operands[3]->isImm()) ? 3 : 4;
  ------------------
  |  Branch (6667:13): [True: 54, False: 0]
  ------------------
 6668|     54|    ARMOperand &Op = static_cast<ARMOperand &>(*Operands[i]);
 6669|     54|    const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Op.getImm());
 6670|     54|    if (CE) break;
  ------------------
  |  Branch (6670:9): [True: 50, False: 4]
  ------------------
 6671|      4|    const MCExpr *E = dyn_cast<MCExpr>(Op.getImm());
 6672|      4|    if (!E) break;
  ------------------
  |  Branch (6672:9): [True: 0, False: 4]
  ------------------
 6673|      4|    const ARMMCExpr *ARM16Expr = dyn_cast<ARMMCExpr>(E);
 6674|      4|    if (!ARM16Expr || (ARM16Expr->getKind() != ARMMCExpr::VK_ARM_HI16 &&
  ------------------
  |  Branch (6674:9): [True: 4, False: 0]
  |  Branch (6674:24): [True: 0, False: 0]
  ------------------
 6675|      0|                       ARM16Expr->getKind() != ARMMCExpr::VK_ARM_LO16))
  ------------------
  |  Branch (6675:24): [True: 0, False: 0]
  ------------------
 6676|       |      //return Error(
 6677|       |      //    Op.getStartLoc(),
 6678|       |      //    "immediate expression for mov requires :lower16: or :upper16");
 6679|      4|      return true;
 6680|      0|    break;
 6681|      4|  }
 6682|  29.7k|  }
 6683|       |
 6684|  28.9k|  return false;
 6685|  29.7k|}
ARMAsmParser.cpp:_ZL16instIsBreakpointRKN7llvm_ks6MCInstE:
 6223|    525|static bool instIsBreakpoint(const MCInst &Inst) {
 6224|    525|    return Inst.getOpcode() == ARM::tBKPT ||
  ------------------
  |  Branch (6224:12): [True: 10, False: 515]
  ------------------
 6225|    515|           Inst.getOpcode() == ARM::BKPT ||
  ------------------
  |  Branch (6225:12): [True: 8, False: 507]
  ------------------
 6226|    507|           Inst.getOpcode() == ARM::tHLT ||
  ------------------
  |  Branch (6226:12): [True: 0, False: 507]
  ------------------
 6227|    507|           Inst.getOpcode() == ARM::HLT;
  ------------------
  |  Branch (6227:12): [True: 0, False: 507]
  ------------------
 6228|       |
 6229|    525|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isSignedOffsetRelILj24ELj1EEEbl:
  699|    433|  bool isSignedOffsetRel(int64_t Addr) const {
  700|    433|    if (!isImm()) return false;
  ------------------
  |  Branch (700:9): [True: 0, False: 433]
  ------------------
  701|    433|    if (isa<MCSymbolRefExpr>(Imm.Val)) return true;
  ------------------
  |  Branch (701:9): [True: 10, False: 423]
  ------------------
  702|    423|    if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Imm.Val)) {
  ------------------
  |  Branch (702:31): [True: 421, False: 2]
  ------------------
  703|    421|      int64_t Val = CE->getValue() - Addr;
  704|    421|      int64_t Align = 1LL << scale;
  705|    421|      int64_t Max = Align * ((1LL << (width-1)) - 1);
  706|    421|      int64_t Min = -Align * (1LL << (width-1));
  707|    421|      return ((Val % Align) == 0) && (Val >= Min) && (Val <= Max);
  ------------------
  |  Branch (707:14): [True: 415, False: 6]
  |  Branch (707:38): [True: 396, False: 19]
  |  Branch (707:54): [True: 375, False: 21]
  ------------------
  708|    421|    }
  709|      2|    return false;
  710|    423|  }
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_110ARMOperand17isSignedOffsetRelILj20ELj1EEEbl:
  699|    335|  bool isSignedOffsetRel(int64_t Addr) const {
  700|    335|    if (!isImm()) return false;
  ------------------
  |  Branch (700:9): [True: 0, False: 335]
  ------------------
  701|    335|    if (isa<MCSymbolRefExpr>(Imm.Val)) return true;
  ------------------
  |  Branch (701:9): [True: 96, False: 239]
  ------------------
  702|    239|    if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Imm.Val)) {
  ------------------
  |  Branch (702:31): [True: 238, False: 1]
  ------------------
  703|    238|      int64_t Val = CE->getValue() - Addr;
  704|    238|      int64_t Align = 1LL << scale;
  705|    238|      int64_t Max = Align * ((1LL << (width-1)) - 1);
  706|    238|      int64_t Min = -Align * (1LL << (width-1));
  707|    238|      return ((Val % Align) == 0) && (Val >= Min) && (Val <= Max);
  ------------------
  |  Branch (707:14): [True: 237, False: 1]
  |  Branch (707:38): [True: 219, False: 18]
  |  Branch (707:54): [True: 203, False: 16]
  ------------------
  708|    238|    }
  709|      1|    return false;
  710|    239|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser17forwardITPositionEv:
  172|  29.8k|  void forwardITPosition() {
  173|  29.8k|    if (!inITBlock()) return;
  ------------------
  |  Branch (173:9): [True: 28.8k, False: 940]
  ------------------
  174|       |    // Move to the next instruction in the IT block, if there is one. If not,
  175|       |    // mark the block as done.
  176|    940|    unsigned TZ = countTrailingZeros(ITState.Mask);
  177|    940|    if (++ITState.CurPosition == 5 - TZ)
  ------------------
  |  Branch (177:9): [True: 352, False: 588]
  ------------------
  178|    352|      ITState.CurPosition = ~0U; // Done with the IT block after this.
  179|    940|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser18processInstructionERN7llvm_ks6MCInstERKNS1_15SmallVectorImplINSt3__110unique_ptrINS1_18MCParsedAsmOperandENS5_14default_deleteIS7_EEEEEERNS1_10MCStreamerE:
 6945|  30.9k|                                      MCStreamer &Out) {
 6946|  30.9k|  switch (Inst.getOpcode()) {
  ------------------
  |  Branch (6946:11): [True: 8.60k, False: 22.3k]
  ------------------
 6947|       |  // Alias for alternate form of 'ldr{,b}t Rt, [Rn], #imm' instruction.
 6948|     10|  case ARM::LDRT_POST:
  ------------------
  |  Branch (6948:3): [True: 10, False: 30.9k]
  ------------------
 6949|     10|  case ARM::LDRBT_POST: {
  ------------------
  |  Branch (6949:3): [True: 0, False: 30.9k]
  ------------------
 6950|     10|    const unsigned Opcode =
 6951|     10|      (Inst.getOpcode() == ARM::LDRT_POST) ? ARM::LDRT_POST_IMM
  ------------------
  |  Branch (6951:7): [True: 10, False: 0]
  ------------------
 6952|     10|                                           : ARM::LDRBT_POST_IMM;
 6953|     10|    MCInst TmpInst(Inst.getAddress());
 6954|     10|    TmpInst.setOpcode(Opcode);
 6955|     10|    TmpInst.addOperand(Inst.getOperand(0));
 6956|     10|    TmpInst.addOperand(Inst.getOperand(1));
 6957|     10|    TmpInst.addOperand(Inst.getOperand(1));
 6958|     10|    TmpInst.addOperand(MCOperand::createReg(0));
 6959|     10|    TmpInst.addOperand(MCOperand::createImm(0));
 6960|     10|    TmpInst.addOperand(Inst.getOperand(2));
 6961|     10|    TmpInst.addOperand(Inst.getOperand(3));
 6962|     10|    Inst = TmpInst;
 6963|     10|    return true;
 6964|     10|  }
 6965|       |  // Alias for alternate form of 'str{,b}t Rt, [Rn], #imm' instruction.
 6966|      0|  case ARM::STRT_POST:
  ------------------
  |  Branch (6966:3): [True: 0, False: 30.9k]
  ------------------
 6967|      0|  case ARM::STRBT_POST: {
  ------------------
  |  Branch (6967:3): [True: 0, False: 30.9k]
  ------------------
 6968|      0|    const unsigned Opcode =
 6969|      0|      (Inst.getOpcode() == ARM::STRT_POST) ? ARM::STRT_POST_IMM
  ------------------
  |  Branch (6969:7): [True: 0, False: 0]
  ------------------
 6970|      0|                                           : ARM::STRBT_POST_IMM;
 6971|      0|    MCInst TmpInst(Inst.getAddress());
 6972|      0|    TmpInst.setOpcode(Opcode);
 6973|      0|    TmpInst.addOperand(Inst.getOperand(1));
 6974|      0|    TmpInst.addOperand(Inst.getOperand(0));
 6975|      0|    TmpInst.addOperand(Inst.getOperand(1));
 6976|      0|    TmpInst.addOperand(MCOperand::createReg(0));
 6977|      0|    TmpInst.addOperand(MCOperand::createImm(0));
 6978|      0|    TmpInst.addOperand(Inst.getOperand(2));
 6979|      0|    TmpInst.addOperand(Inst.getOperand(3));
 6980|      0|    Inst = TmpInst;
 6981|      0|    return true;
 6982|      0|  }
 6983|       |  // Alias for alternate form of 'ADR Rd, #imm' instruction.
 6984|  2.22k|  case ARM::ADDri: {
  ------------------
  |  Branch (6984:3): [True: 2.22k, False: 28.7k]
  ------------------
 6985|  2.22k|    if (Inst.getOperand(1).getReg() != ARM::PC ||
  ------------------
  |  Branch (6985:9): [True: 2.19k, False: 29]
  ------------------
 6986|     29|        Inst.getOperand(5).getReg() != 0 ||
  ------------------
  |  Branch (6986:9): [True: 6, False: 23]
  ------------------
 6987|     23|        !(Inst.getOperand(2).isExpr() || Inst.getOperand(2).isImm()))
  ------------------
  |  Branch (6987:11): [True: 12, False: 11]
  |  Branch (6987:42): [True: 11, False: 0]
  ------------------
 6988|  2.20k|      return false;
 6989|     23|    MCInst TmpInst(Inst.getAddress());
 6990|     23|    TmpInst.setOpcode(ARM::ADR);
 6991|     23|    TmpInst.addOperand(Inst.getOperand(0));
 6992|     23|    if (Inst.getOperand(2).isImm()) {
  ------------------
  |  Branch (6992:9): [True: 11, False: 12]
  ------------------
 6993|       |      // Immediate (mod_imm) will be in its encoded form, we must unencode it
 6994|       |      // before passing it to the ADR instruction.
 6995|     11|      unsigned Enc = Inst.getOperand(2).getImm();
 6996|     11|      TmpInst.addOperand(MCOperand::createImm(
 6997|     11|        ARM_AM::rotr32(Enc & 0xFF, (Enc & 0xF00) >> 7)));
 6998|     12|    } else {
 6999|       |      // Turn PC-relative expression into absolute expression.
 7000|       |      // Reading PC provides the start of the current instruction + 8 and
 7001|       |      // the transform to adr is biased by that.
 7002|     12|      MCSymbol *Dot = getContext().createTempSymbol();
 7003|     12|      Out.EmitLabel(Dot);
 7004|     12|      const MCExpr *OpExpr = Inst.getOperand(2).getExpr();
 7005|     12|      const MCExpr *InstPC = MCSymbolRefExpr::create(Dot,
 7006|     12|                                                     MCSymbolRefExpr::VK_None,
 7007|     12|                                                     getContext());
 7008|     12|      const MCExpr *Const8 = MCConstantExpr::create(8, getContext());
 7009|     12|      const MCExpr *ReadPC = MCBinaryExpr::createAdd(InstPC, Const8,
 7010|     12|                                                     getContext());
 7011|     12|      const MCExpr *FixupAddr = MCBinaryExpr::createAdd(ReadPC, OpExpr,
 7012|     12|                                                        getContext());
 7013|     12|      TmpInst.addOperand(MCOperand::createExpr(FixupAddr));
 7014|     12|    }
 7015|     23|    TmpInst.addOperand(Inst.getOperand(3));
 7016|     23|    TmpInst.addOperand(Inst.getOperand(4));
 7017|     23|    Inst = TmpInst;
 7018|     23|    return true;
 7019|  2.22k|  }
 7020|       |  // Aliases for alternate PC+imm syntax of LDR instructions.
 7021|      0|  case ARM::t2LDRpcrel:
  ------------------
  |  Branch (7021:3): [True: 0, False: 30.9k]
  ------------------
 7022|       |    // Select the narrow version if the immediate will fit.
 7023|      0|    if (Inst.getOperand(1).getImm() > 0 &&
  ------------------
  |  Branch (7023:9): [True: 0, False: 0]
  |  Branch (7023:9): [True: 0, False: 0]
  ------------------
 7024|      0|        Inst.getOperand(1).getImm() <= 0xff &&
  ------------------
  |  Branch (7024:9): [True: 0, False: 0]
  ------------------
 7025|      0|        !(static_cast<ARMOperand &>(*Operands[2]).isToken() &&
  ------------------
  |  Branch (7025:11): [True: 0, False: 0]
  ------------------
 7026|      0|          static_cast<ARMOperand &>(*Operands[2]).getToken() == ".w"))
  ------------------
  |  Branch (7026:11): [True: 0, False: 0]
  ------------------
 7027|      0|      Inst.setOpcode(ARM::tLDRpci);
 7028|      0|    else
 7029|      0|      Inst.setOpcode(ARM::t2LDRpci);
 7030|      0|    return true;
 7031|      0|  case ARM::t2LDRBpcrel:
  ------------------
  |  Branch (7031:3): [True: 0, False: 30.9k]
  ------------------
 7032|      0|    Inst.setOpcode(ARM::t2LDRBpci);
 7033|      0|    return true;
 7034|      0|  case ARM::t2LDRHpcrel:
  ------------------
  |  Branch (7034:3): [True: 0, False: 30.9k]
  ------------------
 7035|      0|    Inst.setOpcode(ARM::t2LDRHpci);
 7036|      0|    return true;
 7037|      0|  case ARM::t2LDRSBpcrel:
  ------------------
  |  Branch (7037:3): [True: 0, False: 30.9k]
  ------------------
 7038|      0|    Inst.setOpcode(ARM::t2LDRSBpci);
 7039|      0|    return true;
 7040|      0|  case ARM::t2LDRSHpcrel:
  ------------------
  |  Branch (7040:3): [True: 0, False: 30.9k]
  ------------------
 7041|      0|    Inst.setOpcode(ARM::t2LDRSHpci);
 7042|      0|    return true;
 7043|       |  // Handle NEON VST complex aliases.
 7044|      0|  case ARM::VST1LNdWB_register_Asm_8:
  ------------------
  |  Branch (7044:3): [True: 0, False: 30.9k]
  ------------------
 7045|      0|  case ARM::VST1LNdWB_register_Asm_16:
  ------------------
  |  Branch (7045:3): [True: 0, False: 30.9k]
  ------------------
 7046|      0|  case ARM::VST1LNdWB_register_Asm_32: {
  ------------------
  |  Branch (7046:3): [True: 0, False: 30.9k]
  ------------------
 7047|      0|    MCInst TmpInst(Inst.getAddress());
 7048|       |    // Shuffle the operands around so the lane index operand is in the
 7049|       |    // right place.
 7050|      0|    unsigned Spacing;
 7051|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7052|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7053|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7054|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7055|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7056|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7057|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7058|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7059|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7060|      0|    Inst = TmpInst;
 7061|      0|    return true;
 7062|      0|  }
 7063|       |
 7064|      0|  case ARM::VST2LNdWB_register_Asm_8:
  ------------------
  |  Branch (7064:3): [True: 0, False: 30.9k]
  ------------------
 7065|      0|  case ARM::VST2LNdWB_register_Asm_16:
  ------------------
  |  Branch (7065:3): [True: 0, False: 30.9k]
  ------------------
 7066|      0|  case ARM::VST2LNdWB_register_Asm_32:
  ------------------
  |  Branch (7066:3): [True: 0, False: 30.9k]
  ------------------
 7067|      0|  case ARM::VST2LNqWB_register_Asm_16:
  ------------------
  |  Branch (7067:3): [True: 0, False: 30.9k]
  ------------------
 7068|      0|  case ARM::VST2LNqWB_register_Asm_32: {
  ------------------
  |  Branch (7068:3): [True: 0, False: 30.9k]
  ------------------
 7069|      0|    MCInst TmpInst(Inst.getAddress());
 7070|       |    // Shuffle the operands around so the lane index operand is in the
 7071|       |    // right place.
 7072|      0|    unsigned Spacing;
 7073|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7074|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7075|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7076|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7077|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7078|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7079|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7080|      0|                                            Spacing));
 7081|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7082|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7083|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7084|      0|    Inst = TmpInst;
 7085|      0|    return true;
 7086|      0|  }
 7087|       |
 7088|      0|  case ARM::VST3LNdWB_register_Asm_8:
  ------------------
  |  Branch (7088:3): [True: 0, False: 30.9k]
  ------------------
 7089|      0|  case ARM::VST3LNdWB_register_Asm_16:
  ------------------
  |  Branch (7089:3): [True: 0, False: 30.9k]
  ------------------
 7090|      0|  case ARM::VST3LNdWB_register_Asm_32:
  ------------------
  |  Branch (7090:3): [True: 0, False: 30.9k]
  ------------------
 7091|      0|  case ARM::VST3LNqWB_register_Asm_16:
  ------------------
  |  Branch (7091:3): [True: 0, False: 30.9k]
  ------------------
 7092|      0|  case ARM::VST3LNqWB_register_Asm_32: {
  ------------------
  |  Branch (7092:3): [True: 0, False: 30.9k]
  ------------------
 7093|      0|    MCInst TmpInst(Inst.getAddress());
 7094|       |    // Shuffle the operands around so the lane index operand is in the
 7095|       |    // right place.
 7096|      0|    unsigned Spacing;
 7097|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7098|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7099|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7100|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7101|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7102|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7103|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7104|      0|                                            Spacing));
 7105|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7106|      0|                                            Spacing * 2));
 7107|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7108|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7109|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7110|      0|    Inst = TmpInst;
 7111|      0|    return true;
 7112|      0|  }
 7113|       |
 7114|      0|  case ARM::VST4LNdWB_register_Asm_8:
  ------------------
  |  Branch (7114:3): [True: 0, False: 30.9k]
  ------------------
 7115|      0|  case ARM::VST4LNdWB_register_Asm_16:
  ------------------
  |  Branch (7115:3): [True: 0, False: 30.9k]
  ------------------
 7116|      0|  case ARM::VST4LNdWB_register_Asm_32:
  ------------------
  |  Branch (7116:3): [True: 0, False: 30.9k]
  ------------------
 7117|      0|  case ARM::VST4LNqWB_register_Asm_16:
  ------------------
  |  Branch (7117:3): [True: 0, False: 30.9k]
  ------------------
 7118|      0|  case ARM::VST4LNqWB_register_Asm_32: {
  ------------------
  |  Branch (7118:3): [True: 0, False: 30.9k]
  ------------------
 7119|      0|    MCInst TmpInst(Inst.getAddress());
 7120|       |    // Shuffle the operands around so the lane index operand is in the
 7121|       |    // right place.
 7122|      0|    unsigned Spacing;
 7123|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7124|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7125|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7126|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7127|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7128|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7129|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7130|      0|                                            Spacing));
 7131|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7132|      0|                                            Spacing * 2));
 7133|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7134|      0|                                            Spacing * 3));
 7135|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7136|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7137|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7138|      0|    Inst = TmpInst;
 7139|      0|    return true;
 7140|      0|  }
 7141|       |
 7142|      0|  case ARM::VST1LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7142:3): [True: 0, False: 30.9k]
  ------------------
 7143|      0|  case ARM::VST1LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7143:3): [True: 0, False: 30.9k]
  ------------------
 7144|      0|  case ARM::VST1LNdWB_fixed_Asm_32: {
  ------------------
  |  Branch (7144:3): [True: 0, False: 30.9k]
  ------------------
 7145|      0|    MCInst TmpInst(Inst.getAddress());
 7146|       |    // Shuffle the operands around so the lane index operand is in the
 7147|       |    // right place.
 7148|      0|    unsigned Spacing;
 7149|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7150|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7151|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7152|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7153|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7154|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7155|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7156|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7157|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7158|      0|    Inst = TmpInst;
 7159|      0|    return true;
 7160|      0|  }
 7161|       |
 7162|      0|  case ARM::VST2LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7162:3): [True: 0, False: 30.9k]
  ------------------
 7163|      0|  case ARM::VST2LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7163:3): [True: 0, False: 30.9k]
  ------------------
 7164|      0|  case ARM::VST2LNdWB_fixed_Asm_32:
  ------------------
  |  Branch (7164:3): [True: 0, False: 30.9k]
  ------------------
 7165|      0|  case ARM::VST2LNqWB_fixed_Asm_16:
  ------------------
  |  Branch (7165:3): [True: 0, False: 30.9k]
  ------------------
 7166|      0|  case ARM::VST2LNqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7166:3): [True: 0, False: 30.9k]
  ------------------
 7167|      0|    MCInst TmpInst(Inst.getAddress());
 7168|       |    // Shuffle the operands around so the lane index operand is in the
 7169|       |    // right place.
 7170|      0|    unsigned Spacing;
 7171|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7172|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7173|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7174|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7175|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7176|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7177|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7178|      0|                                            Spacing));
 7179|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7180|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7181|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7182|      0|    Inst = TmpInst;
 7183|      0|    return true;
 7184|      0|  }
 7185|       |
 7186|      0|  case ARM::VST3LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7186:3): [True: 0, False: 30.9k]
  ------------------
 7187|      0|  case ARM::VST3LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7187:3): [True: 0, False: 30.9k]
  ------------------
 7188|      0|  case ARM::VST3LNdWB_fixed_Asm_32:
  ------------------
  |  Branch (7188:3): [True: 0, False: 30.9k]
  ------------------
 7189|      0|  case ARM::VST3LNqWB_fixed_Asm_16:
  ------------------
  |  Branch (7189:3): [True: 0, False: 30.9k]
  ------------------
 7190|      0|  case ARM::VST3LNqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7190:3): [True: 0, False: 30.9k]
  ------------------
 7191|      0|    MCInst TmpInst(Inst.getAddress());
 7192|       |    // Shuffle the operands around so the lane index operand is in the
 7193|       |    // right place.
 7194|      0|    unsigned Spacing;
 7195|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7196|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7197|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7198|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7199|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7200|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7201|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7202|      0|                                            Spacing));
 7203|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7204|      0|                                            Spacing * 2));
 7205|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7206|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7207|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7208|      0|    Inst = TmpInst;
 7209|      0|    return true;
 7210|      0|  }
 7211|       |
 7212|      0|  case ARM::VST4LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7212:3): [True: 0, False: 30.9k]
  ------------------
 7213|      0|  case ARM::VST4LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7213:3): [True: 0, False: 30.9k]
  ------------------
 7214|      0|  case ARM::VST4LNdWB_fixed_Asm_32:
  ------------------
  |  Branch (7214:3): [True: 0, False: 30.9k]
  ------------------
 7215|      0|  case ARM::VST4LNqWB_fixed_Asm_16:
  ------------------
  |  Branch (7215:3): [True: 0, False: 30.9k]
  ------------------
 7216|      0|  case ARM::VST4LNqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7216:3): [True: 0, False: 30.9k]
  ------------------
 7217|      0|    MCInst TmpInst(Inst.getAddress());
 7218|       |    // Shuffle the operands around so the lane index operand is in the
 7219|       |    // right place.
 7220|      0|    unsigned Spacing;
 7221|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7222|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7223|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7224|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7225|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7226|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7227|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7228|      0|                                            Spacing));
 7229|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7230|      0|                                            Spacing * 2));
 7231|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7232|      0|                                            Spacing * 3));
 7233|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7234|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7235|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7236|      0|    Inst = TmpInst;
 7237|      0|    return true;
 7238|      0|  }
 7239|       |
 7240|      0|  case ARM::VST1LNdAsm_8:
  ------------------
  |  Branch (7240:3): [True: 0, False: 30.9k]
  ------------------
 7241|      0|  case ARM::VST1LNdAsm_16:
  ------------------
  |  Branch (7241:3): [True: 0, False: 30.9k]
  ------------------
 7242|      0|  case ARM::VST1LNdAsm_32: {
  ------------------
  |  Branch (7242:3): [True: 0, False: 30.9k]
  ------------------
 7243|      0|    MCInst TmpInst(Inst.getAddress());
 7244|       |    // Shuffle the operands around so the lane index operand is in the
 7245|       |    // right place.
 7246|      0|    unsigned Spacing;
 7247|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7248|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7249|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7250|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7251|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7252|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7253|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7254|      0|    Inst = TmpInst;
 7255|      0|    return true;
 7256|      0|  }
 7257|       |
 7258|      0|  case ARM::VST2LNdAsm_8:
  ------------------
  |  Branch (7258:3): [True: 0, False: 30.9k]
  ------------------
 7259|      0|  case ARM::VST2LNdAsm_16:
  ------------------
  |  Branch (7259:3): [True: 0, False: 30.9k]
  ------------------
 7260|      0|  case ARM::VST2LNdAsm_32:
  ------------------
  |  Branch (7260:3): [True: 0, False: 30.9k]
  ------------------
 7261|      0|  case ARM::VST2LNqAsm_16:
  ------------------
  |  Branch (7261:3): [True: 0, False: 30.9k]
  ------------------
 7262|      0|  case ARM::VST2LNqAsm_32: {
  ------------------
  |  Branch (7262:3): [True: 0, False: 30.9k]
  ------------------
 7263|      0|    MCInst TmpInst(Inst.getAddress());
 7264|       |    // Shuffle the operands around so the lane index operand is in the
 7265|       |    // right place.
 7266|      0|    unsigned Spacing;
 7267|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7268|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7269|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7270|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7271|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7272|      0|                                            Spacing));
 7273|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7274|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7275|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7276|      0|    Inst = TmpInst;
 7277|      0|    return true;
 7278|      0|  }
 7279|       |
 7280|      0|  case ARM::VST3LNdAsm_8:
  ------------------
  |  Branch (7280:3): [True: 0, False: 30.9k]
  ------------------
 7281|      0|  case ARM::VST3LNdAsm_16:
  ------------------
  |  Branch (7281:3): [True: 0, False: 30.9k]
  ------------------
 7282|      0|  case ARM::VST3LNdAsm_32:
  ------------------
  |  Branch (7282:3): [True: 0, False: 30.9k]
  ------------------
 7283|      0|  case ARM::VST3LNqAsm_16:
  ------------------
  |  Branch (7283:3): [True: 0, False: 30.9k]
  ------------------
 7284|      0|  case ARM::VST3LNqAsm_32: {
  ------------------
  |  Branch (7284:3): [True: 0, False: 30.9k]
  ------------------
 7285|      0|    MCInst TmpInst(Inst.getAddress());
 7286|       |    // Shuffle the operands around so the lane index operand is in the
 7287|       |    // right place.
 7288|      0|    unsigned Spacing;
 7289|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7290|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7291|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7292|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7293|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7294|      0|                                            Spacing));
 7295|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7296|      0|                                            Spacing * 2));
 7297|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7298|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7299|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7300|      0|    Inst = TmpInst;
 7301|      0|    return true;
 7302|      0|  }
 7303|       |
 7304|      0|  case ARM::VST4LNdAsm_8:
  ------------------
  |  Branch (7304:3): [True: 0, False: 30.9k]
  ------------------
 7305|      0|  case ARM::VST4LNdAsm_16:
  ------------------
  |  Branch (7305:3): [True: 0, False: 30.9k]
  ------------------
 7306|      0|  case ARM::VST4LNdAsm_32:
  ------------------
  |  Branch (7306:3): [True: 0, False: 30.9k]
  ------------------
 7307|      0|  case ARM::VST4LNqAsm_16:
  ------------------
  |  Branch (7307:3): [True: 0, False: 30.9k]
  ------------------
 7308|      0|  case ARM::VST4LNqAsm_32: {
  ------------------
  |  Branch (7308:3): [True: 0, False: 30.9k]
  ------------------
 7309|      0|    MCInst TmpInst(Inst.getAddress());
 7310|       |    // Shuffle the operands around so the lane index operand is in the
 7311|       |    // right place.
 7312|      0|    unsigned Spacing;
 7313|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7314|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7315|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7316|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7317|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7318|      0|                                            Spacing));
 7319|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7320|      0|                                            Spacing * 2));
 7321|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7322|      0|                                            Spacing * 3));
 7323|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7324|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7325|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7326|      0|    Inst = TmpInst;
 7327|      0|    return true;
 7328|      0|  }
 7329|       |
 7330|       |  // Handle NEON VLD complex aliases.
 7331|      0|  case ARM::VLD1LNdWB_register_Asm_8:
  ------------------
  |  Branch (7331:3): [True: 0, False: 30.9k]
  ------------------
 7332|      0|  case ARM::VLD1LNdWB_register_Asm_16:
  ------------------
  |  Branch (7332:3): [True: 0, False: 30.9k]
  ------------------
 7333|      0|  case ARM::VLD1LNdWB_register_Asm_32: {
  ------------------
  |  Branch (7333:3): [True: 0, False: 30.9k]
  ------------------
 7334|      0|    MCInst TmpInst(Inst.getAddress());
 7335|       |    // Shuffle the operands around so the lane index operand is in the
 7336|       |    // right place.
 7337|      0|    unsigned Spacing;
 7338|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7339|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7340|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7341|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7342|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7343|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7344|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7345|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7346|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7347|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7348|      0|    Inst = TmpInst;
 7349|      0|    return true;
 7350|      0|  }
 7351|       |
 7352|      0|  case ARM::VLD2LNdWB_register_Asm_8:
  ------------------
  |  Branch (7352:3): [True: 0, False: 30.9k]
  ------------------
 7353|      0|  case ARM::VLD2LNdWB_register_Asm_16:
  ------------------
  |  Branch (7353:3): [True: 0, False: 30.9k]
  ------------------
 7354|      0|  case ARM::VLD2LNdWB_register_Asm_32:
  ------------------
  |  Branch (7354:3): [True: 0, False: 30.9k]
  ------------------
 7355|      0|  case ARM::VLD2LNqWB_register_Asm_16:
  ------------------
  |  Branch (7355:3): [True: 0, False: 30.9k]
  ------------------
 7356|      0|  case ARM::VLD2LNqWB_register_Asm_32: {
  ------------------
  |  Branch (7356:3): [True: 0, False: 30.9k]
  ------------------
 7357|      0|    MCInst TmpInst(Inst.getAddress());
 7358|       |    // Shuffle the operands around so the lane index operand is in the
 7359|       |    // right place.
 7360|      0|    unsigned Spacing;
 7361|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7362|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7363|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7364|      0|                                            Spacing));
 7365|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7366|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7367|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7368|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7369|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7370|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7371|      0|                                            Spacing));
 7372|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7373|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7374|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7375|      0|    Inst = TmpInst;
 7376|      0|    return true;
 7377|      0|  }
 7378|       |
 7379|      0|  case ARM::VLD3LNdWB_register_Asm_8:
  ------------------
  |  Branch (7379:3): [True: 0, False: 30.9k]
  ------------------
 7380|      0|  case ARM::VLD3LNdWB_register_Asm_16:
  ------------------
  |  Branch (7380:3): [True: 0, False: 30.9k]
  ------------------
 7381|      0|  case ARM::VLD3LNdWB_register_Asm_32:
  ------------------
  |  Branch (7381:3): [True: 0, False: 30.9k]
  ------------------
 7382|      0|  case ARM::VLD3LNqWB_register_Asm_16:
  ------------------
  |  Branch (7382:3): [True: 0, False: 30.9k]
  ------------------
 7383|      0|  case ARM::VLD3LNqWB_register_Asm_32: {
  ------------------
  |  Branch (7383:3): [True: 0, False: 30.9k]
  ------------------
 7384|      0|    MCInst TmpInst(Inst.getAddress());
 7385|       |    // Shuffle the operands around so the lane index operand is in the
 7386|       |    // right place.
 7387|      0|    unsigned Spacing;
 7388|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7389|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7390|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7391|      0|                                            Spacing));
 7392|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7393|      0|                                            Spacing * 2));
 7394|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7395|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7396|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7397|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7398|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7399|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7400|      0|                                            Spacing));
 7401|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7402|      0|                                            Spacing * 2));
 7403|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7404|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7405|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7406|      0|    Inst = TmpInst;
 7407|      0|    return true;
 7408|      0|  }
 7409|       |
 7410|      0|  case ARM::VLD4LNdWB_register_Asm_8:
  ------------------
  |  Branch (7410:3): [True: 0, False: 30.9k]
  ------------------
 7411|      0|  case ARM::VLD4LNdWB_register_Asm_16:
  ------------------
  |  Branch (7411:3): [True: 0, False: 30.9k]
  ------------------
 7412|      0|  case ARM::VLD4LNdWB_register_Asm_32:
  ------------------
  |  Branch (7412:3): [True: 0, False: 30.9k]
  ------------------
 7413|      0|  case ARM::VLD4LNqWB_register_Asm_16:
  ------------------
  |  Branch (7413:3): [True: 0, False: 30.9k]
  ------------------
 7414|      0|  case ARM::VLD4LNqWB_register_Asm_32: {
  ------------------
  |  Branch (7414:3): [True: 0, False: 30.9k]
  ------------------
 7415|      0|    MCInst TmpInst(Inst.getAddress());
 7416|       |    // Shuffle the operands around so the lane index operand is in the
 7417|       |    // right place.
 7418|      0|    unsigned Spacing;
 7419|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7420|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7421|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7422|      0|                                            Spacing));
 7423|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7424|      0|                                            Spacing * 2));
 7425|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7426|      0|                                            Spacing * 3));
 7427|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7428|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7429|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7430|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rm
 7431|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7432|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7433|      0|                                            Spacing));
 7434|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7435|      0|                                            Spacing * 2));
 7436|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7437|      0|                                            Spacing * 3));
 7438|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7439|      0|    TmpInst.addOperand(Inst.getOperand(5)); // CondCode
 7440|      0|    TmpInst.addOperand(Inst.getOperand(6));
 7441|      0|    Inst = TmpInst;
 7442|      0|    return true;
 7443|      0|  }
 7444|       |
 7445|      0|  case ARM::VLD1LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7445:3): [True: 0, False: 30.9k]
  ------------------
 7446|      0|  case ARM::VLD1LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7446:3): [True: 0, False: 30.9k]
  ------------------
 7447|      0|  case ARM::VLD1LNdWB_fixed_Asm_32: {
  ------------------
  |  Branch (7447:3): [True: 0, False: 30.9k]
  ------------------
 7448|      0|    MCInst TmpInst(Inst.getAddress());
 7449|       |    // Shuffle the operands around so the lane index operand is in the
 7450|       |    // right place.
 7451|      0|    unsigned Spacing;
 7452|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7453|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7454|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7455|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7456|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7457|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7458|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7459|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7460|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7461|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7462|      0|    Inst = TmpInst;
 7463|      0|    return true;
 7464|      0|  }
 7465|       |
 7466|      0|  case ARM::VLD2LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7466:3): [True: 0, False: 30.9k]
  ------------------
 7467|      0|  case ARM::VLD2LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7467:3): [True: 0, False: 30.9k]
  ------------------
 7468|      0|  case ARM::VLD2LNdWB_fixed_Asm_32:
  ------------------
  |  Branch (7468:3): [True: 0, False: 30.9k]
  ------------------
 7469|      0|  case ARM::VLD2LNqWB_fixed_Asm_16:
  ------------------
  |  Branch (7469:3): [True: 0, False: 30.9k]
  ------------------
 7470|      0|  case ARM::VLD2LNqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7470:3): [True: 0, False: 30.9k]
  ------------------
 7471|      0|    MCInst TmpInst(Inst.getAddress());
 7472|       |    // Shuffle the operands around so the lane index operand is in the
 7473|       |    // right place.
 7474|      0|    unsigned Spacing;
 7475|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7476|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7477|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7478|      0|                                            Spacing));
 7479|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7480|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7481|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7482|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7483|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7484|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7485|      0|                                            Spacing));
 7486|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7487|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7488|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7489|      0|    Inst = TmpInst;
 7490|      0|    return true;
 7491|      0|  }
 7492|       |
 7493|      0|  case ARM::VLD3LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7493:3): [True: 0, False: 30.9k]
  ------------------
 7494|      0|  case ARM::VLD3LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7494:3): [True: 0, False: 30.9k]
  ------------------
 7495|      0|  case ARM::VLD3LNdWB_fixed_Asm_32:
  ------------------
  |  Branch (7495:3): [True: 0, False: 30.9k]
  ------------------
 7496|      0|  case ARM::VLD3LNqWB_fixed_Asm_16:
  ------------------
  |  Branch (7496:3): [True: 0, False: 30.9k]
  ------------------
 7497|      0|  case ARM::VLD3LNqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7497:3): [True: 0, False: 30.9k]
  ------------------
 7498|      0|    MCInst TmpInst(Inst.getAddress());
 7499|       |    // Shuffle the operands around so the lane index operand is in the
 7500|       |    // right place.
 7501|      0|    unsigned Spacing;
 7502|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7503|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7504|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7505|      0|                                            Spacing));
 7506|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7507|      0|                                            Spacing * 2));
 7508|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7509|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7510|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7511|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7512|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7513|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7514|      0|                                            Spacing));
 7515|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7516|      0|                                            Spacing * 2));
 7517|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7518|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7519|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7520|      0|    Inst = TmpInst;
 7521|      0|    return true;
 7522|      0|  }
 7523|       |
 7524|      0|  case ARM::VLD4LNdWB_fixed_Asm_8:
  ------------------
  |  Branch (7524:3): [True: 0, False: 30.9k]
  ------------------
 7525|      0|  case ARM::VLD4LNdWB_fixed_Asm_16:
  ------------------
  |  Branch (7525:3): [True: 0, False: 30.9k]
  ------------------
 7526|      0|  case ARM::VLD4LNdWB_fixed_Asm_32:
  ------------------
  |  Branch (7526:3): [True: 0, False: 30.9k]
  ------------------
 7527|      0|  case ARM::VLD4LNqWB_fixed_Asm_16:
  ------------------
  |  Branch (7527:3): [True: 0, False: 30.9k]
  ------------------
 7528|      0|  case ARM::VLD4LNqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7528:3): [True: 0, False: 30.9k]
  ------------------
 7529|      0|    MCInst TmpInst(Inst.getAddress());
 7530|       |    // Shuffle the operands around so the lane index operand is in the
 7531|       |    // right place.
 7532|      0|    unsigned Spacing;
 7533|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7534|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7535|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7536|      0|                                            Spacing));
 7537|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7538|      0|                                            Spacing * 2));
 7539|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7540|      0|                                            Spacing * 3));
 7541|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn_wb
 7542|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7543|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7544|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7545|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7546|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7547|      0|                                            Spacing));
 7548|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7549|      0|                                            Spacing * 2));
 7550|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7551|      0|                                            Spacing * 3));
 7552|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7553|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7554|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7555|      0|    Inst = TmpInst;
 7556|      0|    return true;
 7557|      0|  }
 7558|       |
 7559|      0|  case ARM::VLD1LNdAsm_8:
  ------------------
  |  Branch (7559:3): [True: 0, False: 30.9k]
  ------------------
 7560|      0|  case ARM::VLD1LNdAsm_16:
  ------------------
  |  Branch (7560:3): [True: 0, False: 30.9k]
  ------------------
 7561|      0|  case ARM::VLD1LNdAsm_32: {
  ------------------
  |  Branch (7561:3): [True: 0, False: 30.9k]
  ------------------
 7562|      0|    MCInst TmpInst(Inst.getAddress());
 7563|       |    // Shuffle the operands around so the lane index operand is in the
 7564|       |    // right place.
 7565|      0|    unsigned Spacing;
 7566|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7567|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7568|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7569|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7570|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7571|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7572|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7573|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7574|      0|    Inst = TmpInst;
 7575|      0|    return true;
 7576|      0|  }
 7577|       |
 7578|      0|  case ARM::VLD2LNdAsm_8:
  ------------------
  |  Branch (7578:3): [True: 0, False: 30.9k]
  ------------------
 7579|      0|  case ARM::VLD2LNdAsm_16:
  ------------------
  |  Branch (7579:3): [True: 0, False: 30.9k]
  ------------------
 7580|      0|  case ARM::VLD2LNdAsm_32:
  ------------------
  |  Branch (7580:3): [True: 0, False: 30.9k]
  ------------------
 7581|      0|  case ARM::VLD2LNqAsm_16:
  ------------------
  |  Branch (7581:3): [True: 0, False: 30.9k]
  ------------------
 7582|      0|  case ARM::VLD2LNqAsm_32: {
  ------------------
  |  Branch (7582:3): [True: 0, False: 30.9k]
  ------------------
 7583|      0|    MCInst TmpInst(Inst.getAddress());
 7584|       |    // Shuffle the operands around so the lane index operand is in the
 7585|       |    // right place.
 7586|      0|    unsigned Spacing;
 7587|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7588|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7589|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7590|      0|                                            Spacing));
 7591|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7592|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7593|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7594|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7595|      0|                                            Spacing));
 7596|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7597|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7598|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7599|      0|    Inst = TmpInst;
 7600|      0|    return true;
 7601|      0|  }
 7602|       |
 7603|      0|  case ARM::VLD3LNdAsm_8:
  ------------------
  |  Branch (7603:3): [True: 0, False: 30.9k]
  ------------------
 7604|      0|  case ARM::VLD3LNdAsm_16:
  ------------------
  |  Branch (7604:3): [True: 0, False: 30.9k]
  ------------------
 7605|      0|  case ARM::VLD3LNdAsm_32:
  ------------------
  |  Branch (7605:3): [True: 0, False: 30.9k]
  ------------------
 7606|      0|  case ARM::VLD3LNqAsm_16:
  ------------------
  |  Branch (7606:3): [True: 0, False: 30.9k]
  ------------------
 7607|      0|  case ARM::VLD3LNqAsm_32: {
  ------------------
  |  Branch (7607:3): [True: 0, False: 30.9k]
  ------------------
 7608|      0|    MCInst TmpInst(Inst.getAddress());
 7609|       |    // Shuffle the operands around so the lane index operand is in the
 7610|       |    // right place.
 7611|      0|    unsigned Spacing;
 7612|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7613|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7614|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7615|      0|                                            Spacing));
 7616|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7617|      0|                                            Spacing * 2));
 7618|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7619|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7620|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7621|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7622|      0|                                            Spacing));
 7623|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7624|      0|                                            Spacing * 2));
 7625|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7626|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7627|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7628|      0|    Inst = TmpInst;
 7629|      0|    return true;
 7630|      0|  }
 7631|       |
 7632|      0|  case ARM::VLD4LNdAsm_8:
  ------------------
  |  Branch (7632:3): [True: 0, False: 30.9k]
  ------------------
 7633|      0|  case ARM::VLD4LNdAsm_16:
  ------------------
  |  Branch (7633:3): [True: 0, False: 30.9k]
  ------------------
 7634|      0|  case ARM::VLD4LNdAsm_32:
  ------------------
  |  Branch (7634:3): [True: 0, False: 30.9k]
  ------------------
 7635|      0|  case ARM::VLD4LNqAsm_16:
  ------------------
  |  Branch (7635:3): [True: 0, False: 30.9k]
  ------------------
 7636|      0|  case ARM::VLD4LNqAsm_32: {
  ------------------
  |  Branch (7636:3): [True: 0, False: 30.9k]
  ------------------
 7637|      0|    MCInst TmpInst(Inst.getAddress());
 7638|       |    // Shuffle the operands around so the lane index operand is in the
 7639|       |    // right place.
 7640|      0|    unsigned Spacing;
 7641|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7642|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7643|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7644|      0|                                            Spacing));
 7645|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7646|      0|                                            Spacing * 2));
 7647|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7648|      0|                                            Spacing * 3));
 7649|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rn
 7650|      0|    TmpInst.addOperand(Inst.getOperand(3)); // alignment
 7651|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Tied operand src (== Vd)
 7652|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7653|      0|                                            Spacing));
 7654|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7655|      0|                                            Spacing * 2));
 7656|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7657|      0|                                            Spacing * 3));
 7658|      0|    TmpInst.addOperand(Inst.getOperand(1)); // lane
 7659|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7660|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7661|      0|    Inst = TmpInst;
 7662|      0|    return true;
 7663|      0|  }
 7664|       |
 7665|       |  // VLD3DUP single 3-element structure to all lanes instructions.
 7666|      0|  case ARM::VLD3DUPdAsm_8:
  ------------------
  |  Branch (7666:3): [True: 0, False: 30.9k]
  ------------------
 7667|      0|  case ARM::VLD3DUPdAsm_16:
  ------------------
  |  Branch (7667:3): [True: 0, False: 30.9k]
  ------------------
 7668|      0|  case ARM::VLD3DUPdAsm_32:
  ------------------
  |  Branch (7668:3): [True: 0, False: 30.9k]
  ------------------
 7669|      0|  case ARM::VLD3DUPqAsm_8:
  ------------------
  |  Branch (7669:3): [True: 0, False: 30.9k]
  ------------------
 7670|      0|  case ARM::VLD3DUPqAsm_16:
  ------------------
  |  Branch (7670:3): [True: 0, False: 30.9k]
  ------------------
 7671|      0|  case ARM::VLD3DUPqAsm_32: {
  ------------------
  |  Branch (7671:3): [True: 0, False: 30.9k]
  ------------------
 7672|      0|    MCInst TmpInst(Inst.getAddress());
 7673|      0|    unsigned Spacing;
 7674|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7675|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7676|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7677|      0|                                            Spacing));
 7678|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7679|      0|                                            Spacing * 2));
 7680|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7681|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7682|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7683|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7684|      0|    Inst = TmpInst;
 7685|      0|    return true;
 7686|      0|  }
 7687|       |
 7688|      0|  case ARM::VLD3DUPdWB_fixed_Asm_8:
  ------------------
  |  Branch (7688:3): [True: 0, False: 30.9k]
  ------------------
 7689|      0|  case ARM::VLD3DUPdWB_fixed_Asm_16:
  ------------------
  |  Branch (7689:3): [True: 0, False: 30.9k]
  ------------------
 7690|      0|  case ARM::VLD3DUPdWB_fixed_Asm_32:
  ------------------
  |  Branch (7690:3): [True: 0, False: 30.9k]
  ------------------
 7691|      0|  case ARM::VLD3DUPqWB_fixed_Asm_8:
  ------------------
  |  Branch (7691:3): [True: 0, False: 30.9k]
  ------------------
 7692|      0|  case ARM::VLD3DUPqWB_fixed_Asm_16:
  ------------------
  |  Branch (7692:3): [True: 0, False: 30.9k]
  ------------------
 7693|      0|  case ARM::VLD3DUPqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7693:3): [True: 0, False: 30.9k]
  ------------------
 7694|      0|    MCInst TmpInst(Inst.getAddress());
 7695|      0|    unsigned Spacing;
 7696|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7697|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7698|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7699|      0|                                            Spacing));
 7700|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7701|      0|                                            Spacing * 2));
 7702|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7703|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7704|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7705|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7706|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7707|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7708|      0|    Inst = TmpInst;
 7709|      0|    return true;
 7710|      0|  }
 7711|       |
 7712|      0|  case ARM::VLD3DUPdWB_register_Asm_8:
  ------------------
  |  Branch (7712:3): [True: 0, False: 30.9k]
  ------------------
 7713|      0|  case ARM::VLD3DUPdWB_register_Asm_16:
  ------------------
  |  Branch (7713:3): [True: 0, False: 30.9k]
  ------------------
 7714|      0|  case ARM::VLD3DUPdWB_register_Asm_32:
  ------------------
  |  Branch (7714:3): [True: 0, False: 30.9k]
  ------------------
 7715|      0|  case ARM::VLD3DUPqWB_register_Asm_8:
  ------------------
  |  Branch (7715:3): [True: 0, False: 30.9k]
  ------------------
 7716|      0|  case ARM::VLD3DUPqWB_register_Asm_16:
  ------------------
  |  Branch (7716:3): [True: 0, False: 30.9k]
  ------------------
 7717|      0|  case ARM::VLD3DUPqWB_register_Asm_32: {
  ------------------
  |  Branch (7717:3): [True: 0, False: 30.9k]
  ------------------
 7718|      0|    MCInst TmpInst(Inst.getAddress());
 7719|      0|    unsigned Spacing;
 7720|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7721|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7722|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7723|      0|                                            Spacing));
 7724|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7725|      0|                                            Spacing * 2));
 7726|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7727|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7728|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7729|      0|    TmpInst.addOperand(Inst.getOperand(3)); // Rm
 7730|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7731|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7732|      0|    Inst = TmpInst;
 7733|      0|    return true;
 7734|      0|  }
 7735|       |
 7736|       |  // VLD3 multiple 3-element structure instructions.
 7737|      0|  case ARM::VLD3dAsm_8:
  ------------------
  |  Branch (7737:3): [True: 0, False: 30.9k]
  ------------------
 7738|      0|  case ARM::VLD3dAsm_16:
  ------------------
  |  Branch (7738:3): [True: 0, False: 30.9k]
  ------------------
 7739|      0|  case ARM::VLD3dAsm_32:
  ------------------
  |  Branch (7739:3): [True: 0, False: 30.9k]
  ------------------
 7740|      0|  case ARM::VLD3qAsm_8:
  ------------------
  |  Branch (7740:3): [True: 0, False: 30.9k]
  ------------------
 7741|      0|  case ARM::VLD3qAsm_16:
  ------------------
  |  Branch (7741:3): [True: 0, False: 30.9k]
  ------------------
 7742|      0|  case ARM::VLD3qAsm_32: {
  ------------------
  |  Branch (7742:3): [True: 0, False: 30.9k]
  ------------------
 7743|      0|    MCInst TmpInst(Inst.getAddress());
 7744|      0|    unsigned Spacing;
 7745|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7746|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7747|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7748|      0|                                            Spacing));
 7749|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7750|      0|                                            Spacing * 2));
 7751|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7752|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7753|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7754|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7755|      0|    Inst = TmpInst;
 7756|      0|    return true;
 7757|      0|  }
 7758|       |
 7759|      0|  case ARM::VLD3dWB_fixed_Asm_8:
  ------------------
  |  Branch (7759:3): [True: 0, False: 30.9k]
  ------------------
 7760|      0|  case ARM::VLD3dWB_fixed_Asm_16:
  ------------------
  |  Branch (7760:3): [True: 0, False: 30.9k]
  ------------------
 7761|      0|  case ARM::VLD3dWB_fixed_Asm_32:
  ------------------
  |  Branch (7761:3): [True: 0, False: 30.9k]
  ------------------
 7762|      0|  case ARM::VLD3qWB_fixed_Asm_8:
  ------------------
  |  Branch (7762:3): [True: 0, False: 30.9k]
  ------------------
 7763|      0|  case ARM::VLD3qWB_fixed_Asm_16:
  ------------------
  |  Branch (7763:3): [True: 0, False: 30.9k]
  ------------------
 7764|      0|  case ARM::VLD3qWB_fixed_Asm_32: {
  ------------------
  |  Branch (7764:3): [True: 0, False: 30.9k]
  ------------------
 7765|      0|    MCInst TmpInst(Inst.getAddress());
 7766|      0|    unsigned Spacing;
 7767|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7768|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7769|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7770|      0|                                            Spacing));
 7771|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7772|      0|                                            Spacing * 2));
 7773|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7774|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7775|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7776|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7777|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7778|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7779|      0|    Inst = TmpInst;
 7780|      0|    return true;
 7781|      0|  }
 7782|       |
 7783|      0|  case ARM::VLD3dWB_register_Asm_8:
  ------------------
  |  Branch (7783:3): [True: 0, False: 30.9k]
  ------------------
 7784|      0|  case ARM::VLD3dWB_register_Asm_16:
  ------------------
  |  Branch (7784:3): [True: 0, False: 30.9k]
  ------------------
 7785|      0|  case ARM::VLD3dWB_register_Asm_32:
  ------------------
  |  Branch (7785:3): [True: 0, False: 30.9k]
  ------------------
 7786|      0|  case ARM::VLD3qWB_register_Asm_8:
  ------------------
  |  Branch (7786:3): [True: 0, False: 30.9k]
  ------------------
 7787|      0|  case ARM::VLD3qWB_register_Asm_16:
  ------------------
  |  Branch (7787:3): [True: 0, False: 30.9k]
  ------------------
 7788|      0|  case ARM::VLD3qWB_register_Asm_32: {
  ------------------
  |  Branch (7788:3): [True: 0, False: 30.9k]
  ------------------
 7789|      0|    MCInst TmpInst(Inst.getAddress());
 7790|      0|    unsigned Spacing;
 7791|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7792|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7793|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7794|      0|                                            Spacing));
 7795|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7796|      0|                                            Spacing * 2));
 7797|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7798|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7799|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7800|      0|    TmpInst.addOperand(Inst.getOperand(3)); // Rm
 7801|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7802|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7803|      0|    Inst = TmpInst;
 7804|      0|    return true;
 7805|      0|  }
 7806|       |
 7807|       |  // VLD4DUP single 3-element structure to all lanes instructions.
 7808|      0|  case ARM::VLD4DUPdAsm_8:
  ------------------
  |  Branch (7808:3): [True: 0, False: 30.9k]
  ------------------
 7809|      0|  case ARM::VLD4DUPdAsm_16:
  ------------------
  |  Branch (7809:3): [True: 0, False: 30.9k]
  ------------------
 7810|      0|  case ARM::VLD4DUPdAsm_32:
  ------------------
  |  Branch (7810:3): [True: 0, False: 30.9k]
  ------------------
 7811|      0|  case ARM::VLD4DUPqAsm_8:
  ------------------
  |  Branch (7811:3): [True: 0, False: 30.9k]
  ------------------
 7812|      0|  case ARM::VLD4DUPqAsm_16:
  ------------------
  |  Branch (7812:3): [True: 0, False: 30.9k]
  ------------------
 7813|      0|  case ARM::VLD4DUPqAsm_32: {
  ------------------
  |  Branch (7813:3): [True: 0, False: 30.9k]
  ------------------
 7814|      0|    MCInst TmpInst(Inst.getAddress());
 7815|      0|    unsigned Spacing;
 7816|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7817|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7818|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7819|      0|                                            Spacing));
 7820|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7821|      0|                                            Spacing * 2));
 7822|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7823|      0|                                            Spacing * 3));
 7824|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7825|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7826|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7827|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7828|      0|    Inst = TmpInst;
 7829|      0|    return true;
 7830|      0|  }
 7831|       |
 7832|      0|  case ARM::VLD4DUPdWB_fixed_Asm_8:
  ------------------
  |  Branch (7832:3): [True: 0, False: 30.9k]
  ------------------
 7833|      0|  case ARM::VLD4DUPdWB_fixed_Asm_16:
  ------------------
  |  Branch (7833:3): [True: 0, False: 30.9k]
  ------------------
 7834|      0|  case ARM::VLD4DUPdWB_fixed_Asm_32:
  ------------------
  |  Branch (7834:3): [True: 0, False: 30.9k]
  ------------------
 7835|      0|  case ARM::VLD4DUPqWB_fixed_Asm_8:
  ------------------
  |  Branch (7835:3): [True: 0, False: 30.9k]
  ------------------
 7836|      0|  case ARM::VLD4DUPqWB_fixed_Asm_16:
  ------------------
  |  Branch (7836:3): [True: 0, False: 30.9k]
  ------------------
 7837|      0|  case ARM::VLD4DUPqWB_fixed_Asm_32: {
  ------------------
  |  Branch (7837:3): [True: 0, False: 30.9k]
  ------------------
 7838|      0|    MCInst TmpInst(Inst.getAddress());
 7839|      0|    unsigned Spacing;
 7840|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7841|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7842|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7843|      0|                                            Spacing));
 7844|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7845|      0|                                            Spacing * 2));
 7846|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7847|      0|                                            Spacing * 3));
 7848|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7849|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7850|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7851|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7852|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7853|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7854|      0|    Inst = TmpInst;
 7855|      0|    return true;
 7856|      0|  }
 7857|       |
 7858|      0|  case ARM::VLD4DUPdWB_register_Asm_8:
  ------------------
  |  Branch (7858:3): [True: 0, False: 30.9k]
  ------------------
 7859|      0|  case ARM::VLD4DUPdWB_register_Asm_16:
  ------------------
  |  Branch (7859:3): [True: 0, False: 30.9k]
  ------------------
 7860|      0|  case ARM::VLD4DUPdWB_register_Asm_32:
  ------------------
  |  Branch (7860:3): [True: 0, False: 30.9k]
  ------------------
 7861|      0|  case ARM::VLD4DUPqWB_register_Asm_8:
  ------------------
  |  Branch (7861:3): [True: 0, False: 30.9k]
  ------------------
 7862|      0|  case ARM::VLD4DUPqWB_register_Asm_16:
  ------------------
  |  Branch (7862:3): [True: 0, False: 30.9k]
  ------------------
 7863|      0|  case ARM::VLD4DUPqWB_register_Asm_32: {
  ------------------
  |  Branch (7863:3): [True: 0, False: 30.9k]
  ------------------
 7864|      0|    MCInst TmpInst(Inst.getAddress());
 7865|      0|    unsigned Spacing;
 7866|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7867|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7868|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7869|      0|                                            Spacing));
 7870|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7871|      0|                                            Spacing * 2));
 7872|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7873|      0|                                            Spacing * 3));
 7874|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7875|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7876|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7877|      0|    TmpInst.addOperand(Inst.getOperand(3)); // Rm
 7878|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7879|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7880|      0|    Inst = TmpInst;
 7881|      0|    return true;
 7882|      0|  }
 7883|       |
 7884|       |  // VLD4 multiple 4-element structure instructions.
 7885|      0|  case ARM::VLD4dAsm_8:
  ------------------
  |  Branch (7885:3): [True: 0, False: 30.9k]
  ------------------
 7886|      0|  case ARM::VLD4dAsm_16:
  ------------------
  |  Branch (7886:3): [True: 0, False: 30.9k]
  ------------------
 7887|      0|  case ARM::VLD4dAsm_32:
  ------------------
  |  Branch (7887:3): [True: 0, False: 30.9k]
  ------------------
 7888|      0|  case ARM::VLD4qAsm_8:
  ------------------
  |  Branch (7888:3): [True: 0, False: 30.9k]
  ------------------
 7889|      0|  case ARM::VLD4qAsm_16:
  ------------------
  |  Branch (7889:3): [True: 0, False: 30.9k]
  ------------------
 7890|      0|  case ARM::VLD4qAsm_32: {
  ------------------
  |  Branch (7890:3): [True: 0, False: 30.9k]
  ------------------
 7891|      0|    MCInst TmpInst(Inst.getAddress());
 7892|      0|    unsigned Spacing;
 7893|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7894|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7895|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7896|      0|                                            Spacing));
 7897|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7898|      0|                                            Spacing * 2));
 7899|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7900|      0|                                            Spacing * 3));
 7901|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7902|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7903|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7904|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7905|      0|    Inst = TmpInst;
 7906|      0|    return true;
 7907|      0|  }
 7908|       |
 7909|      0|  case ARM::VLD4dWB_fixed_Asm_8:
  ------------------
  |  Branch (7909:3): [True: 0, False: 30.9k]
  ------------------
 7910|      0|  case ARM::VLD4dWB_fixed_Asm_16:
  ------------------
  |  Branch (7910:3): [True: 0, False: 30.9k]
  ------------------
 7911|      0|  case ARM::VLD4dWB_fixed_Asm_32:
  ------------------
  |  Branch (7911:3): [True: 0, False: 30.9k]
  ------------------
 7912|      0|  case ARM::VLD4qWB_fixed_Asm_8:
  ------------------
  |  Branch (7912:3): [True: 0, False: 30.9k]
  ------------------
 7913|      0|  case ARM::VLD4qWB_fixed_Asm_16:
  ------------------
  |  Branch (7913:3): [True: 0, False: 30.9k]
  ------------------
 7914|      0|  case ARM::VLD4qWB_fixed_Asm_32: {
  ------------------
  |  Branch (7914:3): [True: 0, False: 30.9k]
  ------------------
 7915|      0|    MCInst TmpInst(Inst.getAddress());
 7916|      0|    unsigned Spacing;
 7917|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7918|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7919|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7920|      0|                                            Spacing));
 7921|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7922|      0|                                            Spacing * 2));
 7923|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7924|      0|                                            Spacing * 3));
 7925|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7926|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7927|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7928|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7929|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7930|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7931|      0|    Inst = TmpInst;
 7932|      0|    return true;
 7933|      0|  }
 7934|       |
 7935|      0|  case ARM::VLD4dWB_register_Asm_8:
  ------------------
  |  Branch (7935:3): [True: 0, False: 30.9k]
  ------------------
 7936|      0|  case ARM::VLD4dWB_register_Asm_16:
  ------------------
  |  Branch (7936:3): [True: 0, False: 30.9k]
  ------------------
 7937|      0|  case ARM::VLD4dWB_register_Asm_32:
  ------------------
  |  Branch (7937:3): [True: 0, False: 30.9k]
  ------------------
 7938|      0|  case ARM::VLD4qWB_register_Asm_8:
  ------------------
  |  Branch (7938:3): [True: 0, False: 30.9k]
  ------------------
 7939|      0|  case ARM::VLD4qWB_register_Asm_16:
  ------------------
  |  Branch (7939:3): [True: 0, False: 30.9k]
  ------------------
 7940|      0|  case ARM::VLD4qWB_register_Asm_32: {
  ------------------
  |  Branch (7940:3): [True: 0, False: 30.9k]
  ------------------
 7941|      0|    MCInst TmpInst(Inst.getAddress());
 7942|      0|    unsigned Spacing;
 7943|      0|    TmpInst.setOpcode(getRealVLDOpcode(Inst.getOpcode(), Spacing));
 7944|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7945|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7946|      0|                                            Spacing));
 7947|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7948|      0|                                            Spacing * 2));
 7949|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7950|      0|                                            Spacing * 3));
 7951|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7952|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7953|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7954|      0|    TmpInst.addOperand(Inst.getOperand(3)); // Rm
 7955|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 7956|      0|    TmpInst.addOperand(Inst.getOperand(5));
 7957|      0|    Inst = TmpInst;
 7958|      0|    return true;
 7959|      0|  }
 7960|       |
 7961|       |  // VST3 multiple 3-element structure instructions.
 7962|      0|  case ARM::VST3dAsm_8:
  ------------------
  |  Branch (7962:3): [True: 0, False: 30.9k]
  ------------------
 7963|      0|  case ARM::VST3dAsm_16:
  ------------------
  |  Branch (7963:3): [True: 0, False: 30.9k]
  ------------------
 7964|      0|  case ARM::VST3dAsm_32:
  ------------------
  |  Branch (7964:3): [True: 0, False: 30.9k]
  ------------------
 7965|      0|  case ARM::VST3qAsm_8:
  ------------------
  |  Branch (7965:3): [True: 0, False: 30.9k]
  ------------------
 7966|      0|  case ARM::VST3qAsm_16:
  ------------------
  |  Branch (7966:3): [True: 0, False: 30.9k]
  ------------------
 7967|      0|  case ARM::VST3qAsm_32: {
  ------------------
  |  Branch (7967:3): [True: 0, False: 30.9k]
  ------------------
 7968|      0|    MCInst TmpInst(Inst.getAddress());
 7969|      0|    unsigned Spacing;
 7970|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7971|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7972|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7973|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7974|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7975|      0|                                            Spacing));
 7976|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7977|      0|                                            Spacing * 2));
 7978|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 7979|      0|    TmpInst.addOperand(Inst.getOperand(4));
 7980|      0|    Inst = TmpInst;
 7981|      0|    return true;
 7982|      0|  }
 7983|       |
 7984|      0|  case ARM::VST3dWB_fixed_Asm_8:
  ------------------
  |  Branch (7984:3): [True: 0, False: 30.9k]
  ------------------
 7985|      0|  case ARM::VST3dWB_fixed_Asm_16:
  ------------------
  |  Branch (7985:3): [True: 0, False: 30.9k]
  ------------------
 7986|      0|  case ARM::VST3dWB_fixed_Asm_32:
  ------------------
  |  Branch (7986:3): [True: 0, False: 30.9k]
  ------------------
 7987|      0|  case ARM::VST3qWB_fixed_Asm_8:
  ------------------
  |  Branch (7987:3): [True: 0, False: 30.9k]
  ------------------
 7988|      0|  case ARM::VST3qWB_fixed_Asm_16:
  ------------------
  |  Branch (7988:3): [True: 0, False: 30.9k]
  ------------------
 7989|      0|  case ARM::VST3qWB_fixed_Asm_32: {
  ------------------
  |  Branch (7989:3): [True: 0, False: 30.9k]
  ------------------
 7990|      0|    MCInst TmpInst(Inst.getAddress());
 7991|      0|    unsigned Spacing;
 7992|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 7993|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 7994|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 7995|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 7996|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 7997|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 7998|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 7999|      0|                                            Spacing));
 8000|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8001|      0|                                            Spacing * 2));
 8002|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 8003|      0|    TmpInst.addOperand(Inst.getOperand(4));
 8004|      0|    Inst = TmpInst;
 8005|      0|    return true;
 8006|      0|  }
 8007|       |
 8008|      0|  case ARM::VST3dWB_register_Asm_8:
  ------------------
  |  Branch (8008:3): [True: 0, False: 30.9k]
  ------------------
 8009|      0|  case ARM::VST3dWB_register_Asm_16:
  ------------------
  |  Branch (8009:3): [True: 0, False: 30.9k]
  ------------------
 8010|      0|  case ARM::VST3dWB_register_Asm_32:
  ------------------
  |  Branch (8010:3): [True: 0, False: 30.9k]
  ------------------
 8011|      0|  case ARM::VST3qWB_register_Asm_8:
  ------------------
  |  Branch (8011:3): [True: 0, False: 30.9k]
  ------------------
 8012|      0|  case ARM::VST3qWB_register_Asm_16:
  ------------------
  |  Branch (8012:3): [True: 0, False: 30.9k]
  ------------------
 8013|      0|  case ARM::VST3qWB_register_Asm_32: {
  ------------------
  |  Branch (8013:3): [True: 0, False: 30.9k]
  ------------------
 8014|      0|    MCInst TmpInst(Inst.getAddress());
 8015|      0|    unsigned Spacing;
 8016|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 8017|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8018|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 8019|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 8020|      0|    TmpInst.addOperand(Inst.getOperand(3)); // Rm
 8021|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 8022|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8023|      0|                                            Spacing));
 8024|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8025|      0|                                            Spacing * 2));
 8026|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 8027|      0|    TmpInst.addOperand(Inst.getOperand(5));
 8028|      0|    Inst = TmpInst;
 8029|      0|    return true;
 8030|      0|  }
 8031|       |
 8032|       |  // VST4 multiple 3-element structure instructions.
 8033|      0|  case ARM::VST4dAsm_8:
  ------------------
  |  Branch (8033:3): [True: 0, False: 30.9k]
  ------------------
 8034|      0|  case ARM::VST4dAsm_16:
  ------------------
  |  Branch (8034:3): [True: 0, False: 30.9k]
  ------------------
 8035|      0|  case ARM::VST4dAsm_32:
  ------------------
  |  Branch (8035:3): [True: 0, False: 30.9k]
  ------------------
 8036|      0|  case ARM::VST4qAsm_8:
  ------------------
  |  Branch (8036:3): [True: 0, False: 30.9k]
  ------------------
 8037|      0|  case ARM::VST4qAsm_16:
  ------------------
  |  Branch (8037:3): [True: 0, False: 30.9k]
  ------------------
 8038|      0|  case ARM::VST4qAsm_32: {
  ------------------
  |  Branch (8038:3): [True: 0, False: 30.9k]
  ------------------
 8039|      0|    MCInst TmpInst(Inst.getAddress());
 8040|      0|    unsigned Spacing;
 8041|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 8042|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8043|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 8044|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 8045|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8046|      0|                                            Spacing));
 8047|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8048|      0|                                            Spacing * 2));
 8049|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8050|      0|                                            Spacing * 3));
 8051|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 8052|      0|    TmpInst.addOperand(Inst.getOperand(4));
 8053|      0|    Inst = TmpInst;
 8054|      0|    return true;
 8055|      0|  }
 8056|       |
 8057|      0|  case ARM::VST4dWB_fixed_Asm_8:
  ------------------
  |  Branch (8057:3): [True: 0, False: 30.9k]
  ------------------
 8058|      0|  case ARM::VST4dWB_fixed_Asm_16:
  ------------------
  |  Branch (8058:3): [True: 0, False: 30.9k]
  ------------------
 8059|      0|  case ARM::VST4dWB_fixed_Asm_32:
  ------------------
  |  Branch (8059:3): [True: 0, False: 30.9k]
  ------------------
 8060|      0|  case ARM::VST4qWB_fixed_Asm_8:
  ------------------
  |  Branch (8060:3): [True: 0, False: 30.9k]
  ------------------
 8061|      0|  case ARM::VST4qWB_fixed_Asm_16:
  ------------------
  |  Branch (8061:3): [True: 0, False: 30.9k]
  ------------------
 8062|      0|  case ARM::VST4qWB_fixed_Asm_32: {
  ------------------
  |  Branch (8062:3): [True: 0, False: 30.9k]
  ------------------
 8063|      0|    MCInst TmpInst(Inst.getAddress());
 8064|      0|    unsigned Spacing;
 8065|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 8066|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8067|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 8068|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 8069|      0|    TmpInst.addOperand(MCOperand::createReg(0)); // Rm
 8070|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 8071|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8072|      0|                                            Spacing));
 8073|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8074|      0|                                            Spacing * 2));
 8075|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8076|      0|                                            Spacing * 3));
 8077|      0|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 8078|      0|    TmpInst.addOperand(Inst.getOperand(4));
 8079|      0|    Inst = TmpInst;
 8080|      0|    return true;
 8081|      0|  }
 8082|       |
 8083|      0|  case ARM::VST4dWB_register_Asm_8:
  ------------------
  |  Branch (8083:3): [True: 0, False: 30.9k]
  ------------------
 8084|      0|  case ARM::VST4dWB_register_Asm_16:
  ------------------
  |  Branch (8084:3): [True: 0, False: 30.9k]
  ------------------
 8085|      0|  case ARM::VST4dWB_register_Asm_32:
  ------------------
  |  Branch (8085:3): [True: 0, False: 30.9k]
  ------------------
 8086|      0|  case ARM::VST4qWB_register_Asm_8:
  ------------------
  |  Branch (8086:3): [True: 0, False: 30.9k]
  ------------------
 8087|      0|  case ARM::VST4qWB_register_Asm_16:
  ------------------
  |  Branch (8087:3): [True: 0, False: 30.9k]
  ------------------
 8088|      0|  case ARM::VST4qWB_register_Asm_32: {
  ------------------
  |  Branch (8088:3): [True: 0, False: 30.9k]
  ------------------
 8089|      0|    MCInst TmpInst(Inst.getAddress());
 8090|      0|    unsigned Spacing;
 8091|      0|    TmpInst.setOpcode(getRealVSTOpcode(Inst.getOpcode(), Spacing));
 8092|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8093|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn_wb == tied Rn
 8094|      0|    TmpInst.addOperand(Inst.getOperand(2)); // alignment
 8095|      0|    TmpInst.addOperand(Inst.getOperand(3)); // Rm
 8096|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Vd
 8097|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8098|      0|                                            Spacing));
 8099|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8100|      0|                                            Spacing * 2));
 8101|      0|    TmpInst.addOperand(MCOperand::createReg(Inst.getOperand(0).getReg() +
 8102|      0|                                            Spacing * 3));
 8103|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 8104|      0|    TmpInst.addOperand(Inst.getOperand(5));
 8105|      0|    Inst = TmpInst;
 8106|      0|    return true;
 8107|      0|  }
 8108|       |
 8109|       |  // Handle encoding choice for the shift-immediate instructions.
 8110|     43|  case ARM::t2LSLri:
  ------------------
  |  Branch (8110:3): [True: 43, False: 30.9k]
  ------------------
 8111|    102|  case ARM::t2LSRri:
  ------------------
  |  Branch (8111:3): [True: 59, False: 30.9k]
  ------------------
 8112|    115|  case ARM::t2ASRri: {
  ------------------
  |  Branch (8112:3): [True: 13, False: 30.9k]
  ------------------
 8113|    115|    if (isARMLowRegister(Inst.getOperand(0).getReg()) &&
  ------------------
  |  Branch (8113:9): [True: 108, False: 7]
  |  Branch (8113:9): [True: 0, False: 115]
  ------------------
 8114|    108|        Inst.getOperand(0).getReg() == Inst.getOperand(1).getReg() &&
  ------------------
  |  Branch (8114:9): [True: 88, False: 20]
  ------------------
 8115|     88|        Inst.getOperand(5).getReg() == (inITBlock() ? 0 : ARM::CPSR) &&
  ------------------
  |  Branch (8115:9): [True: 0, False: 88]
  |  Branch (8115:41): [True: 0, False: 88]
  ------------------
 8116|      0|        !(static_cast<ARMOperand &>(*Operands[3]).isToken() &&
  ------------------
  |  Branch (8116:11): [True: 0, False: 0]
  ------------------
 8117|      0|          static_cast<ARMOperand &>(*Operands[3]).getToken() == ".w")) {
  ------------------
  |  Branch (8117:11): [True: 0, False: 0]
  ------------------
 8118|      0|      unsigned NewOpc;
 8119|      0|      switch (Inst.getOpcode()) {
 8120|      0|      default: llvm_unreachable("unexpected opcode");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8120:7): [True: 0, False: 0]
  ------------------
 8121|      0|      case ARM::t2LSLri: NewOpc = ARM::tLSLri; break;
  ------------------
  |  Branch (8121:7): [True: 0, False: 0]
  ------------------
 8122|      0|      case ARM::t2LSRri: NewOpc = ARM::tLSRri; break;
  ------------------
  |  Branch (8122:7): [True: 0, False: 0]
  ------------------
 8123|      0|      case ARM::t2ASRri: NewOpc = ARM::tASRri; break;
  ------------------
  |  Branch (8123:7): [True: 0, False: 0]
  ------------------
 8124|      0|      }
 8125|       |      // The Thumb1 operands aren't in the same order. Awesome, eh?
 8126|      0|      MCInst TmpInst(Inst.getAddress());
 8127|      0|      TmpInst.setOpcode(NewOpc);
 8128|      0|      TmpInst.addOperand(Inst.getOperand(0));
 8129|      0|      TmpInst.addOperand(Inst.getOperand(5));
 8130|      0|      TmpInst.addOperand(Inst.getOperand(1));
 8131|      0|      TmpInst.addOperand(Inst.getOperand(2));
 8132|      0|      TmpInst.addOperand(Inst.getOperand(3));
 8133|      0|      TmpInst.addOperand(Inst.getOperand(4));
 8134|      0|      Inst = TmpInst;
 8135|      0|      return true;
 8136|      0|    }
 8137|    115|    return false;
 8138|    115|  }
 8139|       |
 8140|       |  // Handle the Thumb2 mode MOV complex aliases.
 8141|      0|  case ARM::t2MOVsr:
  ------------------
  |  Branch (8141:3): [True: 0, False: 30.9k]
  ------------------
 8142|      0|  case ARM::t2MOVSsr: {
  ------------------
  |  Branch (8142:3): [True: 0, False: 30.9k]
  ------------------
 8143|       |    // Which instruction to expand to depends on the CCOut operand and
 8144|       |    // whether we're in an IT block if the register operands are low
 8145|       |    // registers.
 8146|      0|    bool isNarrow = false;
 8147|      0|    if (isARMLowRegister(Inst.getOperand(0).getReg()) &&
  ------------------
  |  Branch (8147:9): [True: 0, False: 0]
  ------------------
 8148|      0|        isARMLowRegister(Inst.getOperand(1).getReg()) &&
  ------------------
  |  Branch (8148:9): [True: 0, False: 0]
  ------------------
 8149|      0|        isARMLowRegister(Inst.getOperand(2).getReg()) &&
  ------------------
  |  Branch (8149:9): [True: 0, False: 0]
  ------------------
 8150|      0|        Inst.getOperand(0).getReg() == Inst.getOperand(1).getReg() &&
  ------------------
  |  Branch (8150:9): [True: 0, False: 0]
  ------------------
 8151|      0|        inITBlock() == (Inst.getOpcode() == ARM::t2MOVsr))
  ------------------
  |  Branch (8151:9): [True: 0, False: 0]
  ------------------
 8152|      0|      isNarrow = true;
 8153|      0|    MCInst TmpInst(Inst.getAddress());
 8154|      0|    unsigned newOpc;
 8155|      0|    switch(ARM_AM::getSORegShOp(Inst.getOperand(3).getImm())) {
 8156|      0|    default: llvm_unreachable("unexpected opcode!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8156:5): [True: 0, False: 0]
  ------------------
 8157|      0|    case ARM_AM::asr: newOpc = isNarrow ? ARM::tASRrr : ARM::t2ASRrr; break;
  ------------------
  |  Branch (8157:5): [True: 0, False: 0]
  |  Branch (8157:32): [True: 0, False: 0]
  ------------------
 8158|      0|    case ARM_AM::lsr: newOpc = isNarrow ? ARM::tLSRrr : ARM::t2LSRrr; break;
  ------------------
  |  Branch (8158:5): [True: 0, False: 0]
  |  Branch (8158:32): [True: 0, False: 0]
  ------------------
 8159|      0|    case ARM_AM::lsl: newOpc = isNarrow ? ARM::tLSLrr : ARM::t2LSLrr; break;
  ------------------
  |  Branch (8159:5): [True: 0, False: 0]
  |  Branch (8159:32): [True: 0, False: 0]
  ------------------
 8160|      0|    case ARM_AM::ror: newOpc = isNarrow ? ARM::tROR   : ARM::t2RORrr; break;
  ------------------
  |  Branch (8160:5): [True: 0, False: 0]
  |  Branch (8160:32): [True: 0, False: 0]
  ------------------
 8161|      0|    }
 8162|      0|    TmpInst.setOpcode(newOpc);
 8163|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Rd
 8164|      0|    if (isNarrow)
  ------------------
  |  Branch (8164:9): [True: 0, False: 0]
  ------------------
 8165|      0|      TmpInst.addOperand(MCOperand::createReg(
 8166|      0|          Inst.getOpcode() == ARM::t2MOVSsr ? ARM::CPSR : 0));
  ------------------
  |  Branch (8166:11): [True: 0, False: 0]
  ------------------
 8167|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8168|      0|    TmpInst.addOperand(Inst.getOperand(2)); // Rm
 8169|      0|    TmpInst.addOperand(Inst.getOperand(4)); // CondCode
 8170|      0|    TmpInst.addOperand(Inst.getOperand(5));
 8171|      0|    if (!isNarrow)
  ------------------
  |  Branch (8171:9): [True: 0, False: 0]
  ------------------
 8172|      0|      TmpInst.addOperand(MCOperand::createReg(
 8173|      0|          Inst.getOpcode() == ARM::t2MOVSsr ? ARM::CPSR : 0));
  ------------------
  |  Branch (8173:11): [True: 0, False: 0]
  ------------------
 8174|      0|    Inst = TmpInst;
 8175|      0|    return true;
 8176|      0|  }
 8177|     26|  case ARM::t2MOVsi:
  ------------------
  |  Branch (8177:3): [True: 26, False: 30.9k]
  ------------------
 8178|     26|  case ARM::t2MOVSsi: {
  ------------------
  |  Branch (8178:3): [True: 0, False: 30.9k]
  ------------------
 8179|       |    // Which instruction to expand to depends on the CCOut operand and
 8180|       |    // whether we're in an IT block if the register operands are low
 8181|       |    // registers.
 8182|     26|    bool isNarrow = false;
 8183|     26|    if (isARMLowRegister(Inst.getOperand(0).getReg()) &&
  ------------------
  |  Branch (8183:9): [True: 21, False: 5]
  ------------------
 8184|     21|        isARMLowRegister(Inst.getOperand(1).getReg()) &&
  ------------------
  |  Branch (8184:9): [True: 18, False: 3]
  ------------------
 8185|     18|        inITBlock() == (Inst.getOpcode() == ARM::t2MOVsi))
  ------------------
  |  Branch (8185:9): [True: 1, False: 17]
  ------------------
 8186|      1|      isNarrow = true;
 8187|     26|    MCInst TmpInst(Inst.getAddress());
 8188|     26|    unsigned newOpc;
 8189|     26|    switch(ARM_AM::getSORegShOp(Inst.getOperand(2).getImm())) {
 8190|      0|    default: llvm_unreachable("unexpected opcode!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8190:5): [True: 0, False: 26]
  ------------------
 8191|      0|    case ARM_AM::asr: newOpc = isNarrow ? ARM::tASRri : ARM::t2ASRri; break;
  ------------------
  |  Branch (8191:5): [True: 0, False: 26]
  |  Branch (8191:32): [True: 0, False: 0]
  ------------------
 8192|      0|    case ARM_AM::lsr: newOpc = isNarrow ? ARM::tLSRri : ARM::t2LSRri; break;
  ------------------
  |  Branch (8192:5): [True: 0, False: 26]
  |  Branch (8192:32): [True: 0, False: 0]
  ------------------
 8193|      0|    case ARM_AM::lsl: newOpc = isNarrow ? ARM::tLSLri : ARM::t2LSLri; break;
  ------------------
  |  Branch (8193:5): [True: 0, False: 26]
  |  Branch (8193:32): [True: 0, False: 0]
  ------------------
 8194|      0|    case ARM_AM::ror: newOpc = ARM::t2RORri; isNarrow = false; break;
  ------------------
  |  Branch (8194:5): [True: 0, False: 26]
  ------------------
 8195|     26|    case ARM_AM::rrx: isNarrow = false; newOpc = ARM::t2RRX; break;
  ------------------
  |  Branch (8195:5): [True: 26, False: 0]
  ------------------
 8196|     26|    }
 8197|     26|    unsigned Amount = ARM_AM::getSORegOffset(Inst.getOperand(2).getImm());
 8198|     26|    if (Amount == 32) Amount = 0;
  ------------------
  |  Branch (8198:9): [True: 0, False: 26]
  ------------------
 8199|     26|    TmpInst.setOpcode(newOpc);
 8200|     26|    TmpInst.addOperand(Inst.getOperand(0)); // Rd
 8201|     26|    if (isNarrow)
  ------------------
  |  Branch (8201:9): [True: 0, False: 26]
  ------------------
 8202|      0|      TmpInst.addOperand(MCOperand::createReg(
 8203|      0|          Inst.getOpcode() == ARM::t2MOVSsi ? ARM::CPSR : 0));
  ------------------
  |  Branch (8203:11): [True: 0, False: 0]
  ------------------
 8204|     26|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8205|     26|    if (newOpc != ARM::t2RRX)
  ------------------
  |  Branch (8205:9): [True: 0, False: 26]
  ------------------
 8206|      0|      TmpInst.addOperand(MCOperand::createImm(Amount));
 8207|     26|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 8208|     26|    TmpInst.addOperand(Inst.getOperand(4));
 8209|     26|    if (!isNarrow)
  ------------------
  |  Branch (8209:9): [True: 26, False: 0]
  ------------------
 8210|     26|      TmpInst.addOperand(MCOperand::createReg(
 8211|     26|          Inst.getOpcode() == ARM::t2MOVSsi ? ARM::CPSR : 0));
  ------------------
  |  Branch (8211:11): [True: 0, False: 26]
  ------------------
 8212|     26|    Inst = TmpInst;
 8213|     26|    return true;
 8214|     26|  }
 8215|       |  // Handle the ARM mode MOV complex aliases.
 8216|     80|  case ARM::ASRr:
  ------------------
  |  Branch (8216:3): [True: 80, False: 30.8k]
  ------------------
 8217|    385|  case ARM::LSRr:
  ------------------
  |  Branch (8217:3): [True: 305, False: 30.6k]
  ------------------
 8218|    419|  case ARM::LSLr:
  ------------------
  |  Branch (8218:3): [True: 34, False: 30.9k]
  ------------------
 8219|    461|  case ARM::RORr: {
  ------------------
  |  Branch (8219:3): [True: 42, False: 30.9k]
  ------------------
 8220|    461|    ARM_AM::ShiftOpc ShiftTy;
 8221|    461|    switch(Inst.getOpcode()) {
 8222|      0|    default: llvm_unreachable("unexpected opcode!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8222:5): [True: 0, False: 461]
  ------------------
 8223|     80|    case ARM::ASRr: ShiftTy = ARM_AM::asr; break;
  ------------------
  |  Branch (8223:5): [True: 80, False: 381]
  ------------------
 8224|    305|    case ARM::LSRr: ShiftTy = ARM_AM::lsr; break;
  ------------------
  |  Branch (8224:5): [True: 305, False: 156]
  ------------------
 8225|     34|    case ARM::LSLr: ShiftTy = ARM_AM::lsl; break;
  ------------------
  |  Branch (8225:5): [True: 34, False: 427]
  ------------------
 8226|     42|    case ARM::RORr: ShiftTy = ARM_AM::ror; break;
  ------------------
  |  Branch (8226:5): [True: 42, False: 419]
  ------------------
 8227|    461|    }
 8228|    461|    unsigned Shifter = ARM_AM::getSORegOpc(ShiftTy, 0);
 8229|    461|    MCInst TmpInst(Inst.getAddress());
 8230|    461|    TmpInst.setOpcode(ARM::MOVsr);
 8231|    461|    TmpInst.addOperand(Inst.getOperand(0)); // Rd
 8232|    461|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8233|    461|    TmpInst.addOperand(Inst.getOperand(2)); // Rm
 8234|    461|    TmpInst.addOperand(MCOperand::createImm(Shifter)); // Shift value and ty
 8235|    461|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 8236|    461|    TmpInst.addOperand(Inst.getOperand(4));
 8237|    461|    TmpInst.addOperand(Inst.getOperand(5)); // cc_out
 8238|    461|    Inst = TmpInst;
 8239|    461|    return true;
 8240|    461|  }
 8241|     19|  case ARM::ASRi:
  ------------------
  |  Branch (8241:3): [True: 19, False: 30.9k]
  ------------------
 8242|     67|  case ARM::LSRi:
  ------------------
  |  Branch (8242:3): [True: 48, False: 30.9k]
  ------------------
 8243|    543|  case ARM::LSLi:
  ------------------
  |  Branch (8243:3): [True: 476, False: 30.5k]
  ------------------
 8244|    549|  case ARM::RORi: {
  ------------------
  |  Branch (8244:3): [True: 6, False: 30.9k]
  ------------------
 8245|    549|    ARM_AM::ShiftOpc ShiftTy;
 8246|    549|    switch(Inst.getOpcode()) {
 8247|      0|    default: llvm_unreachable("unexpected opcode!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8247:5): [True: 0, False: 549]
  ------------------
 8248|     19|    case ARM::ASRi: ShiftTy = ARM_AM::asr; break;
  ------------------
  |  Branch (8248:5): [True: 19, False: 530]
  ------------------
 8249|     48|    case ARM::LSRi: ShiftTy = ARM_AM::lsr; break;
  ------------------
  |  Branch (8249:5): [True: 48, False: 501]
  ------------------
 8250|    476|    case ARM::LSLi: ShiftTy = ARM_AM::lsl; break;
  ------------------
  |  Branch (8250:5): [True: 476, False: 73]
  ------------------
 8251|      6|    case ARM::RORi: ShiftTy = ARM_AM::ror; break;
  ------------------
  |  Branch (8251:5): [True: 6, False: 543]
  ------------------
 8252|    549|    }
 8253|       |    // A shift by zero is a plain MOVr, not a MOVsi.
 8254|    549|    unsigned Amt = Inst.getOperand(2).getImm();
 8255|    549|    unsigned Opc = Amt == 0 ? ARM::MOVr : ARM::MOVsi;
  ------------------
  |  Branch (8255:20): [True: 95, False: 454]
  ------------------
 8256|       |    // A shift by 32 should be encoded as 0 when permitted
 8257|    549|    if (Amt == 32 && (ShiftTy == ARM_AM::lsr || ShiftTy == ARM_AM::asr))
  ------------------
  |  Branch (8257:9): [True: 18, False: 531]
  |  Branch (8257:23): [True: 17, False: 1]
  |  Branch (8257:49): [True: 1, False: 0]
  ------------------
 8258|     18|      Amt = 0;
 8259|    549|    unsigned Shifter = ARM_AM::getSORegOpc(ShiftTy, Amt);
 8260|    549|    MCInst TmpInst(Inst.getAddress());
 8261|    549|    TmpInst.setOpcode(Opc);
 8262|    549|    TmpInst.addOperand(Inst.getOperand(0)); // Rd
 8263|    549|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8264|    549|    if (Opc == ARM::MOVsi)
  ------------------
  |  Branch (8264:9): [True: 454, False: 95]
  ------------------
 8265|    454|      TmpInst.addOperand(MCOperand::createImm(Shifter)); // Shift value and ty
 8266|    549|    TmpInst.addOperand(Inst.getOperand(3)); // CondCode
 8267|    549|    TmpInst.addOperand(Inst.getOperand(4));
 8268|    549|    TmpInst.addOperand(Inst.getOperand(5)); // cc_out
 8269|    549|    Inst = TmpInst;
 8270|    549|    return true;
 8271|    549|  }
 8272|     11|  case ARM::RRXi: {
  ------------------
  |  Branch (8272:3): [True: 11, False: 30.9k]
  ------------------
 8273|     11|    unsigned Shifter = ARM_AM::getSORegOpc(ARM_AM::rrx, 0);
 8274|     11|    MCInst TmpInst(Inst.getAddress());
 8275|     11|    TmpInst.setOpcode(ARM::MOVsi);
 8276|     11|    TmpInst.addOperand(Inst.getOperand(0)); // Rd
 8277|     11|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8278|     11|    TmpInst.addOperand(MCOperand::createImm(Shifter)); // Shift value and ty
 8279|     11|    TmpInst.addOperand(Inst.getOperand(2)); // CondCode
 8280|     11|    TmpInst.addOperand(Inst.getOperand(3));
 8281|     11|    TmpInst.addOperand(Inst.getOperand(4)); // cc_out
 8282|     11|    Inst = TmpInst;
 8283|     11|    return true;
 8284|    549|  }
 8285|      0|  case ARM::t2LDMIA_UPD: {
  ------------------
  |  Branch (8285:3): [True: 0, False: 30.9k]
  ------------------
 8286|       |    // If this is a load of a single register, then we should use
 8287|       |    // a post-indexed LDR instruction instead, per the ARM ARM.
 8288|      0|    if (Inst.getNumOperands() != 5)
  ------------------
  |  Branch (8288:9): [True: 0, False: 0]
  ------------------
 8289|      0|      return false;
 8290|      0|    MCInst TmpInst(Inst.getAddress());
 8291|      0|    TmpInst.setOpcode(ARM::t2LDR_POST);
 8292|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rt
 8293|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Rn_wb
 8294|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8295|      0|    TmpInst.addOperand(MCOperand::createImm(4));
 8296|      0|    TmpInst.addOperand(Inst.getOperand(2)); // CondCode
 8297|      0|    TmpInst.addOperand(Inst.getOperand(3));
 8298|      0|    Inst = TmpInst;
 8299|      0|    return true;
 8300|      0|  }
 8301|      0|  case ARM::t2STMDB_UPD: {
  ------------------
  |  Branch (8301:3): [True: 0, False: 30.9k]
  ------------------
 8302|       |    // If this is a store of a single register, then we should use
 8303|       |    // a pre-indexed STR instruction instead, per the ARM ARM.
 8304|      0|    if (Inst.getNumOperands() != 5)
  ------------------
  |  Branch (8304:9): [True: 0, False: 0]
  ------------------
 8305|      0|      return false;
 8306|      0|    MCInst TmpInst(Inst.getAddress());
 8307|      0|    TmpInst.setOpcode(ARM::t2STR_PRE);
 8308|      0|    TmpInst.addOperand(Inst.getOperand(0)); // Rn_wb
 8309|      0|    TmpInst.addOperand(Inst.getOperand(4)); // Rt
 8310|      0|    TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8311|      0|    TmpInst.addOperand(MCOperand::createImm(-4));
 8312|      0|    TmpInst.addOperand(Inst.getOperand(2)); // CondCode
 8313|      0|    TmpInst.addOperand(Inst.getOperand(3));
 8314|      0|    Inst = TmpInst;
 8315|      0|    return true;
 8316|      0|  }
 8317|      0|  case ARM::LDMIA_UPD:
  ------------------
  |  Branch (8317:3): [True: 0, False: 30.9k]
  ------------------
 8318|       |    // If this is a load of a single register via a 'pop', then we should use
 8319|       |    // a post-indexed LDR instruction instead, per the ARM ARM.
 8320|      0|    if (static_cast<ARMOperand &>(*Operands[0]).getToken() == "pop" &&
  ------------------
  |  Branch (8320:9): [True: 0, False: 0]
  |  Branch (8320:9): [True: 0, False: 0]
  ------------------
 8321|      0|        Inst.getNumOperands() == 5) {
  ------------------
  |  Branch (8321:9): [True: 0, False: 0]
  ------------------
 8322|      0|      MCInst TmpInst(Inst.getAddress());
 8323|      0|      TmpInst.setOpcode(ARM::LDR_POST_IMM);
 8324|      0|      TmpInst.addOperand(Inst.getOperand(4)); // Rt
 8325|      0|      TmpInst.addOperand(Inst.getOperand(0)); // Rn_wb
 8326|      0|      TmpInst.addOperand(Inst.getOperand(1)); // Rn
 8327|      0|      TmpInst.addOperand(MCOperand::createReg(0));  // am2offset
 8328|      0|      TmpInst.addOperand(MCOperand::createImm(4));
 8329|      0|      TmpInst.addOperand(Inst.getOperand(2)); // CondCode
 8330|      0|      TmpInst.addOperand(Inst.getOperand(3));
 8331|      0|      Inst = TmpInst;
 8332|      0|      return true;
 8333|      0|    }
 8334|      0|    break;
 8335|      0|  case ARM::STMDB_UPD:
  ------------------
  |  Branch (8335:3): [True: 0, False: 30.9k]
  ------------------
 8336|       |    // If this is a store of a single register via a 'push', then we should use
 8337|       |    // a pre-indexed STR instruction instead, per the ARM ARM.
 8338|      0|    if (static_cast<ARMOperand &>(*Operands[0]).getToken() == "push" &&
  ------------------
  |  Branch (8338:9): [True: 0, False: 0]
  |  Branch (8338:9): [True: 0, False: 0]
  ------------------
 8339|      0|        Inst.getNumOperands() == 5) {
  ------------------
  |  Branch (8339:9): [True: 0, False: 0]
  ------------------
 8340|      0|      MCInst TmpInst(Inst.getAddress());
 8341|      0|      TmpInst.setOpcode(ARM::STR_PRE_IMM);
 8342|      0|      TmpInst.addOperand(Inst.getOperand(0)); // Rn_wb
 8343|      0|      TmpInst.addOperand(Inst.getOperand(4)); // Rt
 8344|      0|      TmpInst.addOperand(Inst.getOperand(1)); // addrmode_imm12
 8345|      0|      TmpInst.addOperand(MCOperand::createImm(-4));
 8346|      0|      TmpInst.addOperand(Inst.getOperand(2)); // CondCode
 8347|      0|      TmpInst.addOperand(Inst.getOperand(3));
 8348|      0|      Inst = TmpInst;
 8349|      0|    }
 8350|      0|    break;
 8351|    261|  case ARM::t2ADDri12:
  ------------------
  |  Branch (8351:3): [True: 261, False: 30.7k]
  ------------------
 8352|       |    // If the immediate fits for encoding T3 (t2ADDri) and the generic "add"
 8353|       |    // mnemonic was used (not "addw"), encoding T3 is preferred.
 8354|    261|    if (static_cast<ARMOperand &>(*Operands[0]).getToken() != "add" ||
  ------------------
  |  Branch (8354:9): [True: 6, False: 255]
  |  Branch (8354:9): [True: 69, False: 192]
  ------------------
 8355|    255|        ARM_AM::getT2SOImmVal(Inst.getOperand(2).getImm()) == -1)
  ------------------
  |  Branch (8355:9): [True: 63, False: 192]
  ------------------
 8356|     69|      break;
 8357|    192|    Inst.setOpcode(ARM::t2ADDri);
 8358|    192|    Inst.addOperand(MCOperand::createReg(0)); // cc_out
 8359|    192|    break;
 8360|    104|  case ARM::t2SUBri12:
  ------------------
  |  Branch (8360:3): [True: 104, False: 30.8k]
  ------------------
 8361|       |    // If the immediate fits for encoding T3 (t2SUBri) and the generic "sub"
 8362|       |    // mnemonic was used (not "subw"), encoding T3 is preferred.
 8363|    104|    if (static_cast<ARMOperand &>(*Operands[0]).getToken() != "sub" ||
  ------------------
  |  Branch (8363:9): [True: 51, False: 53]
  |  Branch (8363:9): [True: 60, False: 44]
  ------------------
 8364|     53|        ARM_AM::getT2SOImmVal(Inst.getOperand(2).getImm()) == -1)
  ------------------
  |  Branch (8364:9): [True: 9, False: 44]
  ------------------
 8365|     60|      break;
 8366|     44|    Inst.setOpcode(ARM::t2SUBri);
 8367|     44|    Inst.addOperand(MCOperand::createReg(0)); // cc_out
 8368|     44|    break;
 8369|     19|  case ARM::tADDi8:
  ------------------
  |  Branch (8369:3): [True: 19, False: 30.9k]
  ------------------
 8370|       |    // If the immediate is in the range 0-7, we want tADDi3 iff Rd was
 8371|       |    // explicitly specified. From the ARM ARM: "Encoding T1 is preferred
 8372|       |    // to encoding T2 if <Rd> is specified and encoding T2 is preferred
 8373|       |    // to encoding T1 if <Rd> is omitted."
 8374|     19|    if ((unsigned)Inst.getOperand(3).getImm() < 8 && Operands.size() == 6) {
  ------------------
  |  Branch (8374:9): [True: 11, False: 8]
  |  Branch (8374:54): [True: 0, False: 11]
  ------------------
 8375|      0|      Inst.setOpcode(ARM::tADDi3);
 8376|      0|      return true;
 8377|      0|    }
 8378|     19|    break;
 8379|     36|  case ARM::tSUBi8:
  ------------------
  |  Branch (8379:3): [True: 36, False: 30.9k]
  ------------------
 8380|       |    // If the immediate is in the range 0-7, we want tADDi3 iff Rd was
 8381|       |    // explicitly specified. From the ARM ARM: "Encoding T1 is preferred
 8382|       |    // to encoding T2 if <Rd> is specified and encoding T2 is preferred
 8383|       |    // to encoding T1 if <Rd> is omitted."
 8384|     36|    if ((unsigned)Inst.getOperand(3).getImm() < 8 && Operands.size() == 6) {
  ------------------
  |  Branch (8384:9): [True: 17, False: 19]
  |  Branch (8384:54): [True: 4, False: 13]
  ------------------
 8385|      4|      Inst.setOpcode(ARM::tSUBi3);
 8386|      4|      return true;
 8387|      4|    }
 8388|     32|    break;
 8389|    190|  case ARM::t2ADDri:
  ------------------
  |  Branch (8389:3): [True: 190, False: 30.7k]
  ------------------
 8390|    262|  case ARM::t2SUBri: {
  ------------------
  |  Branch (8390:3): [True: 72, False: 30.9k]
  ------------------
 8391|       |    // If the destination and first source operand are the same, and
 8392|       |    // the flags are compatible with the current IT status, use encoding T2
 8393|       |    // instead of T3. For compatibility with the system 'as'. Make sure the
 8394|       |    // wide encoding wasn't explicit.
 8395|    262|    if (Inst.getOperand(0).getReg() != Inst.getOperand(1).getReg() ||
  ------------------
  |  Branch (8395:9): [True: 114, False: 148]
  |  Branch (8395:9): [True: 240, False: 22]
  ------------------
 8396|    148|        !isARMLowRegister(Inst.getOperand(0).getReg()) ||
  ------------------
  |  Branch (8396:9): [True: 78, False: 70]
  ------------------
 8397|     70|        (unsigned)Inst.getOperand(2).getImm() > 255 ||
  ------------------
  |  Branch (8397:9): [True: 20, False: 50]
  ------------------
 8398|     50|        ((!inITBlock() && Inst.getOperand(5).getReg() != ARM::CPSR) ||
  ------------------
  |  Branch (8398:11): [True: 48, False: 2]
  |  Branch (8398:27): [True: 12, False: 36]
  ------------------
 8399|     38|         (inITBlock() && Inst.getOperand(5).getReg() != 0)) ||
  ------------------
  |  Branch (8399:11): [True: 2, False: 36]
  |  Branch (8399:26): [True: 2, False: 0]
  ------------------
 8400|     36|        (static_cast<ARMOperand &>(*Operands[3]).isToken() &&
  ------------------
  |  Branch (8400:10): [True: 14, False: 22]
  ------------------
 8401|     14|         static_cast<ARMOperand &>(*Operands[3]).getToken() == ".w"))
  ------------------
  |  Branch (8401:10): [True: 14, False: 0]
  ------------------
 8402|    240|      break;
 8403|     22|    MCInst TmpInst(Inst.getAddress());
 8404|     22|    TmpInst.setOpcode(Inst.getOpcode() == ARM::t2ADDri ?
  ------------------
  |  Branch (8404:23): [True: 6, False: 16]
  ------------------
 8405|     16|                      ARM::tADDi8 : ARM::tSUBi8);
 8406|     22|    TmpInst.addOperand(Inst.getOperand(0));
 8407|     22|    TmpInst.addOperand(Inst.getOperand(5));
 8408|     22|    TmpInst.addOperand(Inst.getOperand(0));
 8409|     22|    TmpInst.addOperand(Inst.getOperand(2));
 8410|     22|    TmpInst.addOperand(Inst.getOperand(3));
 8411|     22|    TmpInst.addOperand(Inst.getOperand(4));
 8412|     22|    Inst = TmpInst;
 8413|     22|    return true;
 8414|    262|  }
 8415|     67|  case ARM::t2ADDrr: {
  ------------------
  |  Branch (8415:3): [True: 67, False: 30.9k]
  ------------------
 8416|       |    // If the destination and first source operand are the same, and
 8417|       |    // there's no setting of the flags, use encoding T2 instead of T3.
 8418|       |    // Note that this is only for ADD, not SUB. This mirrors the system
 8419|       |    // 'as' behaviour.  Also take advantage of ADD being commutative.
 8420|       |    // Make sure the wide encoding wasn't explicit.
 8421|     67|    bool Swap = false;
 8422|     67|    auto DestReg = Inst.getOperand(0).getReg();
 8423|     67|    bool Transform = DestReg == Inst.getOperand(1).getReg();
 8424|     67|    if (!Transform && DestReg == Inst.getOperand(2).getReg()) {
  ------------------
  |  Branch (8424:9): [True: 64, False: 3]
  |  Branch (8424:23): [True: 10, False: 54]
  ------------------
 8425|     10|      Transform = true;
 8426|     10|      Swap = true;
 8427|     10|    }
 8428|     67|    if (!Transform ||
  ------------------
  |  Branch (8428:9): [True: 54, False: 13]
  |  Branch (8428:9): [True: 57, False: 10]
  ------------------
 8429|     13|        Inst.getOperand(5).getReg() != 0 ||
  ------------------
  |  Branch (8429:9): [True: 3, False: 10]
  ------------------
 8430|     10|        (static_cast<ARMOperand &>(*Operands[3]).isToken() &&
  ------------------
  |  Branch (8430:10): [True: 0, False: 10]
  ------------------
 8431|      0|         static_cast<ARMOperand &>(*Operands[3]).getToken() == ".w"))
  ------------------
  |  Branch (8431:10): [True: 0, False: 0]
  ------------------
 8432|     57|      break;
 8433|     10|    MCInst TmpInst(Inst.getAddress());
 8434|     10|    TmpInst.setOpcode(ARM::tADDhirr);
 8435|     10|    TmpInst.addOperand(Inst.getOperand(0));
 8436|     10|    TmpInst.addOperand(Inst.getOperand(0));
 8437|     10|    TmpInst.addOperand(Inst.getOperand(Swap ? 1 : 2));
  ------------------
  |  Branch (8437:40): [True: 10, False: 0]
  ------------------
 8438|     10|    TmpInst.addOperand(Inst.getOperand(3));
 8439|     10|    TmpInst.addOperand(Inst.getOperand(4));
 8440|     10|    Inst = TmpInst;
 8441|     10|    return true;
 8442|     67|  }
 8443|     68|  case ARM::tADDrSP: {
  ------------------
  |  Branch (8443:3): [True: 68, False: 30.9k]
  ------------------
 8444|       |    // If the non-SP source operand and the destination operand are not the
 8445|       |    // same, we need to use the 32-bit encoding if it's available.
 8446|     68|    if (Inst.getOperand(0).getReg() != Inst.getOperand(2).getReg()) {
  ------------------
  |  Branch (8446:9): [True: 10, False: 58]
  ------------------
 8447|     10|      Inst.setOpcode(ARM::t2ADDrr);
 8448|     10|      Inst.addOperand(MCOperand::createReg(0)); // cc_out
 8449|     10|      return true;
 8450|     10|    }
 8451|     58|    break;
 8452|     68|  }
 8453|  1.53k|  case ARM::tB:
  ------------------
  |  Branch (8453:3): [True: 1.53k, False: 29.4k]
  ------------------
 8454|       |    // A Thumb conditional branch outside of an IT block is a tBcc.
 8455|  1.53k|    if (Inst.getOperand(1).getImm() != ARMCC::AL && !inITBlock()) {
  ------------------
  |  Branch (8455:9): [True: 59, False: 1.47k]
  |  Branch (8455:53): [True: 0, False: 59]
  ------------------
 8456|      0|      Inst.setOpcode(ARM::tBcc);
 8457|      0|      return true;
 8458|      0|    }
 8459|  1.53k|    break;
 8460|  1.53k|  case ARM::t2B:
  ------------------
  |  Branch (8460:3): [True: 385, False: 30.5k]
  ------------------
 8461|       |    // A Thumb2 conditional branch outside of an IT block is a t2Bcc.
 8462|    385|    if (Inst.getOperand(1).getImm() != ARMCC::AL && !inITBlock()){
  ------------------
  |  Branch (8462:9): [True: 1, False: 384]
  |  Branch (8462:53): [True: 0, False: 1]
  ------------------
 8463|      0|      Inst.setOpcode(ARM::t2Bcc);
 8464|      0|      return true;
 8465|      0|    }
 8466|    385|    break;
 8467|    385|  case ARM::t2Bcc:
  ------------------
  |  Branch (8467:3): [True: 299, False: 30.6k]
  ------------------
 8468|       |    // If the conditional is AL or we're in an IT block, we really want t2B.
 8469|    299|    if (Inst.getOperand(1).getImm() == ARMCC::AL || inITBlock()) {
  ------------------
  |  Branch (8469:9): [True: 0, False: 299]
  |  Branch (8469:53): [True: 0, False: 299]
  ------------------
 8470|      0|      Inst.setOpcode(ARM::t2B);
 8471|      0|      return true;
 8472|      0|    }
 8473|    299|    break;
 8474|    488|  case ARM::tBcc:
  ------------------
  |  Branch (8474:3): [True: 488, False: 30.4k]
  ------------------
 8475|       |    // If the conditional is AL, we really want tB.
 8476|    488|    if (Inst.getOperand(1).getImm() == ARMCC::AL) {
  ------------------
  |  Branch (8476:9): [True: 0, False: 488]
  ------------------
 8477|      0|      Inst.setOpcode(ARM::tB);
 8478|      0|      return true;
 8479|      0|    }
 8480|    488|    break;
 8481|    488|  case ARM::tLDMIA: {
  ------------------
  |  Branch (8481:3): [True: 0, False: 30.9k]
  ------------------
 8482|       |    // If the register list contains any high registers, or if the writeback
 8483|       |    // doesn't match what tLDMIA can do, we need to use the 32-bit encoding
 8484|       |    // instead if we're in Thumb2. Otherwise, this should have generated
 8485|       |    // an error in validateInstruction().
 8486|      0|    unsigned Rn = Inst.getOperand(0).getReg();
 8487|      0|    bool hasWritebackToken =
 8488|      0|        (static_cast<ARMOperand &>(*Operands[3]).isToken() &&
  ------------------
  |  Branch (8488:10): [True: 0, False: 0]
  ------------------
 8489|      0|         static_cast<ARMOperand &>(*Operands[3]).getToken() == "!");
  ------------------
  |  Branch (8489:10): [True: 0, False: 0]
  ------------------
 8490|      0|    bool listContainsBase;
 8491|      0|    if (checkLowRegisterList(Inst, 3, Rn, 0, listContainsBase) ||
  ------------------
  |  Branch (8491:9): [True: 0, False: 0]
  ------------------
 8492|      0|        (!listContainsBase && !hasWritebackToken) ||
  ------------------
  |  Branch (8492:10): [True: 0, False: 0]
  |  Branch (8492:31): [True: 0, False: 0]
  ------------------
 8493|      0|        (listContainsBase && hasWritebackToken)) {
  ------------------
  |  Branch (8493:10): [True: 0, False: 0]
  |  Branch (8493:30): [True: 0, False: 0]
  ------------------
 8494|       |      // 16-bit encoding isn't sufficient. Switch to the 32-bit version.
 8495|      0|      assert (isThumbTwo());
  ------------------
  |  Branch (8495:7): [True: 0, False: 0]
  ------------------
 8496|      0|      Inst.setOpcode(hasWritebackToken ? ARM::t2LDMIA_UPD : ARM::t2LDMIA);
  ------------------
  |  Branch (8496:22): [True: 0, False: 0]
  ------------------
 8497|       |      // If we're switching to the updating version, we need to insert
 8498|       |      // the writeback tied operand.
 8499|      0|      if (hasWritebackToken)
  ------------------
  |  Branch (8499:11): [True: 0, False: 0]
  ------------------
 8500|      0|        Inst.insert(Inst.begin(),
 8501|      0|                    MCOperand::createReg(Inst.getOperand(0).getReg()));
 8502|      0|      return true;
 8503|      0|    }
 8504|      0|    break;
 8505|      0|  }
 8506|      0|  case ARM::tSTMIA_UPD: {
  ------------------
  |  Branch (8506:3): [True: 0, False: 30.9k]
  ------------------
 8507|       |    // If the register list contains any high registers, we need to use
 8508|       |    // the 32-bit encoding instead if we're in Thumb2. Otherwise, this
 8509|       |    // should have generated an error in validateInstruction().
 8510|      0|    unsigned Rn = Inst.getOperand(0).getReg();
 8511|      0|    bool listContainsBase;
 8512|      0|    if (checkLowRegisterList(Inst, 4, Rn, 0, listContainsBase)) {
  ------------------
  |  Branch (8512:9): [True: 0, False: 0]
  ------------------
 8513|       |      // 16-bit encoding isn't sufficient. Switch to the 32-bit version.
 8514|      0|      assert (isThumbTwo());
  ------------------
  |  Branch (8514:7): [True: 0, False: 0]
  ------------------
 8515|      0|      Inst.setOpcode(ARM::t2STMIA_UPD);
 8516|      0|      return true;
 8517|      0|    }
 8518|      0|    break;
 8519|      0|  }
 8520|      0|  case ARM::tPOP: {
  ------------------
  |  Branch (8520:3): [True: 0, False: 30.9k]
  ------------------
 8521|      0|    bool listContainsBase;
 8522|       |    // If the register list contains any high registers, we need to use
 8523|       |    // the 32-bit encoding instead if we're in Thumb2. Otherwise, this
 8524|       |    // should have generated an error in validateInstruction().
 8525|      0|    if (!checkLowRegisterList(Inst, 2, 0, ARM::PC, listContainsBase))
  ------------------
  |  Branch (8525:9): [True: 0, False: 0]
  ------------------
 8526|      0|      return false;
 8527|      0|    assert (isThumbTwo());
  ------------------
  |  Branch (8527:5): [True: 0, False: 0]
  ------------------
 8528|      0|    Inst.setOpcode(ARM::t2LDMIA_UPD);
 8529|       |    // Add the base register and writeback operands.
 8530|      0|    Inst.insert(Inst.begin(), MCOperand::createReg(ARM::SP));
 8531|      0|    Inst.insert(Inst.begin(), MCOperand::createReg(ARM::SP));
 8532|      0|    return true;
 8533|      0|  }
 8534|      0|  case ARM::tPUSH: {
  ------------------
  |  Branch (8534:3): [True: 0, False: 30.9k]
  ------------------
 8535|      0|    bool listContainsBase;
 8536|      0|    if (!checkLowRegisterList(Inst, 2, 0, ARM::LR, listContainsBase))
  ------------------
  |  Branch (8536:9): [True: 0, False: 0]
  ------------------
 8537|      0|      return false;
 8538|      0|    assert (isThumbTwo());
  ------------------
  |  Branch (8538:5): [True: 0, False: 0]
  ------------------
 8539|      0|    Inst.setOpcode(ARM::t2STMDB_UPD);
 8540|       |    // Add the base register and writeback operands.
 8541|      0|    Inst.insert(Inst.begin(), MCOperand::createReg(ARM::SP));
 8542|      0|    Inst.insert(Inst.begin(), MCOperand::createReg(ARM::SP));
 8543|      0|    return true;
 8544|      0|  }
 8545|     39|  case ARM::t2MOVi: {
  ------------------
  |  Branch (8545:3): [True: 39, False: 30.9k]
  ------------------
 8546|       |    // If we can use the 16-bit encoding and the user didn't explicitly
 8547|       |    // request the 32-bit variant, transform it here.
 8548|     39|    if (isARMLowRegister(Inst.getOperand(0).getReg()) &&
  ------------------
  |  Branch (8548:9): [True: 28, False: 11]
  |  Branch (8548:9): [True: 8, False: 31]
  ------------------
 8549|     28|        (unsigned)Inst.getOperand(1).getImm() <= 255 &&
  ------------------
  |  Branch (8549:9): [True: 25, False: 3]
  ------------------
 8550|     25|        ((!inITBlock() && Inst.getOperand(2).getImm() == ARMCC::AL &&
  ------------------
  |  Branch (8550:11): [True: 25, False: 0]
  |  Branch (8550:27): [True: 25, False: 0]
  ------------------
 8551|     25|          Inst.getOperand(4).getReg() == ARM::CPSR) ||
  ------------------
  |  Branch (8551:11): [True: 11, False: 14]
  ------------------
 8552|     14|         (inITBlock() && Inst.getOperand(4).getReg() == 0)) &&
  ------------------
  |  Branch (8552:11): [True: 0, False: 14]
  |  Branch (8552:26): [True: 0, False: 0]
  ------------------
 8553|     11|        (!static_cast<ARMOperand &>(*Operands[2]).isToken() ||
  ------------------
  |  Branch (8553:10): [True: 8, False: 3]
  ------------------
 8554|      8|         static_cast<ARMOperand &>(*Operands[2]).getToken() != ".w")) {
  ------------------
  |  Branch (8554:10): [True: 0, False: 3]
  ------------------
 8555|       |      // The operands aren't in the same order for tMOVi8...
 8556|      8|      MCInst TmpInst(Inst.getAddress());
 8557|      8|      TmpInst.setOpcode(ARM::tMOVi8);
 8558|      8|      TmpInst.addOperand(Inst.getOperand(0));
 8559|      8|      TmpInst.addOperand(Inst.getOperand(4));
 8560|      8|      TmpInst.addOperand(Inst.getOperand(1));
 8561|      8|      TmpInst.addOperand(Inst.getOperand(2));
 8562|      8|      TmpInst.addOperand(Inst.getOperand(3));
 8563|      8|      Inst = TmpInst;
 8564|      8|      return true;
 8565|      8|    }
 8566|     31|    break;
 8567|     39|  }
 8568|     68|  case ARM::t2MOVr: {
  ------------------
  |  Branch (8568:3): [True: 68, False: 30.9k]
  ------------------
 8569|       |    // If we can use the 16-bit encoding and the user didn't explicitly
 8570|       |    // request the 32-bit variant, transform it here.
 8571|     68|    if (isARMLowRegister(Inst.getOperand(0).getReg()) &&
  ------------------
  |  Branch (8571:9): [True: 68, False: 0]
  |  Branch (8571:9): [True: 3, False: 65]
  ------------------
 8572|     68|        isARMLowRegister(Inst.getOperand(1).getReg()) &&
  ------------------
  |  Branch (8572:9): [True: 47, False: 21]
  ------------------
 8573|     47|        Inst.getOperand(2).getImm() == ARMCC::AL &&
  ------------------
  |  Branch (8573:9): [True: 47, False: 0]
  ------------------
 8574|     47|        Inst.getOperand(4).getReg() == ARM::CPSR &&
  ------------------
  |  Branch (8574:9): [True: 25, False: 22]
  ------------------
 8575|     25|        (!static_cast<ARMOperand &>(*Operands[2]).isToken() ||
  ------------------
  |  Branch (8575:10): [True: 3, False: 22]
  ------------------
 8576|     22|         static_cast<ARMOperand &>(*Operands[2]).getToken() != ".w")) {
  ------------------
  |  Branch (8576:10): [True: 0, False: 22]
  ------------------
 8577|       |      // The operands aren't the same for tMOV[S]r... (no cc_out)
 8578|      3|      MCInst TmpInst(Inst.getAddress());
 8579|      3|      TmpInst.setOpcode(Inst.getOperand(4).getReg() ? ARM::tMOVSr : ARM::tMOVr);
  ------------------
  |  Branch (8579:25): [True: 3, False: 0]
  ------------------
 8580|      3|      TmpInst.addOperand(Inst.getOperand(0));
 8581|      3|      TmpInst.addOperand(Inst.getOperand(1));
 8582|      3|      TmpInst.addOperand(Inst.getOperand(2));
 8583|      3|      TmpInst.addOperand(Inst.getOperand(3));
 8584|      3|      Inst = TmpInst;
 8585|      3|      return true;
 8586|      3|    }
 8587|     65|    break;
 8588|     68|  }
 8589|     65|  case ARM::t2SXTH:
  ------------------
  |  Branch (8589:3): [True: 11, False: 30.9k]
  ------------------
 8590|     21|  case ARM::t2SXTB:
  ------------------
  |  Branch (8590:3): [True: 10, False: 30.9k]
  ------------------
 8591|     31|  case ARM::t2UXTH:
  ------------------
  |  Branch (8591:3): [True: 10, False: 30.9k]
  ------------------
 8592|     37|  case ARM::t2UXTB: {
  ------------------
  |  Branch (8592:3): [True: 6, False: 30.9k]
  ------------------
 8593|       |    // If we can use the 16-bit encoding and the user didn't explicitly
 8594|       |    // request the 32-bit variant, transform it here.
 8595|     37|    if (isARMLowRegister(Inst.getOperand(0).getReg()) &&
  ------------------
  |  Branch (8595:9): [True: 21, False: 16]
  |  Branch (8595:9): [True: 0, False: 37]
  ------------------
 8596|     21|        isARMLowRegister(Inst.getOperand(1).getReg()) &&
  ------------------
  |  Branch (8596:9): [True: 0, False: 21]
  ------------------
 8597|      0|        Inst.getOperand(2).getImm() == 0 &&
  ------------------
  |  Branch (8597:9): [True: 0, False: 0]
  ------------------
 8598|      0|        (!static_cast<ARMOperand &>(*Operands[2]).isToken() ||
  ------------------
  |  Branch (8598:10): [True: 0, False: 0]
  ------------------
 8599|      0|         static_cast<ARMOperand &>(*Operands[2]).getToken() != ".w")) {
  ------------------
  |  Branch (8599:10): [True: 0, False: 0]
  ------------------
 8600|      0|      unsigned NewOpc;
 8601|      0|      switch (Inst.getOpcode()) {
 8602|      0|      default: llvm_unreachable("Illegal opcode!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8602:7): [True: 0, False: 0]
  ------------------
 8603|      0|      case ARM::t2SXTH: NewOpc = ARM::tSXTH; break;
  ------------------
  |  Branch (8603:7): [True: 0, False: 0]
  ------------------
 8604|      0|      case ARM::t2SXTB: NewOpc = ARM::tSXTB; break;
  ------------------
  |  Branch (8604:7): [True: 0, False: 0]
  ------------------
 8605|      0|      case ARM::t2UXTH: NewOpc = ARM::tUXTH; break;
  ------------------
  |  Branch (8605:7): [True: 0, False: 0]
  ------------------
 8606|      0|      case ARM::t2UXTB: NewOpc = ARM::tUXTB; break;
  ------------------
  |  Branch (8606:7): [True: 0, False: 0]
  ------------------
 8607|      0|      }
 8608|       |      // The operands aren't the same for thumb1 (no rotate operand).
 8609|      0|      MCInst TmpInst(Inst.getAddress());
 8610|      0|      TmpInst.setOpcode(NewOpc);
 8611|      0|      TmpInst.addOperand(Inst.getOperand(0));
 8612|      0|      TmpInst.addOperand(Inst.getOperand(1));
 8613|      0|      TmpInst.addOperand(Inst.getOperand(3));
 8614|      0|      TmpInst.addOperand(Inst.getOperand(4));
 8615|      0|      Inst = TmpInst;
 8616|      0|      return true;
 8617|      0|    }
 8618|     37|    break;
 8619|     37|  }
 8620|    481|  case ARM::MOVsi: {
  ------------------
  |  Branch (8620:3): [True: 481, False: 30.4k]
  ------------------
 8621|    481|    ARM_AM::ShiftOpc SOpc = ARM_AM::getSORegShOp(Inst.getOperand(2).getImm());
 8622|       |    // rrx shifts and asr/lsr of #32 is encoded as 0
 8623|    481|    if (SOpc == ARM_AM::rrx || SOpc == ARM_AM::asr || SOpc == ARM_AM::lsr) 
  ------------------
  |  Branch (8623:9): [True: 27, False: 454]
  |  Branch (8623:32): [True: 19, False: 435]
  |  Branch (8623:55): [True: 46, False: 389]
  ------------------
 8624|     92|      return false;
 8625|    389|    if (ARM_AM::getSORegOffset(Inst.getOperand(2).getImm()) == 0) {
  ------------------
  |  Branch (8625:9): [True: 0, False: 389]
  ------------------
 8626|       |      // Shifting by zero is accepted as a vanilla 'MOVr'
 8627|      0|      MCInst TmpInst(Inst.getAddress());
 8628|      0|      TmpInst.setOpcode(ARM::MOVr);
 8629|      0|      TmpInst.addOperand(Inst.getOperand(0));
 8630|      0|      TmpInst.addOperand(Inst.getOperand(1));
 8631|      0|      TmpInst.addOperand(Inst.getOperand(3));
 8632|      0|      TmpInst.addOperand(Inst.getOperand(4));
 8633|      0|      TmpInst.addOperand(Inst.getOperand(5));
 8634|      0|      Inst = TmpInst;
 8635|      0|      return true;
 8636|      0|    }
 8637|    389|    return false;
 8638|    389|  }
 8639|     15|  case ARM::ANDrsi:
  ------------------
  |  Branch (8639:3): [True: 15, False: 30.9k]
  ------------------
 8640|     25|  case ARM::ORRrsi:
  ------------------
  |  Branch (8640:3): [True: 10, False: 30.9k]
  ------------------
 8641|     25|  case ARM::EORrsi:
  ------------------
  |  Branch (8641:3): [True: 0, False: 30.9k]
  ------------------
 8642|     67|  case ARM::BICrsi:
  ------------------
  |  Branch (8642:3): [True: 42, False: 30.9k]
  ------------------
 8643|     98|  case ARM::SUBrsi:
  ------------------
  |  Branch (8643:3): [True: 31, False: 30.9k]
  ------------------
 8644|    123|  case ARM::ADDrsi: {
  ------------------
  |  Branch (8644:3): [True: 25, False: 30.9k]
  ------------------
 8645|    123|    unsigned newOpc;
 8646|    123|    ARM_AM::ShiftOpc SOpc = ARM_AM::getSORegShOp(Inst.getOperand(3).getImm());
 8647|    123|    if (SOpc == ARM_AM::rrx) return false;
  ------------------
  |  Branch (8647:9): [True: 59, False: 64]
  ------------------
 8648|     64|    switch (Inst.getOpcode()) {
 8649|      0|    default: llvm_unreachable("unexpected opcode!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8649:5): [True: 0, False: 64]
  ------------------
 8650|     15|    case ARM::ANDrsi: newOpc = ARM::ANDrr; break;
  ------------------
  |  Branch (8650:5): [True: 15, False: 49]
  ------------------
 8651|     10|    case ARM::ORRrsi: newOpc = ARM::ORRrr; break;
  ------------------
  |  Branch (8651:5): [True: 10, False: 54]
  ------------------
 8652|      0|    case ARM::EORrsi: newOpc = ARM::EORrr; break;
  ------------------
  |  Branch (8652:5): [True: 0, False: 64]
  ------------------
 8653|     10|    case ARM::BICrsi: newOpc = ARM::BICrr; break;
  ------------------
  |  Branch (8653:5): [True: 10, False: 54]
  ------------------
 8654|      9|    case ARM::SUBrsi: newOpc = ARM::SUBrr; break;
  ------------------
  |  Branch (8654:5): [True: 9, False: 55]
  ------------------
 8655|     20|    case ARM::ADDrsi: newOpc = ARM::ADDrr; break;
  ------------------
  |  Branch (8655:5): [True: 20, False: 44]
  ------------------
 8656|     64|    }
 8657|       |    // If the shift is by zero, use the non-shifted instruction definition.
 8658|       |    // The exception is for right shifts, where 0 == 32
 8659|     64|    if (ARM_AM::getSORegOffset(Inst.getOperand(3).getImm()) == 0 &&
  ------------------
  |  Branch (8659:9): [True: 33, False: 31]
  ------------------
 8660|     33|        !(SOpc == ARM_AM::lsr || SOpc == ARM_AM::asr)) {
  ------------------
  |  Branch (8660:11): [True: 6, False: 27]
  |  Branch (8660:34): [True: 3, False: 24]
  ------------------
 8661|     24|      MCInst TmpInst(Inst.getAddress());
 8662|     24|      TmpInst.setOpcode(newOpc);
 8663|     24|      TmpInst.addOperand(Inst.getOperand(0));
 8664|     24|      TmpInst.addOperand(Inst.getOperand(1));
 8665|     24|      TmpInst.addOperand(Inst.getOperand(2));
 8666|     24|      TmpInst.addOperand(Inst.getOperand(4));
 8667|     24|      TmpInst.addOperand(Inst.getOperand(5));
 8668|     24|      TmpInst.addOperand(Inst.getOperand(6));
 8669|     24|      Inst = TmpInst;
 8670|     24|      return true;
 8671|     24|    }
 8672|     40|    return false;
 8673|     64|  }
 8674|    330|  case ARM::ITasm:
  ------------------
  |  Branch (8674:3): [True: 330, False: 30.6k]
  ------------------
 8675|    415|  case ARM::t2IT: {
  ------------------
  |  Branch (8675:3): [True: 85, False: 30.8k]
  ------------------
 8676|       |    // The mask bits for all but the first condition are represented as
 8677|       |    // the low bit of the condition code value implies 't'. We currently
 8678|       |    // always have 1 implies 't', so XOR toggle the bits if the low bit
 8679|       |    // of the condition code is zero. 
 8680|    415|    MCOperand &MO = Inst.getOperand(1);
 8681|    415|    unsigned Mask = MO.getImm();
 8682|    415|    unsigned OrigMask = Mask;
 8683|    415|    unsigned TZ = countTrailingZeros(Mask);
 8684|    415|    if ((Inst.getOperand(0).getImm() & 1) == 0) {
  ------------------
  |  Branch (8684:9): [True: 90, False: 325]
  ------------------
 8685|     90|      assert(Mask && TZ <= 3 && "illegal IT mask value!");
  ------------------
  |  Branch (8685:7): [True: 90, False: 0]
  |  Branch (8685:7): [True: 90, False: 0]
  |  Branch (8685:7): [True: 90, Folded]
  |  Branch (8685:7): [True: 90, False: 0]
  ------------------
 8686|     90|      Mask ^= (0xE << TZ) & 0xF;
 8687|     90|    }
 8688|    415|    MO.setImm(Mask);
 8689|       |
 8690|       |    // Set up the IT block state according to the IT instruction we just
 8691|       |    // matched.
 8692|    415|    assert(!inITBlock() && "nested IT blocks?!");
  ------------------
  |  Branch (8692:5): [True: 415, False: 0]
  |  Branch (8692:5): [True: 415, Folded]
  |  Branch (8692:5): [True: 415, False: 0]
  ------------------
 8693|    415|    ITState.Cond = ARMCC::CondCodes(Inst.getOperand(0).getImm());
 8694|    415|    ITState.Mask = OrigMask; // Use the original mask, not the updated one.
 8695|    415|    ITState.CurPosition = 0;
 8696|    415|    ITState.FirstCond = true;
 8697|    415|    break;
 8698|    415|  }
 8699|    113|  case ARM::t2LSLrr:
  ------------------
  |  Branch (8699:3): [True: 113, False: 30.8k]
  ------------------
 8700|    180|  case ARM::t2LSRrr:
  ------------------
  |  Branch (8700:3): [True: 67, False: 30.9k]
  ------------------
 8701|    293|  case ARM::t2ASRrr:
  ------------------
  |  Branch (8701:3): [True: 113, False: 30.8k]
  ------------------
 8702|    301|  case ARM::t2SBCrr:
  ------------------
  |  Branch (8702:3): [True: 8, False: 30.9k]
  ------------------
 8703|    347|  case ARM::t2RORrr:
  ------------------
  |  Branch (8703:3): [True: 46, False: 30.9k]
  ------------------
 8704|    364|  case ARM::t2BICrr:
  ------------------
  |  Branch (8704:3): [True: 17, False: 30.9k]
  ------------------
 8705|    364|  {
 8706|       |    // Assemblers should use the narrow encodings of these instructions when permissible.
 8707|    364|    if ((isARMLowRegister(Inst.getOperand(1).getReg()) &&
  ------------------
  |  Branch (8707:9): [True: 133, False: 231]
  |  Branch (8707:10): [True: 326, False: 38]
  ------------------
 8708|    326|         isARMLowRegister(Inst.getOperand(2).getReg())) &&
  ------------------
  |  Branch (8708:10): [True: 301, False: 25]
  ------------------
 8709|    301|        Inst.getOperand(0).getReg() == Inst.getOperand(1).getReg() &&
  ------------------
  |  Branch (8709:9): [True: 211, False: 90]
  ------------------
 8710|    211|        ((!inITBlock() && Inst.getOperand(5).getReg() == ARM::CPSR) ||
  ------------------
  |  Branch (8710:11): [True: 211, False: 0]
  |  Branch (8710:27): [True: 133, False: 78]
  ------------------
 8711|     78|         (inITBlock() && Inst.getOperand(5).getReg() != ARM::CPSR)) &&
  ------------------
  |  Branch (8711:11): [True: 0, False: 78]
  |  Branch (8711:26): [True: 0, False: 0]
  ------------------
 8712|    133|        (!static_cast<ARMOperand &>(*Operands[3]).isToken() ||
  ------------------
  |  Branch (8712:10): [True: 133, False: 0]
  ------------------
 8713|      0|         !static_cast<ARMOperand &>(*Operands[3]).getToken().equals_lower(
  ------------------
  |  Branch (8713:10): [True: 0, False: 0]
  ------------------
 8714|    133|             ".w"))) {
 8715|    133|      unsigned NewOpc;
 8716|    133|      switch (Inst.getOpcode()) {
 8717|      0|        default: llvm_unreachable("unexpected opcode");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8717:9): [True: 0, False: 133]
  ------------------
 8718|     78|        case ARM::t2LSLrr: NewOpc = ARM::tLSLrr; break;
  ------------------
  |  Branch (8718:9): [True: 78, False: 55]
  ------------------
 8719|     26|        case ARM::t2LSRrr: NewOpc = ARM::tLSRrr; break;
  ------------------
  |  Branch (8719:9): [True: 26, False: 107]
  ------------------
 8720|      6|        case ARM::t2ASRrr: NewOpc = ARM::tASRrr; break;
  ------------------
  |  Branch (8720:9): [True: 6, False: 127]
  ------------------
 8721|      0|        case ARM::t2SBCrr: NewOpc = ARM::tSBC; break;
  ------------------
  |  Branch (8721:9): [True: 0, False: 133]
  ------------------
 8722|     10|        case ARM::t2RORrr: NewOpc = ARM::tROR; break;
  ------------------
  |  Branch (8722:9): [True: 10, False: 123]
  ------------------
 8723|     13|        case ARM::t2BICrr: NewOpc = ARM::tBIC; break;
  ------------------
  |  Branch (8723:9): [True: 13, False: 120]
  ------------------
 8724|    133|      }
 8725|    133|      MCInst TmpInst(Inst.getAddress());
 8726|    133|      TmpInst.setOpcode(NewOpc);
 8727|    133|      TmpInst.addOperand(Inst.getOperand(0));
 8728|    133|      TmpInst.addOperand(Inst.getOperand(5));
 8729|    133|      TmpInst.addOperand(Inst.getOperand(1));
 8730|    133|      TmpInst.addOperand(Inst.getOperand(2));
 8731|    133|      TmpInst.addOperand(Inst.getOperand(3));
 8732|    133|      TmpInst.addOperand(Inst.getOperand(4));
 8733|    133|      Inst = TmpInst;
 8734|    133|      return true;
 8735|    133|    }
 8736|    231|    return false;
 8737|    364|  }
 8738|     99|  case ARM::t2ANDrr:
  ------------------
  |  Branch (8738:3): [True: 99, False: 30.8k]
  ------------------
 8739|    105|  case ARM::t2EORrr:
  ------------------
  |  Branch (8739:3): [True: 6, False: 30.9k]
  ------------------
 8740|    129|  case ARM::t2ADCrr:
  ------------------
  |  Branch (8740:3): [True: 24, False: 30.9k]
  ------------------
 8741|    156|  case ARM::t2ORRrr:
  ------------------
  |  Branch (8741:3): [True: 27, False: 30.9k]
  ------------------
 8742|    156|  {
 8743|       |    // Assemblers should use the narrow encodings of these instructions when permissible.
 8744|       |    // These instructions are special in that they are commutable, so shorter encodings
 8745|       |    // are available more often.
 8746|    156|    if ((isARMLowRegister(Inst.getOperand(1).getReg()) &&
  ------------------
  |  Branch (8746:9): [True: 38, False: 118]
  |  Branch (8746:10): [True: 73, False: 83]
  ------------------
 8747|     73|         isARMLowRegister(Inst.getOperand(2).getReg())) &&
  ------------------
  |  Branch (8747:10): [True: 63, False: 10]
  ------------------
 8748|     63|        (Inst.getOperand(0).getReg() == Inst.getOperand(1).getReg() ||
  ------------------
  |  Branch (8748:10): [True: 42, False: 21]
  ------------------
 8749|     21|         Inst.getOperand(0).getReg() == Inst.getOperand(2).getReg()) &&
  ------------------
  |  Branch (8749:10): [True: 9, False: 12]
  ------------------
 8750|     51|        ((!inITBlock() && Inst.getOperand(5).getReg() == ARM::CPSR) ||
  ------------------
  |  Branch (8750:11): [True: 50, False: 1]
  |  Branch (8750:27): [True: 40, False: 10]
  ------------------
 8751|     11|         (inITBlock() && Inst.getOperand(5).getReg() != ARM::CPSR)) &&
  ------------------
  |  Branch (8751:11): [True: 1, False: 10]
  |  Branch (8751:26): [True: 1, False: 0]
  ------------------
 8752|     41|        (!static_cast<ARMOperand &>(*Operands[3]).isToken() ||
  ------------------
  |  Branch (8752:10): [True: 38, False: 3]
  ------------------
 8753|      3|         !static_cast<ARMOperand &>(*Operands[3]).getToken().equals_lower(
  ------------------
  |  Branch (8753:10): [True: 0, False: 3]
  ------------------
 8754|     38|             ".w"))) {
 8755|     38|      unsigned NewOpc;
 8756|     38|      switch (Inst.getOpcode()) {
 8757|      0|        default: llvm_unreachable("unexpected opcode");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (8757:9): [True: 0, False: 38]
  ------------------
 8758|     15|        case ARM::t2ADCrr: NewOpc = ARM::tADC; break;
  ------------------
  |  Branch (8758:9): [True: 15, False: 23]
  ------------------
 8759|      6|        case ARM::t2ANDrr: NewOpc = ARM::tAND; break;
  ------------------
  |  Branch (8759:9): [True: 6, False: 32]
  ------------------
 8760|      3|        case ARM::t2EORrr: NewOpc = ARM::tEOR; break;
  ------------------
  |  Branch (8760:9): [True: 3, False: 35]
  ------------------
 8761|     14|        case ARM::t2ORRrr: NewOpc = ARM::tORR; break;
  ------------------
  |  Branch (8761:9): [True: 14, False: 24]
  ------------------
 8762|     38|      }
 8763|     38|      MCInst TmpInst(Inst.getAddress());
 8764|     38|      TmpInst.setOpcode(NewOpc);
 8765|     38|      TmpInst.addOperand(Inst.getOperand(0));
 8766|     38|      TmpInst.addOperand(Inst.getOperand(5));
 8767|     38|      if (Inst.getOperand(0).getReg() == Inst.getOperand(1).getReg()) {
  ------------------
  |  Branch (8767:11): [True: 29, False: 9]
  ------------------
 8768|     29|        TmpInst.addOperand(Inst.getOperand(1));
 8769|     29|        TmpInst.addOperand(Inst.getOperand(2));
 8770|     29|      } else {
 8771|      9|        TmpInst.addOperand(Inst.getOperand(2));
 8772|      9|        TmpInst.addOperand(Inst.getOperand(1));
 8773|      9|      }
 8774|     38|      TmpInst.addOperand(Inst.getOperand(3));
 8775|     38|      TmpInst.addOperand(Inst.getOperand(4));
 8776|     38|      Inst = TmpInst;
 8777|     38|      return true;
 8778|     38|    }
 8779|    118|    return false;
 8780|    156|  }
 8781|  30.9k|  }
 8782|  26.3k|  return false;
 8783|  30.9k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser26validateTargetOperandClassERN7llvm_ks18MCParsedAsmOperandEj:
10308|   173k|{
10309|   173k|  ARMOperand &Op = static_cast<ARMOperand &>(AsmOp);
10310|       |  // If the kind is a token for a literal immediate, check if our asm
10311|       |  // operand matches. This is for InstAliases which have a fixed-value
10312|       |  // immediate in the syntax.
10313|   173k|  switch (Kind) {
10314|   163k|  default: break;
  ------------------
  |  Branch (10314:3): [True: 163k, False: 9.49k]
  ------------------
10315|   163k|  case MCK__35_0:
  ------------------
  |  Branch (10315:3): [True: 34, False: 173k]
  ------------------
10316|     34|    if (Op.isImm())
  ------------------
  |  Branch (10316:9): [True: 25, False: 9]
  ------------------
10317|     25|      if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Op.getImm()))
  ------------------
  |  Branch (10317:33): [True: 7, False: 18]
  ------------------
10318|      7|        if (CE->getValue() == 0)
  ------------------
  |  Branch (10318:13): [True: 0, False: 7]
  ------------------
10319|      0|          return Match_Success;
10320|     34|    break;
10321|  2.72k|  case MCK_ModImm:
  ------------------
  |  Branch (10321:3): [True: 2.72k, False: 170k]
  ------------------
10322|  2.72k|    if (Op.isImm()) {
  ------------------
  |  Branch (10322:9): [True: 1.45k, False: 1.26k]
  ------------------
10323|  1.45k|      const MCExpr *SOExpr = Op.getImm();
10324|  1.45k|      int64_t Value;
10325|  1.45k|      if (!SOExpr->evaluateAsAbsolute(Value))
  ------------------
  |  Branch (10325:11): [True: 714, False: 745]
  ------------------
10326|    714|        return Match_Success;
10327|       |      //assert((Value >= INT32_MIN && Value <= UINT32_MAX) &&
10328|       |      //       "expression value must be representable in 32 bits");
10329|    745|      if (Value < INT32_MIN || Value > UINT32_MAX)
  ------------------
  |  Branch (10329:11): [True: 172, False: 573]
  |  Branch (10329:32): [True: 36, False: 537]
  ------------------
10330|    208|          return Match_InvalidOperand;
10331|    745|    }
10332|  1.79k|    break;
10333|  6.73k|  case MCK_rGPR:
  ------------------
  |  Branch (10333:3): [True: 6.73k, False: 166k]
  ------------------
10334|  6.73k|    if (hasV8Ops() && Op.isReg() && Op.getReg() == ARM::SP)
  ------------------
  |  Branch (10334:9): [True: 165, False: 6.56k]
  |  Branch (10334:23): [True: 110, False: 55]
  |  Branch (10334:37): [True: 94, False: 16]
  ------------------
10335|     94|      return Match_Success;
10336|  6.64k|    break;
10337|  6.64k|  case MCK_GPRPair:
  ------------------
  |  Branch (10337:3): [True: 5, False: 173k]
  ------------------
10338|      5|    if (Op.isReg() &&
  ------------------
  |  Branch (10338:9): [True: 3, False: 2]
  ------------------
10339|      3|        MRI->getRegClass(ARM::GPRRegClassID).contains(Op.getReg()))
  ------------------
  |  Branch (10339:9): [True: 1, False: 2]
  ------------------
10340|      1|      return Match_Success;
10341|      4|    break;
10342|   173k|  }
10343|   172k|  return Match_InvalidOperand;
10344|   173k|}
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser25checkTargetMatchPredicateERN7llvm_ks6MCInstE:
 8785|  30.0k|unsigned ARMAsmParser::checkTargetMatchPredicate(MCInst &Inst) {
 8786|       |  // 16-bit thumb arithmetic instructions either require or preclude the 'S'
 8787|       |  // suffix depending on whether they're in an IT block or not.
 8788|  30.0k|  unsigned Opc = Inst.getOpcode();
 8789|  30.0k|  const MCInstrDesc &MCID = MII.get(Opc);
 8790|  30.0k|  if (MCID.TSFlags & ARMII::ThumbArithFlagSetting) {
  ------------------
  |  Branch (8790:7): [True: 642, False: 29.4k]
  ------------------
 8791|    642|    assert(MCID.NumOperands == Inst.getNumOperands() &&
  ------------------
  |  Branch (8791:5): [True: 642, False: 0]
  |  Branch (8791:5): [True: 642, Folded]
  |  Branch (8791:5): [True: 642, False: 0]
  ------------------
 8792|    642|           "operand count mismatch!");
 8793|       |    // Find the optional-def operand (cc_out).
 8794|    642|    unsigned OpNo;
 8795|    642|    for (OpNo = 0;
 8796|  1.28k|         !MCID.OpInfo[OpNo].isOptionalDef() && OpNo < MCID.NumOperands;
  ------------------
  |  Branch (8796:10): [True: 642, False: 642]
  |  Branch (8796:48): [True: 642, False: 0]
  ------------------
 8797|    642|         ++OpNo)
 8798|    642|      ;
 8799|       |    // If we're parsing Thumb1, reject it completely.
 8800|    642|    if (isThumbOne() && Inst.getOperand(OpNo).getReg() != ARM::CPSR)
  ------------------
  |  Branch (8800:9): [True: 241, False: 401]
  |  Branch (8800:25): [True: 1, False: 240]
  ------------------
 8801|      1|      return Match_MnemonicFail;
 8802|       |    // If we're parsing Thumb2, which form is legal depends on whether we're
 8803|       |    // in an IT block.
 8804|    641|    if (isThumbTwo() && Inst.getOperand(OpNo).getReg() != ARM::CPSR &&
  ------------------
  |  Branch (8804:9): [True: 401, False: 240]
  |  Branch (8804:25): [True: 290, False: 111]
  ------------------
 8805|    290|        !inITBlock())
  ------------------
  |  Branch (8805:9): [True: 287, False: 3]
  ------------------
 8806|    287|      return Match_RequiresITBlock;
 8807|    354|    if (isThumbTwo() && Inst.getOperand(OpNo).getReg() == ARM::CPSR &&
  ------------------
  |  Branch (8807:9): [True: 114, False: 240]
  |  Branch (8807:25): [True: 111, False: 3]
  ------------------
 8808|    111|        inITBlock())
  ------------------
  |  Branch (8808:9): [True: 1, False: 110]
  ------------------
 8809|      1|      return Match_RequiresNotITBlock;
 8810|  29.4k|  } else if (isThumbOne()) {
  ------------------
  |  Branch (8810:14): [True: 464, False: 28.9k]
  ------------------
 8811|       |    // Some high-register supporting Thumb1 encodings only allow both registers
 8812|       |    // to be from r0-r7 when in Thumb2.
 8813|    464|    if (Opc == ARM::tADDhirr && !hasV6MOps() &&
  ------------------
  |  Branch (8813:9): [True: 34, False: 430]
  |  Branch (8813:33): [True: 19, False: 15]
  ------------------
 8814|     19|        isARMLowRegister(Inst.getOperand(1).getReg()) &&
  ------------------
  |  Branch (8814:9): [True: 7, False: 12]
  ------------------
 8815|      7|        isARMLowRegister(Inst.getOperand(2).getReg()))
  ------------------
  |  Branch (8815:9): [True: 1, False: 6]
  ------------------
 8816|      1|      return Match_RequiresThumb2;
 8817|       |    // Others only require ARMv6 or later.
 8818|    463|    else if (Opc == ARM::tMOVr && !hasV6Ops() &&
  ------------------
  |  Branch (8818:14): [True: 41, False: 422]
  |  Branch (8818:35): [True: 15, False: 26]
  ------------------
 8819|     15|             isARMLowRegister(Inst.getOperand(0).getReg()) &&
  ------------------
  |  Branch (8819:14): [True: 4, False: 11]
  ------------------
 8820|      4|             isARMLowRegister(Inst.getOperand(1).getReg()))
  ------------------
  |  Branch (8820:14): [True: 1, False: 3]
  ------------------
 8821|      1|      return Match_RequiresV6;
 8822|    464|  }
 8823|       |
 8824|   151k|  for (unsigned I = 0; I < MCID.NumOperands; ++I)
  ------------------
  |  Branch (8824:24): [True: 121k, False: 29.8k]
  ------------------
 8825|   121k|    if (MCID.OpInfo[I].RegClass == ARM::rGPRRegClassID) {
  ------------------
  |  Branch (8825:9): [True: 3.69k, False: 117k]
  ------------------
 8826|       |      // rGPRRegClass excludes PC, and also excluded SP before ARMv8
 8827|  3.69k|      if ((Inst.getOperand(I).getReg() == ARM::SP) && !hasV8Ops())
  ------------------
  |  Branch (8827:11): [True: 1, False: 3.69k]
  |  Branch (8827:55): [True: 1, False: 0]
  ------------------
 8828|      1|        return Match_RequiresV8;
 8829|  3.69k|      else if (Inst.getOperand(I).getReg() == ARM::PC)
  ------------------
  |  Branch (8829:16): [True: 0, False: 3.69k]
  ------------------
 8830|      0|        return Match_InvalidOperand;
 8831|  3.69k|    }
 8832|       |
 8833|  29.8k|  return Match_Success;
 8834|  29.8k|}
ARMAsmParser.cpp:_ZNK12_GLOBAL__N_112ARMAsmParser8hasV6OpsEv:
  261|     41|  bool hasV6Ops() const {
  262|     41|    return getSTI().getFeatureBits()[ARM::HasV6Ops];
  263|     41|  }
ARMAsmParser.cpp:_ZN12_GLOBAL__N_112ARMAsmParser13onLabelParsedEPN7llvm_ks8MCSymbolE:
 9163|    216|void ARMAsmParser::onLabelParsed(MCSymbol *Symbol) {
 9164|    216|  if (NextSymbolIsThumb) {
  ------------------
  |  Branch (9164:7): [True: 0, False: 216]
  ------------------
 9165|      0|    getParser().getStreamer().EmitThumbFunc(Symbol);
 9166|      0|    NextSymbolIsThumb = false;
 9167|      0|  }
 9168|    216|}

ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML13getFPImmFloatEj:
  651|     86|  static inline float getFPImmFloat(unsigned Imm) {
  652|       |    // We expect an 8-bit binary encoding of a floating-point number here.
  653|     86|    union {
  654|     86|      uint32_t I;
  655|     86|      float F;
  656|     86|    } FPUnion;
  657|       |
  658|     86|    uint8_t Sign = (Imm >> 7) & 0x1;
  659|     86|    uint8_t Exp = (Imm >> 4) & 0x7;
  660|     86|    uint8_t Mantissa = Imm & 0xf;
  661|       |
  662|       |    //   8-bit FP    iEEEE Float Encoding
  663|       |    //   abcd efgh   aBbbbbbc defgh000 00000000 00000000
  664|       |    //
  665|       |    // where B = NOT(b);
  666|       |
  667|     86|    FPUnion.I = 0;
  668|     86|    FPUnion.I |= Sign << 31;
  669|     86|    FPUnion.I |= ((Exp & 0x4) != 0 ? 0 : 1) << 30;
  ------------------
  |  Branch (669:19): [True: 10, False: 76]
  ------------------
  670|     86|    FPUnion.I |= ((Exp & 0x4) != 0 ? 0x1f : 0) << 25;
  ------------------
  |  Branch (670:19): [True: 10, False: 76]
  ------------------
  671|     86|    FPUnion.I |= (Exp & 0x3) << 23;
  672|     86|    FPUnion.I |= Mantissa << 19;
  673|     86|    return FPUnion.F;
  674|     86|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML11getSOImmValEj:
  171|  5.92k|  static inline int getSOImmVal(unsigned Arg) {
  172|       |    // 8-bit (or less) immediates are trivially shifter_operands with a rotate
  173|       |    // of zero.
  174|  5.92k|    if ((Arg & ~255U) == 0) return Arg;
  ------------------
  |  Branch (174:9): [True: 3.77k, False: 2.14k]
  ------------------
  175|       |
  176|  2.14k|    unsigned RotAmt = getSOImmValRotate(Arg);
  177|       |
  178|       |    // If this cannot be handled with a single shifter_op, bail out.
  179|  2.14k|    if (rotr32(~255U, RotAmt) & Arg)
  ------------------
  |  Branch (179:9): [True: 1.92k, False: 226]
  ------------------
  180|  1.92k|      return -1;
  181|       |
  182|       |    // Encode this correctly.
  183|    226|    return rotl32(Arg, RotAmt) | ((RotAmt>>1) << 8);
  184|  2.14k|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML17getSOImmValRotateEj:
  137|  2.14k|  static inline unsigned getSOImmValRotate(unsigned Imm) {
  138|       |    // 8-bit (or less) immediates are trivially shifter_operands with a rotate
  139|       |    // of zero.
  140|  2.14k|    if ((Imm & ~255U) == 0) return 0;
  ------------------
  |  Branch (140:9): [True: 0, False: 2.14k]
  ------------------
  141|       |
  142|       |    // Use CTZ to compute the rotate amount.
  143|  2.14k|    unsigned TZ = countTrailingZeros(Imm);
  144|       |
  145|       |    // Rotate amount must be even.  Something like 0x200 must be rotated 8 bits,
  146|       |    // not 9.
  147|  2.14k|    unsigned RotAmt = TZ & ~1;
  148|       |
  149|       |    // If we can handle this spread, return it.
  150|  2.14k|    if ((rotr32(Imm, RotAmt) & ~255U) == 0)
  ------------------
  |  Branch (150:9): [True: 173, False: 1.97k]
  ------------------
  151|    173|      return (32-RotAmt)&31;  // HW rotates right, not left.
  152|       |
  153|       |    // For values like 0xF000000F, we should ignore the low 6 bits, then
  154|       |    // retry the hunt.
  155|  1.97k|    if (Imm & 63U) {
  ------------------
  |  Branch (155:9): [True: 1.81k, False: 160]
  ------------------
  156|  1.81k|      unsigned TZ2 = countTrailingZeros(Imm & ~63U);
  157|  1.81k|      unsigned RotAmt2 = TZ2 & ~1;
  158|  1.81k|      if ((rotr32(Imm, RotAmt2) & ~255U) == 0)
  ------------------
  |  Branch (158:11): [True: 53, False: 1.76k]
  ------------------
  159|     53|        return (32-RotAmt2)&31;  // HW rotates right, not left.
  160|  1.81k|    }
  161|       |
  162|       |    // Otherwise, we have no way to cover this span of bits with a single
  163|       |    // shifter_op immediate.  Return a chunk of bits that will be useful to
  164|       |    // handle.
  165|  1.92k|    return (32-RotAmt)&31;  // HW rotates right, not left.
  166|  1.97k|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML6rotr32Ejj:
   86|  8.02k|  static inline unsigned rotr32(unsigned Val, unsigned Amt) {
   87|  8.02k|    assert(Amt < 32 && "Invalid rotate amount");
  ------------------
  |  Branch (87:5): [True: 8.02k, False: 0]
  |  Branch (87:5): [True: 8.02k, Folded]
  |  Branch (87:5): [True: 8.02k, False: 0]
  ------------------
   88|  8.02k|    return (Val >> Amt) | (Val << ((32-Amt)&31));
   89|  8.02k|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML6rotl32Ejj:
   93|    226|  static inline unsigned rotl32(unsigned Val, unsigned Amt) {
   94|    226|    assert(Amt < 32 && "Invalid rotate amount");
  ------------------
  |  Branch (94:5): [True: 226, False: 0]
  |  Branch (94:5): [True: 226, Folded]
  |  Branch (94:5): [True: 226, False: 0]
  ------------------
   95|    226|    return (Val << Amt) | (Val >> ((32-Amt)&31));
   96|    226|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML13getT2SOImmValEj:
  314|  3.66k|  static inline int getT2SOImmVal(unsigned Arg) {
  315|       |    // If 'Arg' is an 8-bit splat, then get the encoded value.
  316|  3.66k|    int Splat = getT2SOImmValSplatVal(Arg);
  317|  3.66k|    if (Splat != -1)
  ------------------
  |  Branch (317:9): [True: 1.91k, False: 1.75k]
  ------------------
  318|  1.91k|      return Splat;
  319|       |
  320|       |    // If 'Arg' can be handled with a single shifter_op return the value.
  321|  1.75k|    int Rot = getT2SOImmValRotateVal(Arg);
  322|  1.75k|    if (Rot != -1)
  ------------------
  |  Branch (322:9): [True: 154, False: 1.59k]
  ------------------
  323|    154|      return Rot;
  324|       |
  325|  1.59k|    return -1;
  326|  1.75k|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML21getT2SOImmValSplatValEj:
  270|  3.66k|  static inline int getT2SOImmValSplatVal(unsigned V) {
  271|  3.66k|    unsigned u, Vs, Imm;
  272|       |    // control = 0
  273|  3.66k|    if ((V & 0xffffff00) == 0)
  ------------------
  |  Branch (273:9): [True: 993, False: 2.67k]
  ------------------
  274|    993|      return V;
  275|       |
  276|       |    // If the value is zeroes in the first byte, just shift those off
  277|  2.67k|    Vs = ((V & 0xff) == 0) ? V >> 8 : V;
  ------------------
  |  Branch (277:10): [True: 131, False: 2.54k]
  ------------------
  278|       |    // Any passing value only has 8 bits of payload, splatted across the word
  279|  2.67k|    Imm = Vs & 0xff;
  280|       |    // Likewise, any passing values have the payload splatted into the 3rd byte
  281|  2.67k|    u = Imm | (Imm << 16);
  282|       |
  283|       |    // control = 1 or 2
  284|  2.67k|    if (Vs == u)
  ------------------
  |  Branch (284:9): [True: 9, False: 2.66k]
  ------------------
  285|      9|      return (((Vs == V) ? 1 : 2) << 8) | Imm;
  ------------------
  |  Branch (285:16): [True: 9, False: 0]
  ------------------
  286|       |
  287|       |    // control = 3
  288|  2.66k|    if (Vs == (u | (u << 8)))
  ------------------
  |  Branch (288:9): [True: 911, False: 1.75k]
  ------------------
  289|    911|      return (3 << 8) | Imm;
  290|       |
  291|  1.75k|    return -1;
  292|  2.66k|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML22getT2SOImmValRotateValEj:
  298|  1.75k|  static inline int getT2SOImmValRotateVal(unsigned V) {
  299|  1.75k|    unsigned RotAmt = countLeadingZeros(V);
  300|  1.75k|    if (RotAmt >= 24)
  ------------------
  |  Branch (300:9): [True: 0, False: 1.75k]
  ------------------
  301|      0|      return -1;
  302|       |
  303|       |    // If 'Arg' can be handled with a single shifter_op return the value.
  304|  1.75k|    if ((rotr32(0xff000000U, RotAmt) & V) == V)
  ------------------
  |  Branch (304:9): [True: 154, False: 1.59k]
  ------------------
  305|    154|      return (rotr32(V, 24 - RotAmt) & 0x7f) | ((RotAmt + 8) << 7);
  306|       |
  307|  1.59k|    return -1;
  308|  1.75k|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML10getFP32ImmERKNS_5APIntE:
  705|    323|  static inline int getFP32Imm(const APInt &Imm) {
  706|    323|    uint32_t Sign = Imm.lshr(31).getZExtValue() & 1;
  707|    323|    int32_t Exp = (Imm.lshr(23).getSExtValue() & 0xff) - 127;  // -126 to 127
  708|    323|    int64_t Mantissa = Imm.getZExtValue() & 0x7fffff;  // 23 bits
  709|       |
  710|       |    // We can handle 4 bits of mantissa.
  711|       |    // mantissa = (16+UInt(e:f:g:h))/16.
  712|    323|    if (Mantissa & 0x7ffff)
  ------------------
  |  Branch (712:9): [True: 95, False: 228]
  ------------------
  713|     95|      return -1;
  714|    228|    Mantissa >>= 19;
  715|    228|    if ((Mantissa & 0xf) != Mantissa)
  ------------------
  |  Branch (715:9): [True: 0, False: 228]
  ------------------
  716|      0|      return -1;
  717|       |
  718|       |    // We can handle 3 bits of exponent: exp == UInt(NOT(b):c:d)-3
  719|    228|    if (Exp < -3 || Exp > 4)
  ------------------
  |  Branch (719:9): [True: 5, False: 223]
  |  Branch (719:21): [True: 1, False: 222]
  ------------------
  720|      6|      return -1;
  721|    222|    Exp = ((Exp+3) & 0x7) ^ 4;
  722|       |
  723|    222|    return ((int)Sign << 7) | (Exp << 4) | Mantissa;
  724|    228|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML14isNEONi16splatEj:
  613|    110|  static inline bool isNEONi16splat(unsigned Value) {
  614|    110|    if (Value > 0xffff)
  ------------------
  |  Branch (614:9): [True: 40, False: 70]
  ------------------
  615|     40|      return false;
  616|       |    // i16 value with set bits only in one byte X0 or 0X.
  617|     70|    return Value == 0 || isNEONBytesplat(Value, 2);
  ------------------
  |  Branch (617:12): [True: 18, False: 52]
  |  Branch (617:26): [True: 45, False: 7]
  ------------------
  618|    110|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML15isNEONBytesplatEjj:
  602|     80|  static inline bool isNEONBytesplat(unsigned Value, unsigned Size) {
  603|     80|    assert(Size >= 1 && Size <= 4 && "Invalid size");
  ------------------
  |  Branch (603:5): [True: 80, False: 0]
  |  Branch (603:5): [True: 80, False: 0]
  |  Branch (603:5): [True: 80, Folded]
  |  Branch (603:5): [True: 80, False: 0]
  ------------------
  604|     80|    unsigned count = 0;
  605|    296|    for (unsigned i = 0; i < Size; ++i) {
  ------------------
  |  Branch (605:26): [True: 216, False: 80]
  ------------------
  606|    216|      if (Value & 0xff) count++;
  ------------------
  |  Branch (606:11): [True: 101, False: 115]
  ------------------
  607|    216|      Value >>= 8;
  608|    216|    }
  609|     80|    return count == 1;
  610|     80|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML14isNEONi32splatEj:
  631|     38|  static inline bool isNEONi32splat(unsigned Value) {
  632|       |    // i32 value with set bits only in one byte X000, 0X00, 00X0, or 000X.
  633|     38|    return Value == 0 || isNEONBytesplat(Value, 4);
  ------------------
  |  Branch (633:12): [True: 10, False: 28]
  |  Branch (633:26): [True: 22, False: 6]
  ------------------
  634|     38|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML11getSORegOpcENS0_8ShiftOpcEj:
  112|  1.34k|  static inline unsigned getSORegOpc(ShiftOpc ShOp, unsigned Imm) {
  113|  1.34k|    return ShOp | (Imm << 3);
  114|  1.34k|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML9getAM5OpcENS0_7AddrOpcEh:
  492|      2|  static inline unsigned getAM5Opc(AddrOpc Opc, unsigned char Offset) {
  493|      2|    bool isSub = Opc == sub;
  494|      2|    return ((int)isSub << 8) | Offset;
  495|      2|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML9getAM2OpcENS0_7AddrOpcEjNS0_8ShiftOpcEj:
  408|    629|                                   unsigned IdxMode = 0) {
  409|    629|    assert(Imm12 < (1 << 12) && "Imm too large!");
  ------------------
  |  Branch (409:5): [True: 629, False: 0]
  |  Branch (409:5): [True: 629, Folded]
  |  Branch (409:5): [True: 629, False: 0]
  ------------------
  410|    629|    bool isSub = Opc == sub;
  411|    629|    return Imm12 | ((int)isSub << 12) | (SO << 13) | (IdxMode << 16) ;
  412|    629|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML9getAM3OpcENS0_7AddrOpcEhj:
  443|     70|                                   unsigned IdxMode = 0) {
  444|     70|    bool isSub = Opc == sub;
  445|     70|    return ((int)isSub << 8) | Offset | (IdxMode << 9);
  446|     70|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML18encodeNEONi16splatEj:
  621|     30|  static inline unsigned encodeNEONi16splat(unsigned Value) {
  622|     30|    assert(isNEONi16splat(Value) && "Invalid NEON splat value");
  ------------------
  |  Branch (622:5): [True: 30, False: 0]
  |  Branch (622:5): [True: 30, Folded]
  |  Branch (622:5): [True: 30, False: 0]
  ------------------
  623|     30|    if (Value >= 0x100)
  ------------------
  |  Branch (623:9): [True: 1, False: 29]
  ------------------
  624|      1|      Value = (Value >> 8) | 0xa00;
  625|     29|    else
  626|     29|      Value |= 0x800;
  627|     30|    return Value;
  628|     30|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML18encodeNEONi32splatEj:
  637|     16|  static inline unsigned encodeNEONi32splat(unsigned Value) {
  638|     16|    assert(isNEONi32splat(Value) && "Invalid NEON splat value");
  ------------------
  |  Branch (638:5): [True: 16, False: 0]
  |  Branch (638:5): [True: 16, Folded]
  |  Branch (638:5): [True: 16, False: 0]
  ------------------
  639|     16|    if (Value >= 0x100 && Value <= 0xff00)
  ------------------
  |  Branch (639:9): [True: 0, False: 16]
  |  Branch (639:27): [True: 0, False: 0]
  ------------------
  640|      0|      Value = (Value >> 8) | 0x200;
  641|     16|    else if (Value > 0xffff && Value <= 0xff0000)
  ------------------
  |  Branch (641:14): [True: 0, False: 16]
  |  Branch (641:32): [True: 0, False: 0]
  ------------------
  642|      0|      Value = (Value >> 16) | 0x400;
  643|     16|    else if (Value > 0xffffff)
  ------------------
  |  Branch (643:14): [True: 0, False: 16]
  ------------------
  644|      0|      Value = (Value >> 24) | 0x600;
  645|     16|    return Value;
  646|     16|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML12getSORegShOpEj:
  118|    630|  static inline ShiftOpc getSORegShOp(unsigned Op) {
  119|    630|    return (ShiftOpc)(Op & 7);
  120|    630|  }
ARMAsmParser.cpp:_ZN7llvm_ks6ARM_AML14getSORegOffsetEj:
  115|    479|  static inline unsigned getSORegOffset(unsigned Op) {
  116|    479|    return Op >> 3;
  117|    479|  }
ARMAsmBackend.cpp:_ZN7llvm_ks6ARM_AML11getSOImmValEj:
  171|  4.28k|  static inline int getSOImmVal(unsigned Arg) {
  172|       |    // 8-bit (or less) immediates are trivially shifter_operands with a rotate
  173|       |    // of zero.
  174|  4.28k|    if ((Arg & ~255U) == 0) return Arg;
  ------------------
  |  Branch (174:9): [True: 924, False: 3.35k]
  ------------------
  175|       |
  176|  3.35k|    unsigned RotAmt = getSOImmValRotate(Arg);
  177|       |
  178|       |    // If this cannot be handled with a single shifter_op, bail out.
  179|  3.35k|    if (rotr32(~255U, RotAmt) & Arg)
  ------------------
  |  Branch (179:9): [True: 1.67k, False: 1.68k]
  ------------------
  180|  1.67k|      return -1;
  181|       |
  182|       |    // Encode this correctly.
  183|  1.68k|    return rotl32(Arg, RotAmt) | ((RotAmt>>1) << 8);
  184|  3.35k|  }
ARMAsmBackend.cpp:_ZN7llvm_ks6ARM_AML17getSOImmValRotateEj:
  137|  3.35k|  static inline unsigned getSOImmValRotate(unsigned Imm) {
  138|       |    // 8-bit (or less) immediates are trivially shifter_operands with a rotate
  139|       |    // of zero.
  140|  3.35k|    if ((Imm & ~255U) == 0) return 0;
  ------------------
  |  Branch (140:9): [True: 0, False: 3.35k]
  ------------------
  141|       |
  142|       |    // Use CTZ to compute the rotate amount.
  143|  3.35k|    unsigned TZ = countTrailingZeros(Imm);
  144|       |
  145|       |    // Rotate amount must be even.  Something like 0x200 must be rotated 8 bits,
  146|       |    // not 9.
  147|  3.35k|    unsigned RotAmt = TZ & ~1;
  148|       |
  149|       |    // If we can handle this spread, return it.
  150|  3.35k|    if ((rotr32(Imm, RotAmt) & ~255U) == 0)
  ------------------
  |  Branch (150:9): [True: 1.67k, False: 1.68k]
  ------------------
  151|  1.67k|      return (32-RotAmt)&31;  // HW rotates right, not left.
  152|       |
  153|       |    // For values like 0xF000000F, we should ignore the low 6 bits, then
  154|       |    // retry the hunt.
  155|  1.68k|    if (Imm & 63U) {
  ------------------
  |  Branch (155:9): [True: 1.68k, False: 2]
  ------------------
  156|  1.68k|      unsigned TZ2 = countTrailingZeros(Imm & ~63U);
  157|  1.68k|      unsigned RotAmt2 = TZ2 & ~1;
  158|  1.68k|      if ((rotr32(Imm, RotAmt2) & ~255U) == 0)
  ------------------
  |  Branch (158:11): [True: 9, False: 1.67k]
  ------------------
  159|      9|        return (32-RotAmt2)&31;  // HW rotates right, not left.
  160|  1.68k|    }
  161|       |
  162|       |    // Otherwise, we have no way to cover this span of bits with a single
  163|       |    // shifter_op immediate.  Return a chunk of bits that will be useful to
  164|       |    // handle.
  165|  1.67k|    return (32-RotAmt)&31;  // HW rotates right, not left.
  166|  1.68k|  }
ARMAsmBackend.cpp:_ZN7llvm_ks6ARM_AML6rotr32Ejj:
   86|  8.40k|  static inline unsigned rotr32(unsigned Val, unsigned Amt) {
   87|  8.40k|    assert(Amt < 32 && "Invalid rotate amount");
  ------------------
  |  Branch (87:5): [True: 8.40k, False: 0]
  |  Branch (87:5): [True: 8.40k, Folded]
  |  Branch (87:5): [True: 8.40k, False: 0]
  ------------------
   88|  8.40k|    return (Val >> Amt) | (Val << ((32-Amt)&31));
   89|  8.40k|  }
ARMAsmBackend.cpp:_ZN7llvm_ks6ARM_AML6rotl32Ejj:
   93|  1.68k|  static inline unsigned rotl32(unsigned Val, unsigned Amt) {
   94|  1.68k|    assert(Amt < 32 && "Invalid rotate amount");
  ------------------
  |  Branch (94:5): [True: 1.68k, False: 0]
  |  Branch (94:5): [True: 1.68k, Folded]
  |  Branch (94:5): [True: 1.68k, False: 0]
  ------------------
   95|  1.68k|    return (Val << Amt) | (Val >> ((32-Amt)&31));
   96|  1.68k|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML12getSORegShOpEj:
  118|  1.19k|  static inline ShiftOpc getSORegShOp(unsigned Op) {
  119|  1.19k|    return (ShiftOpc)(Op & 7);
  120|  1.19k|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML14getSORegOffsetEj:
  115|  1.07k|  static inline unsigned getSORegOffset(unsigned Op) {
  116|  1.07k|    return Op >> 3;
  117|  1.07k|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML13getT2SOImmValEj:
  314|    631|  static inline int getT2SOImmVal(unsigned Arg) {
  315|       |    // If 'Arg' is an 8-bit splat, then get the encoded value.
  316|    631|    int Splat = getT2SOImmValSplatVal(Arg);
  317|    631|    if (Splat != -1)
  ------------------
  |  Branch (317:9): [True: 570, False: 61]
  ------------------
  318|    570|      return Splat;
  319|       |
  320|       |    // If 'Arg' can be handled with a single shifter_op return the value.
  321|     61|    int Rot = getT2SOImmValRotateVal(Arg);
  322|     61|    if (Rot != -1)
  ------------------
  |  Branch (322:9): [True: 61, False: 0]
  ------------------
  323|     61|      return Rot;
  324|       |
  325|      0|    return -1;
  326|     61|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML21getT2SOImmValSplatValEj:
  270|    631|  static inline int getT2SOImmValSplatVal(unsigned V) {
  271|    631|    unsigned u, Vs, Imm;
  272|       |    // control = 0
  273|    631|    if ((V & 0xffffff00) == 0)
  ------------------
  |  Branch (273:9): [True: 556, False: 75]
  ------------------
  274|    556|      return V;
  275|       |
  276|       |    // If the value is zeroes in the first byte, just shift those off
  277|     75|    Vs = ((V & 0xff) == 0) ? V >> 8 : V;
  ------------------
  |  Branch (277:10): [True: 10, False: 65]
  ------------------
  278|       |    // Any passing value only has 8 bits of payload, splatted across the word
  279|     75|    Imm = Vs & 0xff;
  280|       |    // Likewise, any passing values have the payload splatted into the 3rd byte
  281|     75|    u = Imm | (Imm << 16);
  282|       |
  283|       |    // control = 1 or 2
  284|     75|    if (Vs == u)
  ------------------
  |  Branch (284:9): [True: 3, False: 72]
  ------------------
  285|      3|      return (((Vs == V) ? 1 : 2) << 8) | Imm;
  ------------------
  |  Branch (285:16): [True: 3, False: 0]
  ------------------
  286|       |
  287|       |    // control = 3
  288|     72|    if (Vs == (u | (u << 8)))
  ------------------
  |  Branch (288:9): [True: 11, False: 61]
  ------------------
  289|     11|      return (3 << 8) | Imm;
  290|       |
  291|     61|    return -1;
  292|     72|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML22getT2SOImmValRotateValEj:
  298|     61|  static inline int getT2SOImmValRotateVal(unsigned V) {
  299|     61|    unsigned RotAmt = countLeadingZeros(V);
  300|     61|    if (RotAmt >= 24)
  ------------------
  |  Branch (300:9): [True: 0, False: 61]
  ------------------
  301|      0|      return -1;
  302|       |
  303|       |    // If 'Arg' can be handled with a single shifter_op return the value.
  304|     61|    if ((rotr32(0xff000000U, RotAmt) & V) == V)
  ------------------
  |  Branch (304:9): [True: 61, False: 0]
  ------------------
  305|     61|      return (rotr32(V, 24 - RotAmt) & 0x7f) | ((RotAmt + 8) << 7);
  306|       |
  307|      0|    return -1;
  308|     61|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML6rotr32Ejj:
   86|    420|  static inline unsigned rotr32(unsigned Val, unsigned Amt) {
   87|    420|    assert(Amt < 32 && "Invalid rotate amount");
  ------------------
  |  Branch (87:5): [True: 420, False: 0]
  |  Branch (87:5): [True: 420, Folded]
  |  Branch (87:5): [True: 420, False: 0]
  ------------------
   88|    420|    return (Val >> Amt) | (Val << ((32-Amt)&31));
   89|    420|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML8getAM5OpEj:
  499|      2|  static inline AddrOpc getAM5Op(unsigned AM5Opc) {
  500|      2|    return ((AM5Opc >> 8) & 1) ? sub : add;
  ------------------
  |  Branch (500:12): [True: 1, False: 1]
  ------------------
  501|      2|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML12getAM5OffsetEj:
  496|    539|  static inline unsigned char getAM5Offset(unsigned AM5Opc) {
  497|    539|    return AM5Opc & 0xFF;
  498|    539|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML11getSOImmValEj:
  171|    217|  static inline int getSOImmVal(unsigned Arg) {
  172|       |    // 8-bit (or less) immediates are trivially shifter_operands with a rotate
  173|       |    // of zero.
  174|    217|    if ((Arg & ~255U) == 0) return Arg;
  ------------------
  |  Branch (174:9): [True: 98, False: 119]
  ------------------
  175|       |
  176|    119|    unsigned RotAmt = getSOImmValRotate(Arg);
  177|       |
  178|       |    // If this cannot be handled with a single shifter_op, bail out.
  179|    119|    if (rotr32(~255U, RotAmt) & Arg)
  ------------------
  |  Branch (179:9): [True: 19, False: 100]
  ------------------
  180|     19|      return -1;
  181|       |
  182|       |    // Encode this correctly.
  183|    100|    return rotl32(Arg, RotAmt) | ((RotAmt>>1) << 8);
  184|    119|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML17getSOImmValRotateEj:
  137|    119|  static inline unsigned getSOImmValRotate(unsigned Imm) {
  138|       |    // 8-bit (or less) immediates are trivially shifter_operands with a rotate
  139|       |    // of zero.
  140|    119|    if ((Imm & ~255U) == 0) return 0;
  ------------------
  |  Branch (140:9): [True: 0, False: 119]
  ------------------
  141|       |
  142|       |    // Use CTZ to compute the rotate amount.
  143|    119|    unsigned TZ = countTrailingZeros(Imm);
  144|       |
  145|       |    // Rotate amount must be even.  Something like 0x200 must be rotated 8 bits,
  146|       |    // not 9.
  147|    119|    unsigned RotAmt = TZ & ~1;
  148|       |
  149|       |    // If we can handle this spread, return it.
  150|    119|    if ((rotr32(Imm, RotAmt) & ~255U) == 0)
  ------------------
  |  Branch (150:9): [True: 59, False: 60]
  ------------------
  151|     59|      return (32-RotAmt)&31;  // HW rotates right, not left.
  152|       |
  153|       |    // For values like 0xF000000F, we should ignore the low 6 bits, then
  154|       |    // retry the hunt.
  155|     60|    if (Imm & 63U) {
  ------------------
  |  Branch (155:9): [True: 60, False: 0]
  ------------------
  156|     60|      unsigned TZ2 = countTrailingZeros(Imm & ~63U);
  157|     60|      unsigned RotAmt2 = TZ2 & ~1;
  158|     60|      if ((rotr32(Imm, RotAmt2) & ~255U) == 0)
  ------------------
  |  Branch (158:11): [True: 41, False: 19]
  ------------------
  159|     41|        return (32-RotAmt2)&31;  // HW rotates right, not left.
  160|     60|    }
  161|       |
  162|       |    // Otherwise, we have no way to cover this span of bits with a single
  163|       |    // shifter_op immediate.  Return a chunk of bits that will be useful to
  164|       |    // handle.
  165|     19|    return (32-RotAmt)&31;  // HW rotates right, not left.
  166|     60|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML6rotl32Ejj:
   93|    100|  static inline unsigned rotl32(unsigned Val, unsigned Amt) {
   94|    100|    assert(Amt < 32 && "Invalid rotate amount");
  ------------------
  |  Branch (94:5): [True: 100, False: 0]
  |  Branch (94:5): [True: 100, Folded]
  |  Branch (94:5): [True: 100, False: 0]
  ------------------
   95|    100|    return (Val << Amt) | (Val >> ((32-Amt)&31));
   96|    100|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML12getAM2OffsetEj:
  413|    639|  static inline unsigned getAM2Offset(unsigned AM2Opc) {
  414|    639|    return AM2Opc & ((1 << 12)-1);
  415|    639|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML8getAM2OpEj:
  416|    639|  static inline AddrOpc getAM2Op(unsigned AM2Opc) {
  417|    639|    return ((AM2Opc >> 12) & 1) ? sub : add;
  ------------------
  |  Branch (417:12): [True: 1, False: 638]
  ------------------
  418|    639|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML14getAM2ShiftOpcEj:
  419|     54|  static inline ShiftOpc getAM2ShiftOpc(unsigned AM2Opc) {
  420|     54|    return (ShiftOpc)((AM2Opc >> 13) & 7);
  421|     54|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML8getAM3OpEj:
  450|     67|  static inline AddrOpc getAM3Op(unsigned AM3Opc) {
  451|     67|    return ((AM3Opc >> 8) & 1) ? sub : add;
  ------------------
  |  Branch (451:12): [True: 4, False: 63]
  ------------------
  452|     67|  }
ARMMCCodeEmitter.cpp:_ZN7llvm_ks6ARM_AML12getAM3OffsetEj:
  447|     67|  static inline unsigned char getAM3Offset(unsigned AM3Opc) {
  448|     67|    return AM3Opc & 0xFF;
  449|     67|  }

_ZNK7llvm_ks13ARMAsmBackend16getFixupKindInfoENS_11MCFixupKindE:
   51|  77.6k|const MCFixupKindInfo &ARMAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
   52|  77.6k|  const static MCFixupKindInfo InfosLE[ARM::NumTargetFixupKinds] = {
   53|       |      // This table *must* be in the order that the fixup_* kinds are defined in
   54|       |      // ARMFixupKinds.h.
   55|       |      //
   56|       |      // Name                      Offset (bits) Size (bits)     Flags
   57|  77.6k|      {"fixup_arm_ldst_pcrel_12", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   58|  77.6k|      {"fixup_t2_ldst_pcrel_12", 0, 32,
   59|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
   60|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
   61|  77.6k|      {"fixup_arm_pcrel_10_unscaled", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   62|  77.6k|      {"fixup_arm_pcrel_10", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   63|  77.6k|      {"fixup_t2_pcrel_10", 0, 32,
   64|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
   65|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
   66|  77.6k|      {"fixup_arm_pcrel_9", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   67|  77.6k|      {"fixup_t2_pcrel_9", 0, 32,
   68|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
   69|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
   70|  77.6k|      {"fixup_thumb_adr_pcrel_10", 0, 8,
   71|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
   72|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
   73|  77.6k|      {"fixup_arm_adr_pcrel_12", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   74|  77.6k|      {"fixup_t2_adr_pcrel_12", 0, 32,
   75|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
   76|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
   77|  77.6k|      {"fixup_arm_condbranch", 0, 24, MCFixupKindInfo::FKF_IsPCRel},
   78|  77.6k|      {"fixup_arm_uncondbranch", 0, 24, MCFixupKindInfo::FKF_IsPCRel},
   79|  77.6k|      {"fixup_t2_condbranch", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   80|  77.6k|      {"fixup_t2_uncondbranch", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   81|  77.6k|      {"fixup_arm_thumb_br", 0, 16, MCFixupKindInfo::FKF_IsPCRel},
   82|  77.6k|      {"fixup_arm_uncondbl", 0, 24, MCFixupKindInfo::FKF_IsPCRel},
   83|  77.6k|      {"fixup_arm_condbl", 0, 24, MCFixupKindInfo::FKF_IsPCRel},
   84|  77.6k|      {"fixup_arm_blx", 0, 24, MCFixupKindInfo::FKF_IsPCRel},
   85|  77.6k|      {"fixup_arm_thumb_bl", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   86|  77.6k|      {"fixup_arm_thumb_blx", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
   87|  77.6k|      {"fixup_arm_thumb_cb", 0, 16, MCFixupKindInfo::FKF_IsPCRel},
   88|  77.6k|      {"fixup_arm_thumb_cp", 0, 8,
   89|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
   90|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
   91|  77.6k|      {"fixup_arm_thumb_bcc", 0, 8, MCFixupKindInfo::FKF_IsPCRel},
   92|       |      // movw / movt: 16-bits immediate but scattered into two chunks 0 - 12, 16
   93|       |      // - 19.
   94|  77.6k|      {"fixup_arm_movt_hi16", 0, 20, 0},
   95|  77.6k|      {"fixup_arm_movw_lo16", 0, 20, 0},
   96|  77.6k|      {"fixup_t2_movt_hi16", 0, 20, 0},
   97|  77.6k|      {"fixup_t2_movw_lo16", 0, 20, 0},
   98|  77.6k|  };
   99|  77.6k|  const static MCFixupKindInfo InfosBE[ARM::NumTargetFixupKinds] = {
  100|       |      // This table *must* be in the order that the fixup_* kinds are defined in
  101|       |      // ARMFixupKinds.h.
  102|       |      //
  103|       |      // Name                      Offset (bits) Size (bits)     Flags
  104|  77.6k|      {"fixup_arm_ldst_pcrel_12", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  105|  77.6k|      {"fixup_t2_ldst_pcrel_12", 0, 32,
  106|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
  107|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
  108|  77.6k|      {"fixup_arm_pcrel_10_unscaled", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  109|  77.6k|      {"fixup_arm_pcrel_10", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  110|  77.6k|      {"fixup_t2_pcrel_10", 0, 32,
  111|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
  112|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
  113|  77.6k|      {"fixup_arm_pcrel_9", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  114|  77.6k|      {"fixup_t2_pcrel_9", 0, 32,
  115|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
  116|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
  117|  77.6k|      {"fixup_thumb_adr_pcrel_10", 8, 8,
  118|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
  119|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
  120|  77.6k|      {"fixup_arm_adr_pcrel_12", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  121|  77.6k|      {"fixup_t2_adr_pcrel_12", 0, 32,
  122|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
  123|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
  124|  77.6k|      {"fixup_arm_condbranch", 8, 24, MCFixupKindInfo::FKF_IsPCRel},
  125|  77.6k|      {"fixup_arm_uncondbranch", 8, 24, MCFixupKindInfo::FKF_IsPCRel},
  126|  77.6k|      {"fixup_t2_condbranch", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  127|  77.6k|      {"fixup_t2_uncondbranch", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  128|  77.6k|      {"fixup_arm_thumb_br", 0, 16, MCFixupKindInfo::FKF_IsPCRel},
  129|  77.6k|      {"fixup_arm_uncondbl", 8, 24, MCFixupKindInfo::FKF_IsPCRel},
  130|  77.6k|      {"fixup_arm_condbl", 8, 24, MCFixupKindInfo::FKF_IsPCRel},
  131|  77.6k|      {"fixup_arm_blx", 8, 24, MCFixupKindInfo::FKF_IsPCRel},
  132|  77.6k|      {"fixup_arm_thumb_bl", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  133|  77.6k|      {"fixup_arm_thumb_blx", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
  134|  77.6k|      {"fixup_arm_thumb_cb", 0, 16, MCFixupKindInfo::FKF_IsPCRel},
  135|  77.6k|      {"fixup_arm_thumb_cp", 8, 8,
  136|  77.6k|       MCFixupKindInfo::FKF_IsPCRel |
  137|  77.6k|           MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
  138|  77.6k|      {"fixup_arm_thumb_bcc", 8, 8, MCFixupKindInfo::FKF_IsPCRel},
  139|       |      // movw / movt: 16-bits immediate but scattered into two chunks 0 - 12, 16
  140|       |      // - 19.
  141|  77.6k|      {"fixup_arm_movt_hi16", 12, 20, 0},
  142|  77.6k|      {"fixup_arm_movw_lo16", 12, 20, 0},
  143|  77.6k|      {"fixup_t2_movt_hi16", 12, 20, 0},
  144|  77.6k|      {"fixup_t2_movw_lo16", 12, 20, 0},
  145|  77.6k|  };
  146|       |
  147|  77.6k|  if (Kind < FirstTargetFixupKind)
  ------------------
  |  Branch (147:7): [True: 56.5k, False: 21.0k]
  ------------------
  148|  56.5k|    return MCAsmBackend::getFixupKindInfo(Kind);
  149|       |
  150|  77.6k|  assert(unsigned(Kind - FirstTargetFixupKind) < getNumFixupKinds() &&
  ------------------
  |  Branch (150:3): [True: 21.0k, False: 0]
  |  Branch (150:3): [True: 21.0k, Folded]
  |  Branch (150:3): [True: 21.0k, False: 0]
  ------------------
  151|  21.0k|         "Invalid kind!");
  152|  21.0k|  return (IsLittleEndian ? InfosLE : InfosBE)[Kind - FirstTargetFixupKind];
  ------------------
  |  Branch (152:11): [True: 21.0k, False: 0]
  ------------------
  153|  21.0k|}
_ZN7llvm_ks13ARMAsmBackend19handleAssemblerFlagENS_15MCAssemblerFlagE:
  155|  2.31k|void ARMAsmBackend::handleAssemblerFlag(MCAssemblerFlag Flag) {
  156|  2.31k|  switch (Flag) {
  157|      0|  default:
  ------------------
  |  Branch (157:3): [True: 0, False: 2.31k]
  ------------------
  158|      0|    break;
  159|  1.87k|  case MCAF_Code16:
  ------------------
  |  Branch (159:3): [True: 1.87k, False: 439]
  ------------------
  160|  1.87k|    setIsThumb(true);
  161|  1.87k|    break;
  162|    439|  case MCAF_Code32:
  ------------------
  |  Branch (162:3): [True: 439, False: 1.87k]
  ------------------
  163|    439|    setIsThumb(false);
  164|    439|    break;
  165|  2.31k|  }
  166|  2.31k|}
_ZNK7llvm_ks13ARMAsmBackend16getRelaxedOpcodeEj:
  168|  31.6k|unsigned ARMAsmBackend::getRelaxedOpcode(unsigned Op) const {
  169|  31.6k|  bool HasThumb2 = STI->getFeatureBits()[ARM::FeatureThumb2];
  170|  31.6k|  bool HasV8MBaselineOps = STI->getFeatureBits()[ARM::HasV8MBaselineOps];
  171|       |
  172|  31.6k|  switch (Op) {
  173|  26.9k|  default:
  ------------------
  |  Branch (173:3): [True: 26.9k, False: 4.70k]
  ------------------
  174|  26.9k|    return Op;
  175|    902|  case ARM::tBcc:
  ------------------
  |  Branch (175:3): [True: 902, False: 30.7k]
  ------------------
  176|    902|    return HasThumb2 ? (unsigned)ARM::t2Bcc : Op;
  ------------------
  |  Branch (176:12): [True: 902, False: 0]
  ------------------
  177|    958|  case ARM::tLDRpci:
  ------------------
  |  Branch (177:3): [True: 958, False: 30.7k]
  ------------------
  178|    958|    return HasThumb2 ? (unsigned)ARM::t2LDRpci : Op;
  ------------------
  |  Branch (178:12): [True: 958, False: 0]
  ------------------
  179|    174|  case ARM::tADR:
  ------------------
  |  Branch (179:3): [True: 174, False: 31.5k]
  ------------------
  180|    174|    return HasThumb2 ? (unsigned)ARM::t2ADR : Op;
  ------------------
  |  Branch (180:12): [True: 174, False: 0]
  ------------------
  181|  2.52k|  case ARM::tB:
  ------------------
  |  Branch (181:3): [True: 2.52k, False: 29.1k]
  ------------------
  182|  2.52k|    return HasV8MBaselineOps ? (unsigned)ARM::t2B : Op;
  ------------------
  |  Branch (182:12): [True: 2.52k, False: 0]
  ------------------
  183|     65|  case ARM::tCBZ:
  ------------------
  |  Branch (183:3): [True: 65, False: 31.6k]
  ------------------
  184|     65|    return ARM::tHINT;
  185|     73|  case ARM::tCBNZ:
  ------------------
  |  Branch (185:3): [True: 73, False: 31.6k]
  ------------------
  186|     73|    return ARM::tHINT;
  187|  31.6k|  }
  188|  31.6k|}
_ZNK7llvm_ks13ARMAsmBackend17mayNeedRelaxationERKNS_6MCInstE:
  190|  31.5k|bool ARMAsmBackend::mayNeedRelaxation(const MCInst &Inst) const {
  191|  31.5k|  if (getRelaxedOpcode(Inst.getOpcode()) != Inst.getOpcode())
  ------------------
  |  Branch (191:7): [True: 4.53k, False: 26.9k]
  ------------------
  192|  4.53k|    return true;
  193|  26.9k|  return false;
  194|  31.5k|}
_ZNK7llvm_ks13ARMAsmBackend24reasonForFixupRelaxationERKNS_7MCFixupEm:
  197|    884|                                                    uint64_t Value) const {
  198|    884|  switch ((unsigned)Fixup.getKind()) {
  199|    322|  case ARM::fixup_arm_thumb_br: {
  ------------------
  |  Branch (199:3): [True: 322, False: 562]
  ------------------
  200|       |    // Relaxing tB to t2B. tB has a signed 12-bit displacement with the
  201|       |    // low bit being an implied zero. There's an implied +4 offset for the
  202|       |    // branch, so we adjust the other way here to determine what's
  203|       |    // encodable.
  204|       |    //
  205|       |    // Relax if the value is too big for a (signed) i8.
  206|    322|    int64_t Offset = int64_t(Value) - 4;
  207|    322|    if (Offset > 2046 || Offset < -2048)
  ------------------
  |  Branch (207:9): [True: 6, False: 316]
  |  Branch (207:26): [True: 1, False: 315]
  ------------------
  208|      7|      return "out of range pc-relative fixup value";
  209|    315|    break;
  210|    322|  }
  211|    315|  case ARM::fixup_arm_thumb_bcc: {
  ------------------
  |  Branch (211:3): [True: 56, False: 828]
  ------------------
  212|       |    // Relaxing tBcc to t2Bcc. tBcc has a signed 9-bit displacement with the
  213|       |    // low bit being an implied zero. There's an implied +4 offset for the
  214|       |    // branch, so we adjust the other way here to determine what's
  215|       |    // encodable.
  216|       |    //
  217|       |    // Relax if the value is too big for a (signed) i8.
  218|     56|    int64_t Offset = int64_t(Value) - 4;
  219|     56|    if (Offset > 254 || Offset < -256)
  ------------------
  |  Branch (219:9): [True: 0, False: 56]
  |  Branch (219:25): [True: 18, False: 38]
  ------------------
  220|     18|      return "out of range pc-relative fixup value";
  221|     38|    break;
  222|     56|  }
  223|     53|  case ARM::fixup_thumb_adr_pcrel_10:
  ------------------
  |  Branch (223:3): [True: 53, False: 831]
  ------------------
  224|    474|  case ARM::fixup_arm_thumb_cp: {
  ------------------
  |  Branch (224:3): [True: 421, False: 463]
  ------------------
  225|       |    // If the immediate is negative, greater than 1020, or not a multiple
  226|       |    // of four, the wide version of the instruction must be used.
  227|    474|    int64_t Offset = int64_t(Value) - 4;
  228|    474|    if (Offset & 3)
  ------------------
  |  Branch (228:9): [True: 18, False: 456]
  ------------------
  229|     18|      return "misaligned pc-relative fixup value";
  230|    456|    else if (Offset > 1020 || Offset < 0)
  ------------------
  |  Branch (230:14): [True: 0, False: 456]
  |  Branch (230:31): [True: 43, False: 413]
  ------------------
  231|     43|      return "out of range pc-relative fixup value";
  232|    413|    break;
  233|    474|  }
  234|    413|  case ARM::fixup_arm_thumb_cb: {
  ------------------
  |  Branch (234:3): [True: 32, False: 852]
  ------------------
  235|       |    // If we have a Thumb CBZ or CBNZ instruction and its target is the next
  236|       |    // instruction it is is actually out of range for the instruction.
  237|       |    // It will be changed to a NOP.
  238|     32|    int64_t Offset = (Value & ~1);
  239|     32|    if (Offset == 2)
  ------------------
  |  Branch (239:9): [True: 0, False: 32]
  ------------------
  240|      0|      return "will be converted to nop";
  241|     32|    break;
  242|     32|  }
  243|     32|  default:
  ------------------
  |  Branch (243:3): [True: 0, False: 884]
  ------------------
  244|      0|    llvm_unreachable("Unexpected fixup kind in reasonForFixupRelaxation()!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  245|    884|  }
  246|    798|  return nullptr;
  247|    884|}
_ZNK7llvm_ks13ARMAsmBackend20fixupNeedsRelaxationERKNS_7MCFixupEmPKNS_19MCRelaxableFragmentERKNS_11MCAsmLayoutERj:
  251|    884|                                         const MCAsmLayout &Layout, unsigned &KsError) const {
  252|    884|  return reasonForFixupRelaxation(Fixup, Value);
  253|    884|}
_ZNK7llvm_ks13ARMAsmBackend16relaxInstructionERKNS_6MCInstERS1_:
  255|    171|void ARMAsmBackend::relaxInstruction(const MCInst &Inst, MCInst &Res) const {
  256|    171|  unsigned RelaxedOp = getRelaxedOpcode(Inst.getOpcode());
  257|       |
  258|       |  // Sanity check w/ diagnostic if we get here w/ a bogus instruction.
  259|    171|  if (RelaxedOp == Inst.getOpcode()) {
  ------------------
  |  Branch (259:7): [True: 0, False: 171]
  ------------------
  260|      0|    SmallString<256> Tmp;
  261|      0|    raw_svector_ostream OS(Tmp);
  262|       |    //Inst.dump_pretty(OS);
  263|       |    //OS << "\n";
  264|      0|    report_fatal_error("unexpected instruction to relax: " + OS.str());
  265|      0|  }
  266|       |
  267|       |  // If we are changing Thumb CBZ or CBNZ instruction to a NOP, aka tHINT, we
  268|       |  // have to change the operands too.
  269|    171|  if ((Inst.getOpcode() == ARM::tCBZ || Inst.getOpcode() == ARM::tCBNZ) &&
  ------------------
  |  Branch (269:8): [True: 11, False: 160]
  |  Branch (269:41): [True: 7, False: 153]
  ------------------
  270|     18|      RelaxedOp == ARM::tHINT) {
  ------------------
  |  Branch (270:7): [True: 18, False: 0]
  ------------------
  271|     18|    Res.setOpcode(RelaxedOp);
  272|     18|    Res.addOperand(MCOperand::createImm(0));
  273|     18|    Res.addOperand(MCOperand::createImm(14));
  274|     18|    Res.addOperand(MCOperand::createReg(0));
  275|     18|    return;
  276|     18|  }
  277|       |
  278|       |  // The rest of instructions we're relaxing have the same operands.
  279|       |  // We just need to update to the proper opcode.
  280|    153|  Res = Inst;
  281|    153|  Res.setOpcode(RelaxedOp);
  282|    153|}
_ZNK7llvm_ks13ARMAsmBackend12writeNopDataEmPNS_14MCObjectWriterE:
  284|  2.55k|bool ARMAsmBackend::writeNopData(uint64_t Count, MCObjectWriter *OW) const {
  285|  2.55k|  const uint16_t Thumb1_16bitNopEncoding = 0x46c0; // using MOV r8,r8
  286|  2.55k|  const uint16_t Thumb2_16bitNopEncoding = 0xbf00; // NOP
  287|  2.55k|  const uint32_t ARMv4_NopEncoding = 0xe1a00000;   // using MOV r0,r0
  288|  2.55k|  const uint32_t ARMv6T2_NopEncoding = 0xe320f000; // NOP
  289|  2.55k|  if (isThumb()) {
  ------------------
  |  Branch (289:7): [True: 420, False: 2.13k]
  ------------------
  290|    420|    const uint16_t nopEncoding =
  291|    420|        hasNOP() ? Thumb2_16bitNopEncoding : Thumb1_16bitNopEncoding;
  ------------------
  |  Branch (291:9): [True: 420, False: 0]
  ------------------
  292|    420|    uint64_t NumNops = Count / 2;
  293|  34.4k|    for (uint64_t i = 0; i != NumNops; ++i)
  ------------------
  |  Branch (293:26): [True: 34.0k, False: 420]
  ------------------
  294|  34.0k|      OW->write16(nopEncoding);
  295|    420|    if (Count & 1)
  ------------------
  |  Branch (295:9): [True: 0, False: 420]
  ------------------
  296|      0|      OW->write8(0);
  297|    420|    return true;
  298|    420|  }
  299|       |  // ARM mode
  300|  2.13k|  const uint32_t nopEncoding =
  301|  2.13k|      hasNOP() ? ARMv6T2_NopEncoding : ARMv4_NopEncoding;
  ------------------
  |  Branch (301:7): [True: 2.13k, False: 0]
  ------------------
  302|  2.13k|  uint64_t NumNops = Count / 4;
  303|  10.6M|  for (uint64_t i = 0; i != NumNops; ++i)
  ------------------
  |  Branch (303:24): [True: 10.6M, False: 2.13k]
  ------------------
  304|  10.6M|    OW->write32(nopEncoding);
  305|       |  // FIXME: should this function return false when unable to write exactly
  306|       |  // 'Count' bytes with NOP encodings?
  307|  2.13k|  switch (Count % 4) {
  308|  2.13k|  default:
  ------------------
  |  Branch (308:3): [True: 2.13k, False: 4]
  ------------------
  309|  2.13k|    break; // No leftover bytes to write
  310|  2.13k|  case 1:
  ------------------
  |  Branch (310:3): [True: 1, False: 2.13k]
  ------------------
  311|      1|    OW->write8(0);
  312|      1|    break;
  313|      2|  case 2:
  ------------------
  |  Branch (313:3): [True: 2, False: 2.13k]
  ------------------
  314|      2|    OW->write16(0);
  315|      2|    break;
  316|      1|  case 3:
  ------------------
  |  Branch (316:3): [True: 1, False: 2.13k]
  ------------------
  317|      1|    OW->write16(0);
  318|      1|    OW->write8(0xa0);
  319|      1|    break;
  320|  2.13k|  }
  321|       |
  322|  2.13k|  return true;
  323|  2.13k|}
_ZNK7llvm_ks13ARMAsmBackend16adjustFixupValueERKNS_7MCFixupEmbPNS_9MCContextEbb:
  355|  50.1k|{
  356|  50.1k|  unsigned Kind = Fixup.getKind();
  357|  50.1k|  switch (Kind) {
  358|      0|  default:
  ------------------
  |  Branch (358:3): [True: 0, False: 50.1k]
  ------------------
  359|      0|    llvm_unreachable("Unknown fixup kind!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  360|    174|  case FK_Data_1:
  ------------------
  |  Branch (360:3): [True: 174, False: 50.0k]
  ------------------
  361|    518|  case FK_Data_2:
  ------------------
  |  Branch (361:3): [True: 344, False: 49.8k]
  ------------------
  362|  37.2k|  case FK_Data_4:
  ------------------
  |  Branch (362:3): [True: 36.7k, False: 13.4k]
  ------------------
  363|  37.2k|    return Value;
  364|      0|  case FK_SecRel_2:
  ------------------
  |  Branch (364:3): [True: 0, False: 50.1k]
  ------------------
  365|      0|    return Value;
  366|      0|  case FK_SecRel_4:
  ------------------
  |  Branch (366:3): [True: 0, False: 50.1k]
  ------------------
  367|      0|    return Value;
  368|      0|  case ARM::fixup_arm_movt_hi16:
  ------------------
  |  Branch (368:3): [True: 0, False: 50.1k]
  ------------------
  369|      0|    if (!IsPCRel)
  ------------------
  |  Branch (369:9): [True: 0, False: 0]
  ------------------
  370|      0|      Value >>= 16;
  371|       |  // Fallthrough
  372|      0|  case ARM::fixup_arm_movw_lo16: {
  ------------------
  |  Branch (372:3): [True: 0, False: 50.1k]
  ------------------
  373|      0|    unsigned Hi4 = (Value & 0xF000) >> 12;
  374|      0|    unsigned Lo12 = Value & 0x0FFF;
  375|       |    // inst{19-16} = Hi4;
  376|       |    // inst{11-0} = Lo12;
  377|      0|    Value = (Hi4 << 16) | (Lo12);
  378|      0|    return Value;
  379|      0|  }
  380|      0|  case ARM::fixup_t2_movt_hi16:
  ------------------
  |  Branch (380:3): [True: 0, False: 50.1k]
  ------------------
  381|      0|    if (!IsPCRel)
  ------------------
  |  Branch (381:9): [True: 0, False: 0]
  ------------------
  382|      0|      Value >>= 16;
  383|       |  // Fallthrough
  384|      0|  case ARM::fixup_t2_movw_lo16: {
  ------------------
  |  Branch (384:3): [True: 0, False: 50.1k]
  ------------------
  385|      0|    unsigned Hi4 = (Value & 0xF000) >> 12;
  386|      0|    unsigned i = (Value & 0x800) >> 11;
  387|      0|    unsigned Mid3 = (Value & 0x700) >> 8;
  388|      0|    unsigned Lo8 = Value & 0x0FF;
  389|       |    // inst{19-16} = Hi4;
  390|       |    // inst{26} = i;
  391|       |    // inst{14-12} = Mid3;
  392|       |    // inst{7-0} = Lo8;
  393|      0|    Value = (Hi4 << 16) | (i << 26) | (Mid3 << 12) | (Lo8);
  394|      0|    return swapHalfWords(Value, IsLittleEndian);
  395|      0|  }
  396|  1.10k|  case ARM::fixup_arm_ldst_pcrel_12:
  ------------------
  |  Branch (396:3): [True: 1.10k, False: 49.0k]
  ------------------
  397|       |    // ARM PC-relative values are offset by 8.
  398|  1.10k|    Value -= 4;
  399|       |  // FALLTHROUGH
  400|  1.27k|  case ARM::fixup_t2_ldst_pcrel_12: {
  ------------------
  |  Branch (400:3): [True: 164, False: 50.0k]
  ------------------
  401|       |    // Offset by 4, adjusted by two due to the half-word ordering of thumb.
  402|  1.27k|    Value -= 4;
  403|  1.27k|    bool isAdd = true;
  404|  1.27k|    if ((int64_t)Value < 0) {
  ------------------
  |  Branch (404:9): [True: 277, False: 993]
  ------------------
  405|    277|      Value = -Value;
  406|    277|      isAdd = false;
  407|    277|    }
  408|  1.27k|    if (Ctx && Value >= 4096) {
  ------------------
  |  Branch (408:9): [True: 636, False: 634]
  |  Branch (408:16): [True: 55, False: 581]
  ------------------
  409|     55|      Ctx->reportError(Fixup.getLoc(), "out of range pc-relative fixup value");
  410|     55|      return 0;
  411|     55|    }
  412|  1.21k|    Value |= isAdd << 23;
  413|       |
  414|       |    // Same addressing mode as fixup_arm_pcrel_10,
  415|       |    // but with 16-bit halfwords swapped.
  416|  1.21k|    if (Kind == ARM::fixup_t2_ldst_pcrel_12)
  ------------------
  |  Branch (416:9): [True: 152, False: 1.06k]
  ------------------
  417|    152|      return swapHalfWords(Value, IsLittleEndian);
  418|       |
  419|  1.06k|    return Value;
  420|  1.21k|  }
  421|  3.41k|  case ARM::fixup_arm_adr_pcrel_12: {
  ------------------
  |  Branch (421:3): [True: 3.41k, False: 46.7k]
  ------------------
  422|       |    // ARM PC-relative values are offset by 8.
  423|  3.41k|    Value -= 8;
  424|  3.41k|    unsigned opc = 4; // bits {24-21}. Default to add: 0b0100
  425|  3.41k|    if ((int64_t)Value < 0) {
  ------------------
  |  Branch (425:9): [True: 2.09k, False: 1.32k]
  ------------------
  426|  2.09k|      Value = -Value;
  427|  2.09k|      opc = 2; // 0b0010
  428|  2.09k|    }
  429|  3.41k|    if (Ctx && ARM_AM::getSOImmVal(Value) == -1) {
  ------------------
  |  Branch (429:9): [True: 1.70k, False: 1.70k]
  |  Branch (429:16): [True: 839, False: 868]
  ------------------
  430|    839|      Ctx->reportError(Fixup.getLoc(), "out of range pc-relative fixup value");
  431|    839|      return 0;
  432|    839|    }
  433|       |    // Encode the immediate and shift the opcode into place.
  434|  2.57k|    return ARM_AM::getSOImmVal(Value) | (opc << 21);
  435|  3.41k|  }
  436|       |
  437|    106|  case ARM::fixup_t2_adr_pcrel_12: {
  ------------------
  |  Branch (437:3): [True: 106, False: 50.0k]
  ------------------
  438|    106|    Value -= 4;
  439|    106|    unsigned opc = 0;
  440|    106|    if ((int64_t)Value < 0) {
  ------------------
  |  Branch (440:9): [True: 100, False: 6]
  ------------------
  441|    100|      Value = -Value;
  442|    100|      opc = 5;
  443|    100|    }
  444|       |
  445|    106|    uint32_t out = (opc << 21);
  446|    106|    out |= (Value & 0x800) << 15;
  447|    106|    out |= (Value & 0x700) << 4;
  448|    106|    out |= (Value & 0x0FF);
  449|       |
  450|    106|    return swapHalfWords(out, IsLittleEndian);
  451|  3.41k|  }
  452|       |
  453|    716|  case ARM::fixup_arm_condbranch:
  ------------------
  |  Branch (453:3): [True: 716, False: 49.4k]
  ------------------
  454|  2.11k|  case ARM::fixup_arm_uncondbranch:
  ------------------
  |  Branch (454:3): [True: 1.39k, False: 48.7k]
  ------------------
  455|  3.00k|  case ARM::fixup_arm_uncondbl:
  ------------------
  |  Branch (455:3): [True: 888, False: 49.2k]
  ------------------
  456|  3.07k|  case ARM::fixup_arm_condbl:
  ------------------
  |  Branch (456:3): [True: 68, False: 50.1k]
  ------------------
  457|  3.27k|  case ARM::fixup_arm_blx:
  ------------------
  |  Branch (457:3): [True: 202, False: 49.9k]
  ------------------
  458|       |    // These values don't encode the low two bits since they're always zero.
  459|       |    // Offset by 8 just as above.
  460|  3.27k|    if (const MCSymbolRefExpr *SRE =
  ------------------
  |  Branch (460:32): [True: 2.18k, False: 1.08k]
  ------------------
  461|  3.27k|            dyn_cast<MCSymbolRefExpr>(Fixup.getValue()))
  462|  2.18k|      if (SRE->getKind() == MCSymbolRefExpr::VK_ARM_TLSCALL)
  ------------------
  |  Branch (462:11): [True: 0, False: 2.18k]
  ------------------
  463|      0|        return 0;
  464|  3.27k|    return 0xffffff & ((Value - 8) >> 2);
  465|     64|  case ARM::fixup_t2_uncondbranch: {
  ------------------
  |  Branch (465:3): [True: 64, False: 50.1k]
  ------------------
  466|     64|    Value = Value - 4;
  467|     64|    Value >>= 1; // Low bit is not encoded.
  468|       |
  469|     64|    uint32_t out = 0;
  470|     64|    bool I = Value & 0x800000;
  471|     64|    bool J1 = Value & 0x400000;
  472|     64|    bool J2 = Value & 0x200000;
  473|     64|    J1 ^= I;
  474|     64|    J2 ^= I;
  475|       |
  476|     64|    out |= I << 26;                 // S bit
  477|     64|    out |= !J1 << 13;               // J1 bit
  478|     64|    out |= !J2 << 11;               // J2 bit
  479|     64|    out |= (Value & 0x1FF800) << 5; // imm6 field
  480|     64|    out |= (Value & 0x0007FF);      // imm11 field
  481|       |
  482|     64|    return swapHalfWords(out, IsLittleEndian);
  483|  3.27k|  }
  484|    262|  case ARM::fixup_t2_condbranch: {
  ------------------
  |  Branch (484:3): [True: 262, False: 49.9k]
  ------------------
  485|    262|    Value = Value - 4;
  486|    262|    Value >>= 1; // Low bit is not encoded.
  487|       |
  488|    262|    uint64_t out = 0;
  489|    262|    out |= (Value & 0x80000) << 7; // S bit
  490|    262|    out |= (Value & 0x40000) >> 7; // J2 bit
  491|    262|    out |= (Value & 0x20000) >> 4; // J1 bit
  492|    262|    out |= (Value & 0x1F800) << 5; // imm6 field
  493|    262|    out |= (Value & 0x007FF);      // imm11 field
  494|       |
  495|    262|    return swapHalfWords(out, IsLittleEndian);
  496|  3.27k|  }
  497|    414|  case ARM::fixup_arm_thumb_bl: {
  ------------------
  |  Branch (497:3): [True: 414, False: 49.7k]
  ------------------
  498|       |    // The value doesn't encode the low bit (always zero) and is offset by
  499|       |    // four. The 32-bit immediate value is encoded as
  500|       |    //   imm32 = SignExtend(S:I1:I2:imm10:imm11:0)
  501|       |    // where I1 = NOT(J1 ^ S) and I2 = NOT(J2 ^ S).
  502|       |    // The value is encoded into disjoint bit positions in the destination
  503|       |    // opcode. x = unchanged, I = immediate value bit, S = sign extension bit,
  504|       |    // J = either J1 or J2 bit
  505|       |    //
  506|       |    //   BL:  xxxxxSIIIIIIIIII xxJxJIIIIIIIIIII
  507|       |    //
  508|       |    // Note that the halfwords are stored high first, low second; so we need
  509|       |    // to transpose the fixup value here to map properly.
  510|    414|    uint32_t offset = (Value - 4) >> 1;
  511|    414|    uint32_t signBit = (offset & 0x800000) >> 23;
  512|    414|    uint32_t I1Bit = (offset & 0x400000) >> 22;
  513|    414|    uint32_t J1Bit = (I1Bit ^ 0x1) ^ signBit;
  514|    414|    uint32_t I2Bit = (offset & 0x200000) >> 21;
  515|    414|    uint32_t J2Bit = (I2Bit ^ 0x1) ^ signBit;
  516|    414|    uint32_t imm10Bits = (offset & 0x1FF800) >> 11;
  517|    414|    uint32_t imm11Bits = (offset & 0x000007FF);
  518|       |
  519|    414|    uint32_t FirstHalf = (((uint16_t)signBit << 10) | (uint16_t)imm10Bits);
  520|    414|    uint32_t SecondHalf = (((uint16_t)J1Bit << 13) | ((uint16_t)J2Bit << 11) |
  521|    414|                           (uint16_t)imm11Bits);
  522|    414|    return joinHalfWords(FirstHalf, SecondHalf, IsLittleEndian);
  523|  3.27k|  }
  524|     78|  case ARM::fixup_arm_thumb_blx: {
  ------------------
  |  Branch (524:3): [True: 78, False: 50.1k]
  ------------------
  525|       |    // The value doesn't encode the low two bits (always zero) and is offset by
  526|       |    // four (see fixup_arm_thumb_cp). The 32-bit immediate value is encoded as
  527|       |    //   imm32 = SignExtend(S:I1:I2:imm10H:imm10L:00)
  528|       |    // where I1 = NOT(J1 ^ S) and I2 = NOT(J2 ^ S).
  529|       |    // The value is encoded into disjoint bit positions in the destination
  530|       |    // opcode. x = unchanged, I = immediate value bit, S = sign extension bit,
  531|       |    // J = either J1 or J2 bit, 0 = zero.
  532|       |    //
  533|       |    //   BLX: xxxxxSIIIIIIIIII xxJxJIIIIIIIIII0
  534|       |    //
  535|       |    // Note that the halfwords are stored high first, low second; so we need
  536|       |    // to transpose the fixup value here to map properly.
  537|     78|    uint32_t offset = (Value - 2) >> 2;
  538|     78|    if (const MCSymbolRefExpr *SRE =
  ------------------
  |  Branch (538:32): [True: 38, False: 40]
  ------------------
  539|     78|            dyn_cast<MCSymbolRefExpr>(Fixup.getValue()))
  540|     38|      if (SRE->getKind() == MCSymbolRefExpr::VK_ARM_TLSCALL)
  ------------------
  |  Branch (540:11): [True: 0, False: 38]
  ------------------
  541|      0|        offset = 0;
  542|     78|    uint32_t signBit = (offset & 0x400000) >> 22;
  543|     78|    uint32_t I1Bit = (offset & 0x200000) >> 21;
  544|     78|    uint32_t J1Bit = (I1Bit ^ 0x1) ^ signBit;
  545|     78|    uint32_t I2Bit = (offset & 0x100000) >> 20;
  546|     78|    uint32_t J2Bit = (I2Bit ^ 0x1) ^ signBit;
  547|     78|    uint32_t imm10HBits = (offset & 0xFFC00) >> 10;
  548|     78|    uint32_t imm10LBits = (offset & 0x3FF);
  549|       |
  550|     78|    uint32_t FirstHalf = (((uint16_t)signBit << 10) | (uint16_t)imm10HBits);
  551|     78|    uint32_t SecondHalf = (((uint16_t)J1Bit << 13) | ((uint16_t)J2Bit << 11) |
  552|     78|                           ((uint16_t)imm10LBits) << 1);
  553|     78|    return joinHalfWords(FirstHalf, SecondHalf, IsLittleEndian);
  554|  3.27k|  }
  555|     53|  case ARM::fixup_thumb_adr_pcrel_10:
  ------------------
  |  Branch (555:3): [True: 53, False: 50.1k]
  ------------------
  556|  1.29k|  case ARM::fixup_arm_thumb_cp:
  ------------------
  |  Branch (556:3): [True: 1.24k, False: 48.9k]
  ------------------
  557|       |    // On CPUs supporting Thumb2, this will be relaxed to an ldr.w, otherwise we
  558|       |    // could have an error on our hands.
  559|  1.29k|    if (Ctx && !STI->getFeatureBits()[ARM::FeatureThumb2] && IsResolved) {
  ------------------
  |  Branch (559:9): [True: 884, False: 410]
  |  Branch (559:9): [True: 0, False: 1.29k]
  |  Branch (559:16): [True: 0, False: 884]
  |  Branch (559:62): [True: 0, False: 0]
  ------------------
  560|      0|      const char *FixupDiagnostic = reasonForFixupRelaxation(Fixup, Value);
  561|      0|      if (FixupDiagnostic) {
  ------------------
  |  Branch (561:11): [True: 0, False: 0]
  ------------------
  562|      0|        Ctx->reportError(Fixup.getLoc(), FixupDiagnostic);
  563|      0|        return 0;
  564|      0|      }
  565|      0|    }
  566|       |    // Offset by 4, and don't encode the low two bits.
  567|  1.29k|    return ((Value - 4) >> 2) & 0xff;
  568|     74|  case ARM::fixup_arm_thumb_cb: {
  ------------------
  |  Branch (568:3): [True: 74, False: 50.1k]
  ------------------
  569|       |    // Offset by 4 and don't encode the lower bit, which is always 0.
  570|       |    // FIXME: diagnose if no Thumb2
  571|     74|    uint32_t Binary = (Value - 4) >> 1;
  572|     74|    return ((Binary & 0x20) << 4) | ((Binary & 0x1f) << 3);
  573|  1.29k|  }
  574|    761|  case ARM::fixup_arm_thumb_br:
  ------------------
  |  Branch (574:3): [True: 761, False: 49.4k]
  ------------------
  575|       |    // Offset by 4 and don't encode the lower bit, which is always 0.
  576|    761|    if (Ctx && !STI->getFeatureBits()[ARM::FeatureThumb2] &&
  ------------------
  |  Branch (576:9): [True: 558, False: 203]
  |  Branch (576:9): [True: 0, False: 761]
  |  Branch (576:16): [True: 0, False: 558]
  ------------------
  577|      0|               !STI->getFeatureBits()[ARM::HasV8MBaselineOps]) {
  ------------------
  |  Branch (577:16): [True: 0, False: 0]
  ------------------
  578|      0|      const char *FixupDiagnostic = reasonForFixupRelaxation(Fixup, Value);
  579|      0|      if (FixupDiagnostic) {
  ------------------
  |  Branch (579:11): [True: 0, False: 0]
  ------------------
  580|      0|        Ctx->reportError(Fixup.getLoc(), FixupDiagnostic);
  581|      0|        return 0;
  582|      0|      }
  583|      0|    }
  584|    761|    return ((Value - 4) >> 1) & 0x7ff;
  585|    160|  case ARM::fixup_arm_thumb_bcc:
  ------------------
  |  Branch (585:3): [True: 160, False: 50.0k]
  ------------------
  586|       |    // Offset by 4 and don't encode the lower bit, which is always 0.
  587|    160|    if (Ctx && !STI->getFeatureBits()[ARM::FeatureThumb2]) {
  ------------------
  |  Branch (587:9): [True: 125, False: 35]
  |  Branch (587:9): [True: 0, False: 160]
  |  Branch (587:16): [True: 0, False: 125]
  ------------------
  588|      0|      const char *FixupDiagnostic = reasonForFixupRelaxation(Fixup, Value);
  589|      0|      if (FixupDiagnostic) {
  ------------------
  |  Branch (589:11): [True: 0, False: 0]
  ------------------
  590|      0|        Ctx->reportError(Fixup.getLoc(), FixupDiagnostic);
  591|      0|        return 0;
  592|      0|      }
  593|      0|    }
  594|    160|    return ((Value - 4) >> 1) & 0xff;
  595|  1.44k|  case ARM::fixup_arm_pcrel_10_unscaled: {
  ------------------
  |  Branch (595:3): [True: 1.44k, False: 48.7k]
  ------------------
  596|  1.44k|    Value = Value - 8; // ARM fixups offset by an additional word and don't
  597|       |                       // need to adjust for the half-word ordering.
  598|  1.44k|    bool isAdd = true;
  599|  1.44k|    if ((int64_t)Value < 0) {
  ------------------
  |  Branch (599:9): [True: 1.34k, False: 94]
  ------------------
  600|  1.34k|      Value = -Value;
  601|  1.34k|      isAdd = false;
  602|  1.34k|    }
  603|       |    // The value has the low 4 bits encoded in [3:0] and the high 4 in [11:8].
  604|  1.44k|    if (Ctx && Value >= 256) {
  ------------------
  |  Branch (604:9): [True: 720, False: 720]
  |  Branch (604:16): [True: 417, False: 303]
  ------------------
  605|    417|      Ctx->reportError(Fixup.getLoc(), "out of range pc-relative fixup value");
  606|    417|      return 0;
  607|    417|    }
  608|  1.02k|    Value = (Value & 0xf) | ((Value & 0xf0) << 4);
  609|  1.02k|    return Value | (isAdd << 23);
  610|  1.44k|  }
  611|    246|  case ARM::fixup_arm_pcrel_10:
  ------------------
  |  Branch (611:3): [True: 246, False: 49.9k]
  ------------------
  612|    246|    Value = Value - 4; // ARM fixups offset by an additional word and don't
  613|       |                       // need to adjust for the half-word ordering.
  614|       |                       // Fall through.
  615|    310|  case ARM::fixup_t2_pcrel_10: {
  ------------------
  |  Branch (615:3): [True: 64, False: 50.1k]
  ------------------
  616|       |    // Offset by 4, adjusted by two due to the half-word ordering of thumb.
  617|    310|    Value = Value - 4;
  618|    310|    bool isAdd = true;
  619|    310|    if ((int64_t)Value < 0) {
  ------------------
  |  Branch (619:9): [True: 68, False: 242]
  ------------------
  620|     68|      Value = -Value;
  621|     68|      isAdd = false;
  622|     68|    }
  623|       |    // These values don't encode the low two bits since they're always zero.
  624|    310|    Value >>= 2;
  625|    310|    if (Ctx && Value >= 256) {
  ------------------
  |  Branch (625:9): [True: 155, False: 155]
  |  Branch (625:16): [True: 99, False: 56]
  ------------------
  626|     99|      Ctx->reportError(Fixup.getLoc(), "out of range pc-relative fixup value");
  627|     99|      return 0;
  628|     99|    }
  629|    211|    Value |= isAdd << 23;
  630|       |
  631|       |    // Same addressing mode as fixup_arm_pcrel_10, but with 16-bit halfwords
  632|       |    // swapped.
  633|    211|    if (Kind == ARM::fixup_t2_pcrel_10)
  ------------------
  |  Branch (633:9): [True: 44, False: 167]
  ------------------
  634|     44|      return swapHalfWords(Value, IsLittleEndian);
  635|       |
  636|    167|    return Value;
  637|    211|  }
  638|      0|  case ARM::fixup_arm_pcrel_9:
  ------------------
  |  Branch (638:3): [True: 0, False: 50.1k]
  ------------------
  639|      0|    Value = Value - 4; // ARM fixups offset by an additional word and don't
  640|       |                       // need to adjust for the half-word ordering.
  641|       |                       // Fall through.
  642|      0|  case ARM::fixup_t2_pcrel_9: {
  ------------------
  |  Branch (642:3): [True: 0, False: 50.1k]
  ------------------
  643|       |    // Offset by 4, adjusted by two due to the half-word ordering of thumb.
  644|      0|    Value = Value - 4;
  645|      0|    bool isAdd = true;
  646|      0|    if ((int64_t)Value < 0) {
  ------------------
  |  Branch (646:9): [True: 0, False: 0]
  ------------------
  647|      0|      Value = -Value;
  648|      0|      isAdd = false;
  649|      0|    }
  650|       |    // These values don't encode the low bit since it's always zero.
  651|      0|    if (Ctx && (Value & 1)) {
  ------------------
  |  Branch (651:9): [True: 0, False: 0]
  |  Branch (651:16): [True: 0, False: 0]
  ------------------
  652|      0|      Ctx->reportError(Fixup.getLoc(), "invalid value for this fixup");
  653|      0|      return 0;
  654|      0|    }
  655|      0|    Value >>= 1;
  656|      0|    if (Ctx && Value >= 256) {
  ------------------
  |  Branch (656:9): [True: 0, False: 0]
  |  Branch (656:16): [True: 0, False: 0]
  ------------------
  657|      0|      Ctx->reportError(Fixup.getLoc(), "out of range pc-relative fixup value");
  658|      0|      return 0;
  659|      0|    }
  660|      0|    Value |= isAdd << 23;
  661|       |
  662|       |    // Same addressing mode as fixup_arm_pcrel_9, but with 16-bit halfwords
  663|       |    // swapped.
  664|      0|    if (Kind == ARM::fixup_t2_pcrel_9)
  ------------------
  |  Branch (664:9): [True: 0, False: 0]
  ------------------
  665|      0|      return swapHalfWords(Value, IsLittleEndian);
  666|       |
  667|      0|    return Value;
  668|      0|  }
  669|  50.1k|  }
  670|  50.1k|}
_ZN7llvm_ks13ARMAsmBackend17processFixupValueERKNS_11MCAssemblerERKNS_11MCAsmLayoutERKNS_7MCFixupEPKNS_10MCFragmentERKNS_7MCValueERmRb:
  678|  25.5k|{
  679|  25.5k|  const MCSymbolRefExpr *A = Target.getSymA();
  680|  25.5k|  const MCSymbol *Sym = A ? &A->getSymbol() : nullptr;
  ------------------
  |  Branch (680:25): [True: 21.1k, False: 4.40k]
  ------------------
  681|       |  // Some fixups to thumb function symbols need the low bit (thumb bit)
  682|       |  // twiddled.
  683|  25.5k|  if ((unsigned)Fixup.getKind() != ARM::fixup_arm_ldst_pcrel_12 &&
  ------------------
  |  Branch (683:7): [True: 25.0k, False: 554]
  ------------------
  684|  25.0k|      (unsigned)Fixup.getKind() != ARM::fixup_t2_ldst_pcrel_12 &&
  ------------------
  |  Branch (684:7): [True: 24.9k, False: 82]
  ------------------
  685|  24.9k|      (unsigned)Fixup.getKind() != ARM::fixup_arm_adr_pcrel_12 &&
  ------------------
  |  Branch (685:7): [True: 23.2k, False: 1.70k]
  ------------------
  686|  23.2k|      (unsigned)Fixup.getKind() != ARM::fixup_thumb_adr_pcrel_10 &&
  ------------------
  |  Branch (686:7): [True: 23.1k, False: 53]
  ------------------
  687|  23.1k|      (unsigned)Fixup.getKind() != ARM::fixup_t2_adr_pcrel_12 &&
  ------------------
  |  Branch (687:7): [True: 23.1k, False: 53]
  ------------------
  688|  23.1k|      (unsigned)Fixup.getKind() != ARM::fixup_arm_thumb_cp) {
  ------------------
  |  Branch (688:7): [True: 22.2k, False: 831]
  ------------------
  689|  22.2k|    if (Sym) {
  ------------------
  |  Branch (689:9): [True: 19.6k, False: 2.63k]
  ------------------
  690|  19.6k|      if (Asm.isThumbFunc(Sym))
  ------------------
  |  Branch (690:11): [True: 0, False: 19.6k]
  ------------------
  691|      0|        Value |= 1;
  692|  19.6k|    }
  693|  22.2k|  }
  694|  25.5k|  if (IsResolved && (unsigned)Fixup.getKind() == ARM::fixup_arm_thumb_bl) {
  ------------------
  |  Branch (694:7): [True: 3.71k, False: 21.8k]
  |  Branch (694:21): [True: 35, False: 3.67k]
  ------------------
  695|     35|    assert(Sym && "How did we resolve this?");
  ------------------
  |  Branch (695:5): [True: 35, False: 0]
  |  Branch (695:5): [True: 35, Folded]
  |  Branch (695:5): [True: 35, False: 0]
  ------------------
  696|       |
  697|       |    // If the symbol is external the linker will handle it.
  698|       |    // FIXME: Should we handle it as an optimization?
  699|       |
  700|       |    // If the symbol is out of range, produce a relocation and hope the
  701|       |    // linker can handle it. GNU AS produces an error in this case.
  702|     35|    if (Sym->isExternal() || ((Value >= 0x400004) && (Value <= (uint64_t)(-0x400000))))
  ------------------
  |  Branch (702:9): [True: 0, False: 35]
  |  Branch (702:31): [True: 22, False: 13]
  |  Branch (702:54): [True: 12, False: 10]
  ------------------
  703|     12|      IsResolved = false;
  704|     35|  }
  705|       |  // We must always generate a relocation for BL/BLX instructions if we have
  706|       |  // a symbol to reference, as the linker relies on knowing the destination
  707|       |  // symbol's thumb-ness to get interworking right.
  708|  25.5k|  if (A && (
  ------------------
  |  Branch (708:7): [True: 21.1k, False: 4.40k]
  |  Branch (708:12): [True: 34, False: 21.1k]
  ------------------
  709|       |            // (unsigned)Fixup.getKind() == ARM::fixup_arm_thumb_blx ||
  710|       |            //(unsigned)Fixup.getKind() == ARM::fixup_arm_blx ||
  711|       |            //(unsigned)Fixup.getKind() == ARM::fixup_arm_uncondbl ||
  712|  21.1k|            (unsigned)Fixup.getKind() == ARM::fixup_arm_condbl))
  713|     34|    IsResolved = false;
  714|       |
  715|       |  // Try to get the encoded value for the fixup as-if we're mapping it into
  716|       |  // the instruction. This allows adjustFixupValue() to issue a diagnostic
  717|       |  // if the value aren't invalid.
  718|  25.5k|  (void)adjustFixupValue(Fixup, Value, false, &Asm.getContext(),
  719|  25.5k|                         IsLittleEndian, IsResolved);
  720|  25.5k|}
_ZNK7llvm_ks13ARMAsmBackend10applyFixupERKNS_7MCFixupEPcjmbRj:
  823|  24.6k|{
  824|  24.6k|  unsigned NumBytes = getFixupKindNumBytes(Fixup.getKind());
  825|  24.6k|  Value =
  826|  24.6k|      adjustFixupValue(Fixup, Value, IsPCRel, nullptr, IsLittleEndian, true);
  827|  24.6k|  if (!Value)
  ------------------
  |  Branch (827:7): [True: 1.33k, False: 23.2k]
  ------------------
  828|  1.33k|    return; // Doesn't change encoding.
  829|       |
  830|  23.2k|  unsigned Offset = Fixup.getOffset();
  831|       |  //assert(Offset + NumBytes <= DataSize && "Invalid fixup offset!");
  832|  23.2k|  if (Offset + NumBytes > DataSize) {
  ------------------
  |  Branch (832:7): [True: 0, False: 23.2k]
  ------------------
  833|      0|      KsError = KS_ERR_ASM_FIXUP_INVALID;
  834|      0|      return;
  835|      0|  }
  836|       |
  837|       |  // Used to point to big endian bytes.
  838|  23.2k|  unsigned FullSizeBytes;
  839|  23.2k|  if (!IsLittleEndian) {
  ------------------
  |  Branch (839:7): [True: 0, False: 23.2k]
  ------------------
  840|      0|    FullSizeBytes = getFixupKindContainerSizeBytes(Fixup.getKind());
  841|       |    //assert((Offset + FullSizeBytes) <= DataSize && "Invalid fixup size!");
  842|       |    //assert(NumBytes <= FullSizeBytes && "Invalid fixup size!");
  843|      0|    if ((Offset + FullSizeBytes) > DataSize ||
  ------------------
  |  Branch (843:9): [True: 0, False: 0]
  ------------------
  844|      0|            NumBytes > FullSizeBytes) {
  ------------------
  |  Branch (844:13): [True: 0, False: 0]
  ------------------
  845|      0|        KsError = KS_ERR_ASM_FIXUP_INVALID;
  846|      0|        return;
  847|      0|    }
  848|      0|  }
  849|       |
  850|       |  // For each byte of the fragment that the fixup touches, mask in the bits from
  851|       |  // the fixup value. The Value has been "split up" into the appropriate
  852|       |  // bitfields above.
  853|   109k|  for (unsigned i = 0; i != NumBytes; ++i) {
  ------------------
  |  Branch (853:24): [True: 86.5k, False: 23.2k]
  ------------------
  854|  86.5k|    unsigned Idx = IsLittleEndian ? i : (FullSizeBytes - 1 - i);
  ------------------
  |  Branch (854:20): [True: 86.5k, False: 0]
  ------------------
  855|  86.5k|    Data[Offset + Idx] |= uint8_t((Value >> (i * 8)) & 0xff);
  856|  86.5k|  }
  857|  23.2k|}
_ZN7llvm_ks19createARMAsmBackendERKNS_6TargetERKNS_14MCRegisterInfoERKNS_6TripleENS_9StringRefEb:
  890|  20.9k|                                        bool isLittle) {
  891|  20.9k|  switch (TheTriple.getObjectFormat()) {
  892|      0|  default:
  ------------------
  |  Branch (892:3): [True: 0, False: 20.9k]
  ------------------
  893|      0|    llvm_unreachable("unsupported object format");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  894|  20.9k|  case Triple::ELF:
  ------------------
  |  Branch (894:3): [True: 20.9k, False: 0]
  ------------------
  895|  20.9k|    assert(TheTriple.isOSBinFormatELF() && "using ELF for non-ELF target");
  ------------------
  |  Branch (895:5): [True: 20.9k, False: 0]
  |  Branch (895:5): [True: 20.9k, Folded]
  |  Branch (895:5): [True: 20.9k, False: 0]
  ------------------
  896|  20.9k|    uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(TheTriple.getOS());
  897|  20.9k|    return new ARMAsmBackendELF(T, TheTriple, OSABI, isLittle);
  898|  20.9k|  }
  899|  20.9k|}
_ZN7llvm_ks21createARMLEAsmBackendERKNS_6TargetERKNS_14MCRegisterInfoERKNS_6TripleENS_9StringRefE:
  903|  20.9k|                                          const Triple &TT, StringRef CPU) {
  904|  20.9k|  return createARMAsmBackend(T, MRI, TT, CPU, true);
  905|  20.9k|}
ARMAsmBackend.cpp:_ZL13swapHalfWordsjb:
  325|    628|static uint32_t swapHalfWords(uint32_t Value, bool IsLittleEndian) {
  326|    628|  if (IsLittleEndian) {
  ------------------
  |  Branch (326:7): [True: 628, False: 0]
  ------------------
  327|       |    // Note that the halfwords are stored high first and low second in thumb;
  328|       |    // so we need to swap the fixup value here to map properly.
  329|    628|    uint32_t Swapped = (Value & 0xFFFF0000) >> 16;
  330|    628|    Swapped |= (Value & 0x0000FFFF) << 16;
  331|    628|    return Swapped;
  332|    628|  } else
  333|      0|    return Value;
  334|    628|}
ARMAsmBackend.cpp:_ZL13joinHalfWordsjjb:
  337|    492|                              bool IsLittleEndian) {
  338|    492|  uint32_t Value;
  339|       |
  340|    492|  if (IsLittleEndian) {
  ------------------
  |  Branch (340:7): [True: 492, False: 0]
  ------------------
  341|    492|    Value = (SecondHalf & 0xFFFF) << 16;
  342|    492|    Value |= (FirstHalf & 0xFFFF);
  343|    492|  } else {
  344|      0|    Value = (SecondHalf & 0xFFFF);
  345|      0|    Value |= (FirstHalf & 0xFFFF) << 16;
  346|      0|  }
  347|       |
  348|    492|  return Value;
  349|    492|}
ARMAsmBackend.cpp:_ZL20getFixupKindNumBytesj:
  723|  24.6k|static unsigned getFixupKindNumBytes(unsigned Kind) {
  724|  24.6k|  switch (Kind) {
  725|      0|  default:
  ------------------
  |  Branch (725:3): [True: 0, False: 24.6k]
  ------------------
  726|      0|    llvm_unreachable("Unknown fixup kind!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  727|       |
  728|     87|  case FK_Data_1:
  ------------------
  |  Branch (728:3): [True: 87, False: 24.5k]
  ------------------
  729|    122|  case ARM::fixup_arm_thumb_bcc:
  ------------------
  |  Branch (729:3): [True: 35, False: 24.5k]
  ------------------
  730|    532|  case ARM::fixup_arm_thumb_cp:
  ------------------
  |  Branch (730:3): [True: 410, False: 24.1k]
  ------------------
  731|    532|  case ARM::fixup_thumb_adr_pcrel_10:
  ------------------
  |  Branch (731:3): [True: 0, False: 24.6k]
  ------------------
  732|    532|    return 1;
  733|       |
  734|    172|  case FK_Data_2:
  ------------------
  |  Branch (734:3): [True: 172, False: 24.4k]
  ------------------
  735|    375|  case ARM::fixup_arm_thumb_br:
  ------------------
  |  Branch (735:3): [True: 203, False: 24.3k]
  ------------------
  736|    387|  case ARM::fixup_arm_thumb_cb:
  ------------------
  |  Branch (736:3): [True: 12, False: 24.5k]
  ------------------
  737|    387|    return 2;
  738|       |
  739|    720|  case ARM::fixup_arm_pcrel_10_unscaled:
  ------------------
  |  Branch (739:3): [True: 720, False: 23.8k]
  ------------------
  740|  1.27k|  case ARM::fixup_arm_ldst_pcrel_12:
  ------------------
  |  Branch (740:3): [True: 552, False: 24.0k]
  ------------------
  741|  1.39k|  case ARM::fixup_arm_pcrel_10:
  ------------------
  |  Branch (741:3): [True: 123, False: 24.4k]
  ------------------
  742|  1.39k|  case ARM::fixup_arm_pcrel_9:
  ------------------
  |  Branch (742:3): [True: 0, False: 24.6k]
  ------------------
  743|  3.10k|  case ARM::fixup_arm_adr_pcrel_12:
  ------------------
  |  Branch (743:3): [True: 1.70k, False: 22.8k]
  ------------------
  744|  3.54k|  case ARM::fixup_arm_uncondbl:
  ------------------
  |  Branch (744:3): [True: 444, False: 24.1k]
  ------------------
  745|  3.58k|  case ARM::fixup_arm_condbl:
  ------------------
  |  Branch (745:3): [True: 34, False: 24.5k]
  ------------------
  746|  3.68k|  case ARM::fixup_arm_blx:
  ------------------
  |  Branch (746:3): [True: 101, False: 24.5k]
  ------------------
  747|  4.03k|  case ARM::fixup_arm_condbranch:
  ------------------
  |  Branch (747:3): [True: 358, False: 24.2k]
  ------------------
  748|  4.73k|  case ARM::fixup_arm_uncondbranch:
  ------------------
  |  Branch (748:3): [True: 699, False: 23.9k]
  ------------------
  749|  4.73k|    return 3;
  750|       |
  751|  18.3k|  case FK_Data_4:
  ------------------
  |  Branch (751:3): [True: 18.3k, False: 6.23k]
  ------------------
  752|  18.4k|  case ARM::fixup_t2_ldst_pcrel_12:
  ------------------
  |  Branch (752:3): [True: 82, False: 24.5k]
  ------------------
  753|  18.5k|  case ARM::fixup_t2_condbranch:
  ------------------
  |  Branch (753:3): [True: 131, False: 24.4k]
  ------------------
  754|  18.6k|  case ARM::fixup_t2_uncondbranch:
  ------------------
  |  Branch (754:3): [True: 32, False: 24.5k]
  ------------------
  755|  18.6k|  case ARM::fixup_t2_pcrel_10:
  ------------------
  |  Branch (755:3): [True: 32, False: 24.5k]
  ------------------
  756|  18.6k|  case ARM::fixup_t2_pcrel_9:
  ------------------
  |  Branch (756:3): [True: 0, False: 24.6k]
  ------------------
  757|  18.6k|  case ARM::fixup_t2_adr_pcrel_12:
  ------------------
  |  Branch (757:3): [True: 53, False: 24.5k]
  ------------------
  758|  18.9k|  case ARM::fixup_arm_thumb_bl:
  ------------------
  |  Branch (758:3): [True: 207, False: 24.3k]
  ------------------
  759|  18.9k|  case ARM::fixup_arm_thumb_blx:
  ------------------
  |  Branch (759:3): [True: 39, False: 24.5k]
  ------------------
  760|  18.9k|  case ARM::fixup_arm_movt_hi16:
  ------------------
  |  Branch (760:3): [True: 0, False: 24.6k]
  ------------------
  761|  18.9k|  case ARM::fixup_arm_movw_lo16:
  ------------------
  |  Branch (761:3): [True: 0, False: 24.6k]
  ------------------
  762|  18.9k|  case ARM::fixup_t2_movt_hi16:
  ------------------
  |  Branch (762:3): [True: 0, False: 24.6k]
  ------------------
  763|  18.9k|  case ARM::fixup_t2_movw_lo16:
  ------------------
  |  Branch (763:3): [True: 0, False: 24.6k]
  ------------------
  764|  18.9k|    return 4;
  765|       |
  766|      0|  case FK_SecRel_2:
  ------------------
  |  Branch (766:3): [True: 0, False: 24.6k]
  ------------------
  767|      0|    return 2;
  768|      0|  case FK_SecRel_4:
  ------------------
  |  Branch (768:3): [True: 0, False: 24.6k]
  ------------------
  769|      0|    return 4;
  770|  24.6k|  }
  771|  24.6k|}

_ZN7llvm_ks13ARMAsmBackend10setIsThumbEb:
   74|  2.31k|  void setIsThumb(bool it) { isThumbMode = it; }
_ZNK7llvm_ks13ARMAsmBackend7isThumbEv:
   73|  2.55k|  bool isThumb() const { return isThumbMode; }
_ZNK7llvm_ks13ARMAsmBackend6hasNOPEv:
   37|  2.55k|  bool hasNOP() const { return STI->getFeatureBits()[ARM::HasV6T2Ops]; }
_ZN7llvm_ks13ARMAsmBackendC2ERKNS_6TargetERKNS_6TripleEb:
   27|  20.9k|      : MCAsmBackend(), STI(ARM_MC::createARMMCSubtargetInfo(TT, "", "")),
   28|  20.9k|        isThumbMode(TT.getArchName().startswith("thumb")),
   29|  20.9k|        IsLittleEndian(IsLittle) {}
_ZN7llvm_ks13ARMAsmBackendD2Ev:
   31|  20.9k|  ~ARMAsmBackend() override { delete STI; }
_ZNK7llvm_ks13ARMAsmBackend8isLittleEv:
   75|  20.9k|  bool isLittle() const { return IsLittleEndian; }
_ZNK7llvm_ks13ARMAsmBackend16getNumFixupKindsEv:
   33|  21.0k|  unsigned getNumFixupKinds() const override {
   34|  21.0k|    return ARM::NumTargetFixupKinds;
   35|  21.0k|  }

ARMAsmBackend.cpp:_ZN12_GLOBAL__N_116ARMAsmBackendELFC2ERKN7llvm_ks6TargetERKNS1_6TripleEhb:
   23|  20.9k|      : ARMAsmBackend(T, TT, IsLittle), OSABI(OSABI) {}
ARMAsmBackend.cpp:_ZNK12_GLOBAL__N_116ARMAsmBackendELF18createObjectWriterERN7llvm_ks17raw_pwrite_streamE:
   25|  20.9k|  MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
   26|  20.9k|    return createARMELFObjectWriter(OS, OSABI, isLittle());
   27|  20.9k|  }

ARMAsmParser.cpp:_ZN7llvm_ksL16isARMLowRegisterEj:
  210|  2.85k|static inline bool isARMLowRegister(unsigned Reg) {
  211|  2.85k|  using namespace ARM;
  212|  2.85k|  switch (Reg) {
  213|  1.40k|  case R0:  case R1:  case R2:  case R3:
  ------------------
  |  Branch (213:3): [True: 588, False: 2.26k]
  |  Branch (213:13): [True: 127, False: 2.72k]
  |  Branch (213:23): [True: 43, False: 2.81k]
  |  Branch (213:33): [True: 647, False: 2.20k]
  ------------------
  214|  2.25k|  case R4:  case R5:  case R6:  case R7:
  ------------------
  |  Branch (214:3): [True: 226, False: 2.62k]
  |  Branch (214:13): [True: 226, False: 2.62k]
  |  Branch (214:23): [True: 231, False: 2.62k]
  |  Branch (214:33): [True: 171, False: 2.68k]
  ------------------
  215|  2.25k|    return true;
  216|    595|  default:
  ------------------
  |  Branch (216:3): [True: 595, False: 2.25k]
  ------------------
  217|    595|    return false;
  218|  2.85k|  }
  219|  2.85k|}
ARMAsmParser.cpp:_ZN7llvm_ks5ARMCCL20getOppositeConditionENS0_9CondCodesE:
   47|      1|  inline static CondCodes getOppositeCondition(CondCodes CC) {
   48|      1|    switch (CC) {
   49|      0|    default: llvm_unreachable("Unknown condition code");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (49:5): [True: 0, False: 1]
  ------------------
   50|      0|    case EQ: return NE;
  ------------------
  |  Branch (50:5): [True: 0, False: 1]
  ------------------
   51|      0|    case NE: return EQ;
  ------------------
  |  Branch (51:5): [True: 0, False: 1]
  ------------------
   52|      0|    case HS: return LO;
  ------------------
  |  Branch (52:5): [True: 0, False: 1]
  ------------------
   53|      0|    case LO: return HS;
  ------------------
  |  Branch (53:5): [True: 0, False: 1]
  ------------------
   54|      0|    case MI: return PL;
  ------------------
  |  Branch (54:5): [True: 0, False: 1]
  ------------------
   55|      1|    case PL: return MI;
  ------------------
  |  Branch (55:5): [True: 1, False: 0]
  ------------------
   56|      0|    case VS: return VC;
  ------------------
  |  Branch (56:5): [True: 0, False: 1]
  ------------------
   57|      0|    case VC: return VS;
  ------------------
  |  Branch (57:5): [True: 0, False: 1]
  ------------------
   58|      0|    case HI: return LS;
  ------------------
  |  Branch (58:5): [True: 0, False: 1]
  ------------------
   59|      0|    case LS: return HI;
  ------------------
  |  Branch (59:5): [True: 0, False: 1]
  ------------------
   60|      0|    case GE: return LT;
  ------------------
  |  Branch (60:5): [True: 0, False: 1]
  ------------------
   61|      0|    case LT: return GE;
  ------------------
  |  Branch (61:5): [True: 0, False: 1]
  ------------------
   62|      0|    case GT: return LE;
  ------------------
  |  Branch (62:5): [True: 0, False: 1]
  ------------------
   63|      0|    case LE: return GT;
  ------------------
  |  Branch (63:5): [True: 0, False: 1]
  ------------------
   64|      1|    }
   65|      1|  }

_ZN7llvm_ks24createARMELFObjectWriterERNS_17raw_pwrite_streamEhb:
  255|  20.9k|                                               bool IsLittleEndian) {
  256|  20.9k|  MCELFObjectTargetWriter *MOTW = new ARMELFObjectWriter(OSABI);
  257|  20.9k|  return createELFObjectWriter(MOTW, OS, IsLittleEndian);
  258|  20.9k|}
ARMELFObjectWriter.cpp:_ZN12_GLOBAL__N_118ARMELFObjectWriterC2Eh:
   45|  20.9k|  : MCELFObjectTargetWriter(/*Is64Bit*/ false, OSABI,
   46|  20.9k|                            ELF::EM_ARM,
   47|  20.9k|                            /*HasRelocationAddend*/ false) {}
ARMELFObjectWriter.cpp:_ZNK12_GLOBAL__N_118ARMELFObjectWriter12getRelocTypeERN7llvm_ks9MCContextERKNS1_7MCValueERKNS1_7MCFixupEb:
   71|  14.5k|                                          bool IsPCRel) const {
   72|  14.5k|  return GetRelocTypeInner(Target, Fixup, IsPCRel);
   73|  14.5k|}
ARMELFObjectWriter.cpp:_ZNK12_GLOBAL__N_118ARMELFObjectWriter17GetRelocTypeInnerERKN7llvm_ks7MCValueERKNS1_7MCFixupEb:
   77|  14.5k|                                               bool IsPCRel) const  {
   78|  14.5k|  MCSymbolRefExpr::VariantKind Modifier = Target.getAccessVariant();
   79|       |
   80|  14.5k|  unsigned Type = 0;
   81|  14.5k|  if (IsPCRel) {
  ------------------
  |  Branch (81:7): [True: 1.30k, False: 13.2k]
  ------------------
   82|  1.30k|    switch ((unsigned)Fixup.getKind()) {
   83|      0|    default:
  ------------------
  |  Branch (83:5): [True: 0, False: 1.30k]
  ------------------
   84|      0|      report_fatal_error("unsupported relocation on symbol");
   85|      0|      return ELF::R_ARM_NONE;
   86|    833|    case FK_Data_4:
  ------------------
  |  Branch (86:5): [True: 833, False: 467]
  ------------------
   87|    833|      switch (Modifier) {
   88|      0|      default: llvm_unreachable("Unsupported Modifier");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (88:7): [True: 0, False: 833]
  ------------------
   89|    833|      case MCSymbolRefExpr::VK_None:
  ------------------
  |  Branch (89:7): [True: 833, False: 0]
  ------------------
   90|    833|        Type = ELF::R_ARM_REL32;
   91|    833|        break;
   92|      0|      case MCSymbolRefExpr::VK_TLSGD:
  ------------------
  |  Branch (92:7): [True: 0, False: 833]
  ------------------
   93|      0|        llvm_unreachable("unimplemented");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
   94|      0|      case MCSymbolRefExpr::VK_GOTTPOFF:
  ------------------
  |  Branch (94:7): [True: 0, False: 833]
  ------------------
   95|      0|        Type = ELF::R_ARM_TLS_IE32;
   96|      0|        break;
   97|      0|      case MCSymbolRefExpr::VK_ARM_GOT_PREL:
  ------------------
  |  Branch (97:7): [True: 0, False: 833]
  ------------------
   98|      0|        Type = ELF::R_ARM_GOT_PREL;
   99|      0|        break;
  100|    833|      }
  101|    833|      break;
  102|    833|    case ARM::fixup_arm_blx:
  ------------------
  |  Branch (102:5): [True: 82, False: 1.21k]
  ------------------
  103|    172|    case ARM::fixup_arm_uncondbl:
  ------------------
  |  Branch (103:5): [True: 90, False: 1.21k]
  ------------------
  104|    172|      switch (Modifier) {
  105|      0|      case MCSymbolRefExpr::VK_PLT:
  ------------------
  |  Branch (105:7): [True: 0, False: 172]
  ------------------
  106|      0|        Type = ELF::R_ARM_CALL;
  107|      0|        break;
  108|      0|      case MCSymbolRefExpr::VK_ARM_TLSCALL:
  ------------------
  |  Branch (108:7): [True: 0, False: 172]
  ------------------
  109|      0|        Type = ELF::R_ARM_TLS_CALL;
  110|      0|        break;
  111|    172|      default:
  ------------------
  |  Branch (111:7): [True: 172, False: 0]
  ------------------
  112|    172|        Type = ELF::R_ARM_CALL;
  113|    172|        break;
  114|    172|      }
  115|    172|      break;
  116|    172|    case ARM::fixup_arm_condbl:
  ------------------
  |  Branch (116:5): [True: 34, False: 1.26k]
  ------------------
  117|     60|    case ARM::fixup_arm_condbranch:
  ------------------
  |  Branch (117:5): [True: 26, False: 1.27k]
  ------------------
  118|    165|    case ARM::fixup_arm_uncondbranch:
  ------------------
  |  Branch (118:5): [True: 105, False: 1.19k]
  ------------------
  119|    165|      Type = ELF::R_ARM_JUMP24;
  120|    165|      break;
  121|     34|    case ARM::fixup_t2_condbranch:
  ------------------
  |  Branch (121:5): [True: 34, False: 1.26k]
  ------------------
  122|     55|    case ARM::fixup_t2_uncondbranch:
  ------------------
  |  Branch (122:5): [True: 21, False: 1.27k]
  ------------------
  123|     55|      Type = ELF::R_ARM_THM_JUMP24;
  124|     55|      break;
  125|      0|    case ARM::fixup_arm_movt_hi16:
  ------------------
  |  Branch (125:5): [True: 0, False: 1.30k]
  ------------------
  126|      0|      Type = ELF::R_ARM_MOVT_PREL;
  127|      0|      break;
  128|      0|    case ARM::fixup_arm_movw_lo16:
  ------------------
  |  Branch (128:5): [True: 0, False: 1.30k]
  ------------------
  129|      0|      Type = ELF::R_ARM_MOVW_PREL_NC;
  130|      0|      break;
  131|      0|    case ARM::fixup_t2_movt_hi16:
  ------------------
  |  Branch (131:5): [True: 0, False: 1.30k]
  ------------------
  132|      0|      Type = ELF::R_ARM_THM_MOVT_PREL;
  133|      0|      break;
  134|      0|    case ARM::fixup_t2_movw_lo16:
  ------------------
  |  Branch (134:5): [True: 0, False: 1.30k]
  ------------------
  135|      0|      Type = ELF::R_ARM_THM_MOVW_PREL_NC;
  136|      0|      break;
  137|     44|    case ARM::fixup_arm_thumb_bl:
  ------------------
  |  Branch (137:5): [True: 44, False: 1.25k]
  ------------------
  138|     75|    case ARM::fixup_arm_thumb_blx:
  ------------------
  |  Branch (138:5): [True: 31, False: 1.26k]
  ------------------
  139|     75|      switch (Modifier) {
  140|      0|      case MCSymbolRefExpr::VK_ARM_TLSCALL:
  ------------------
  |  Branch (140:7): [True: 0, False: 75]
  ------------------
  141|      0|        Type = ELF::R_ARM_THM_TLS_CALL;
  142|      0|        break;
  143|     75|      default:
  ------------------
  |  Branch (143:7): [True: 75, False: 0]
  ------------------
  144|     75|        Type = ELF::R_ARM_THM_CALL;
  145|     75|        break;
  146|     75|      }
  147|     75|      break;
  148|  1.30k|    }
  149|  13.2k|  } else {
  150|  13.2k|    switch ((unsigned)Fixup.getKind()) {
  151|      0|    default:
  ------------------
  |  Branch (151:5): [True: 0, False: 13.2k]
  ------------------
  152|      0|      report_fatal_error("unsupported relocation on symbol");
  153|      0|      return ELF::R_ARM_NONE;
  154|     72|    case FK_Data_1:
  ------------------
  |  Branch (154:5): [True: 72, False: 13.1k]
  ------------------
  155|     72|      switch (Modifier) {
  156|      0|      default: llvm_unreachable("unsupported Modifier");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (156:7): [True: 0, False: 72]
  ------------------
  157|     72|      case MCSymbolRefExpr::VK_None:
  ------------------
  |  Branch (157:7): [True: 72, False: 0]
  ------------------
  158|     72|        Type = ELF::R_ARM_ABS8;
  159|     72|        break;
  160|     72|      }
  161|     72|      break;
  162|    164|    case FK_Data_2:
  ------------------
  |  Branch (162:5): [True: 164, False: 13.0k]
  ------------------
  163|    164|      switch (Modifier) {
  164|      0|      default: llvm_unreachable("unsupported modifier");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (164:7): [True: 0, False: 164]
  ------------------
  165|    164|      case MCSymbolRefExpr::VK_None:
  ------------------
  |  Branch (165:7): [True: 164, False: 0]
  ------------------
  166|    164|        Type = ELF::R_ARM_ABS16;
  167|    164|        break;
  168|    164|      }
  169|    164|      break;
  170|  13.0k|    case FK_Data_4:
  ------------------
  |  Branch (170:5): [True: 13.0k, False: 236]
  ------------------
  171|  13.0k|      switch (Modifier) {
  172|      0|      default: llvm_unreachable("Unsupported Modifier");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (172:7): [True: 0, False: 13.0k]
  ------------------
  173|      0|      case MCSymbolRefExpr::VK_ARM_NONE:
  ------------------
  |  Branch (173:7): [True: 0, False: 13.0k]
  ------------------
  174|      0|        Type = ELF::R_ARM_NONE;
  175|      0|        break;
  176|      0|      case MCSymbolRefExpr::VK_GOT:
  ------------------
  |  Branch (176:7): [True: 0, False: 13.0k]
  ------------------
  177|      0|        Type = ELF::R_ARM_GOT_BREL;
  178|      0|        break;
  179|      0|      case MCSymbolRefExpr::VK_TLSGD:
  ------------------
  |  Branch (179:7): [True: 0, False: 13.0k]
  ------------------
  180|      0|        Type = ELF::R_ARM_TLS_GD32;
  181|      0|        break;
  182|      0|      case MCSymbolRefExpr::VK_TPOFF:
  ------------------
  |  Branch (182:7): [True: 0, False: 13.0k]
  ------------------
  183|      0|        Type = ELF::R_ARM_TLS_LE32;
  184|      0|        break;
  185|      0|      case MCSymbolRefExpr::VK_GOTTPOFF:
  ------------------
  |  Branch (185:7): [True: 0, False: 13.0k]
  ------------------
  186|      0|        Type = ELF::R_ARM_TLS_IE32;
  187|      0|        break;
  188|  13.0k|      case MCSymbolRefExpr::VK_None:
  ------------------
  |  Branch (188:7): [True: 13.0k, False: 0]
  ------------------
  189|  13.0k|        Type = ELF::R_ARM_ABS32;
  190|  13.0k|        break;
  191|      0|      case MCSymbolRefExpr::VK_GOTOFF:
  ------------------
  |  Branch (191:7): [True: 0, False: 13.0k]
  ------------------
  192|      0|        Type = ELF::R_ARM_GOTOFF32;
  193|      0|        break;
  194|      0|      case MCSymbolRefExpr::VK_ARM_GOT_PREL:
  ------------------
  |  Branch (194:7): [True: 0, False: 13.0k]
  ------------------
  195|      0|        Type = ELF::R_ARM_GOT_PREL;
  196|      0|        break;
  197|      0|      case MCSymbolRefExpr::VK_ARM_TARGET1:
  ------------------
  |  Branch (197:7): [True: 0, False: 13.0k]
  ------------------
  198|      0|        Type = ELF::R_ARM_TARGET1;
  199|      0|        break;
  200|      0|      case MCSymbolRefExpr::VK_ARM_TARGET2:
  ------------------
  |  Branch (200:7): [True: 0, False: 13.0k]
  ------------------
  201|      0|        Type = ELF::R_ARM_TARGET2;
  202|      0|        break;
  203|      0|      case MCSymbolRefExpr::VK_ARM_PREL31:
  ------------------
  |  Branch (203:7): [True: 0, False: 13.0k]
  ------------------
  204|      0|        Type = ELF::R_ARM_PREL31;
  205|      0|        break;
  206|      0|      case MCSymbolRefExpr::VK_ARM_SBREL:
  ------------------
  |  Branch (206:7): [True: 0, False: 13.0k]
  ------------------
  207|      0|        Type = ELF::R_ARM_SBREL32;
  208|      0|        break;
  209|      0|      case MCSymbolRefExpr::VK_ARM_TLSLDO:
  ------------------
  |  Branch (209:7): [True: 0, False: 13.0k]
  ------------------
  210|      0|        Type = ELF::R_ARM_TLS_LDO32;
  211|      0|        break;
  212|      0|      case MCSymbolRefExpr::VK_ARM_TLSCALL:
  ------------------
  |  Branch (212:7): [True: 0, False: 13.0k]
  ------------------
  213|      0|        Type = ELF::R_ARM_TLS_CALL;
  214|      0|        break;
  215|      0|      case MCSymbolRefExpr::VK_ARM_TLSDESC:
  ------------------
  |  Branch (215:7): [True: 0, False: 13.0k]
  ------------------
  216|      0|        Type = ELF::R_ARM_TLS_GOTDESC;
  217|      0|        break;
  218|      0|      case MCSymbolRefExpr::VK_ARM_TLSDESCSEQ:
  ------------------
  |  Branch (218:7): [True: 0, False: 13.0k]
  ------------------
  219|      0|        Type = ELF::R_ARM_TLS_DESCSEQ;
  220|      0|        break;
  221|  13.0k|      }
  222|  13.0k|      break;
  223|  13.0k|    case ARM::fixup_arm_ldst_pcrel_12:
  ------------------
  |  Branch (223:5): [True: 0, False: 13.2k]
  ------------------
  224|      0|    case ARM::fixup_arm_pcrel_10:
  ------------------
  |  Branch (224:5): [True: 0, False: 13.2k]
  ------------------
  225|      0|    case ARM::fixup_arm_adr_pcrel_12:
  ------------------
  |  Branch (225:5): [True: 0, False: 13.2k]
  ------------------
  226|      0|    case ARM::fixup_arm_thumb_bl:
  ------------------
  |  Branch (226:5): [True: 0, False: 13.2k]
  ------------------
  227|      0|    case ARM::fixup_arm_thumb_cb:
  ------------------
  |  Branch (227:5): [True: 0, False: 13.2k]
  ------------------
  228|      0|    case ARM::fixup_arm_thumb_cp:
  ------------------
  |  Branch (228:5): [True: 0, False: 13.2k]
  ------------------
  229|      0|    case ARM::fixup_arm_thumb_br:
  ------------------
  |  Branch (229:5): [True: 0, False: 13.2k]
  ------------------
  230|      0|      llvm_unreachable("Unimplemented");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  231|      0|    case ARM::fixup_arm_condbranch:
  ------------------
  |  Branch (231:5): [True: 0, False: 13.2k]
  ------------------
  232|      0|    case ARM::fixup_arm_uncondbranch:
  ------------------
  |  Branch (232:5): [True: 0, False: 13.2k]
  ------------------
  233|      0|      Type = ELF::R_ARM_JUMP24;
  234|      0|      break;
  235|      0|    case ARM::fixup_arm_movt_hi16:
  ------------------
  |  Branch (235:5): [True: 0, False: 13.2k]
  ------------------
  236|      0|      Type = ELF::R_ARM_MOVT_ABS;
  237|      0|      break;
  238|      0|    case ARM::fixup_arm_movw_lo16:
  ------------------
  |  Branch (238:5): [True: 0, False: 13.2k]
  ------------------
  239|      0|      Type = ELF::R_ARM_MOVW_ABS_NC;
  240|      0|      break;
  241|      0|    case ARM::fixup_t2_movt_hi16:
  ------------------
  |  Branch (241:5): [True: 0, False: 13.2k]
  ------------------
  242|      0|      Type = ELF::R_ARM_THM_MOVT_ABS;
  243|      0|      break;
  244|      0|    case ARM::fixup_t2_movw_lo16:
  ------------------
  |  Branch (244:5): [True: 0, False: 13.2k]
  ------------------
  245|      0|      Type = ELF::R_ARM_THM_MOVW_ABS_NC;
  246|      0|      break;
  247|  13.2k|    }
  248|  13.2k|  }
  249|       |
  250|  14.5k|  return Type;
  251|  14.5k|}
ARMELFObjectWriter.cpp:_ZNK12_GLOBAL__N_118ARMELFObjectWriter23needsRelocateWithSymbolERKN7llvm_ks8MCSymbolEj:
   52|  13.3k|                                                 unsigned Type) const {
   53|       |  // FIXME: This is extremely conservative. This really needs to use a
   54|       |  // whitelist with a clear explanation for why each realocation needs to
   55|       |  // point to the symbol, not to the section.
   56|  13.3k|  switch (Type) {
   57|    285|  default:
  ------------------
  |  Branch (57:3): [True: 285, False: 13.0k]
  ------------------
   58|    285|    return true;
   59|       |
   60|      0|  case ELF::R_ARM_PREL31:
  ------------------
  |  Branch (60:3): [True: 0, False: 13.3k]
  ------------------
   61|  13.0k|  case ELF::R_ARM_ABS32:
  ------------------
  |  Branch (61:3): [True: 13.0k, False: 285]
  ------------------
   62|  13.0k|    return false;
   63|  13.3k|  }
   64|  13.3k|}

_ZN7llvm_ks15ARMELFMCAsmInfoC2ERKNS_6TripleE:
   40|  20.9k|ARMELFMCAsmInfo::ARMELFMCAsmInfo(const Triple &TheTriple) {
   41|  20.9k|  if ((TheTriple.getArch() == Triple::armeb) ||
  ------------------
  |  Branch (41:7): [True: 0, False: 20.9k]
  ------------------
   42|  20.9k|      (TheTriple.getArch() == Triple::thumbeb))
  ------------------
  |  Branch (42:7): [True: 0, False: 20.9k]
  ------------------
   43|      0|    IsLittleEndian = false;
   44|       |
   45|       |  // ".comm align is in bytes but .align is pow-2."
   46|  20.9k|  AlignmentIsInBytes = false;
   47|       |
   48|  20.9k|  Data64bitsDirective = nullptr;
   49|  20.9k|  CommentString = "@";
   50|  20.9k|  Code16Directive = ".code\t16";
   51|  20.9k|  Code32Directive = ".code\t32";
   52|       |
   53|  20.9k|  SupportsDebugInformation = true;
   54|       |
   55|       |  // Exceptions handling
   56|  20.9k|  switch (TheTriple.getOS()) {
   57|      0|  case Triple::Bitrig:
  ------------------
  |  Branch (57:3): [True: 0, False: 20.9k]
  ------------------
   58|      0|  case Triple::NetBSD:
  ------------------
  |  Branch (58:3): [True: 0, False: 20.9k]
  ------------------
   59|      0|    ExceptionsType = ExceptionHandling::DwarfCFI;
   60|      0|    break;
   61|  20.9k|  default:
  ------------------
  |  Branch (61:3): [True: 20.9k, False: 0]
  ------------------
   62|  20.9k|    ExceptionsType = ExceptionHandling::ARM;
   63|  20.9k|    break;
   64|  20.9k|  }
   65|       |
   66|       |  // foo(plt) instead of foo@plt
   67|  20.9k|  UseParensForSymbolVariant = true;
   68|       |
   69|  20.9k|  UseIntegratedAssembler = true;
   70|  20.9k|}

_ZN7llvm_ks24createARMLEMCCodeEmitterERKNS_11MCInstrInfoERKNS_14MCRegisterInfoERNS_9MCContextE:
  444|  20.9k|                                              MCContext &Ctx) {
  445|  20.9k|  return new ARMMCCodeEmitter(MCII, Ctx, true);
  446|  20.9k|}
ARMMCCodeEmitter.cpp:_ZN12_GLOBAL__N_116ARMMCCodeEmitterC2ERKN7llvm_ks11MCInstrInfoERNS1_9MCContextEb:
   48|  20.9k|    : MCII(mcii), CTX(ctx), IsLittleEndian(IsLittle) {
   49|  20.9k|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17encodeInstructionERN7llvm_ks6MCInstERNS1_11raw_ostreamERNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoERj:
 1675|  29.4k|{
 1676|  29.4k|  KsError = 0;
 1677|  29.4k|  setError(0);
 1678|       |  // Pseudo instructions don't get encoded.
 1679|  29.4k|  const MCInstrDesc &Desc = MCII.get(MI.getOpcode());
 1680|  29.4k|  uint64_t TSFlags = Desc.TSFlags;
 1681|  29.4k|  if ((TSFlags & ARMII::FormMask) == ARMII::Pseudo)
  ------------------
  |  Branch (1681:7): [True: 0, False: 29.4k]
  ------------------
 1682|      0|    return;
 1683|       |
 1684|  29.4k|  int Size;
 1685|  29.4k|  if (Desc.getSize() == 2 || Desc.getSize() == 4)
  ------------------
  |  Branch (1685:7): [True: 4.36k, False: 25.1k]
  |  Branch (1685:30): [True: 25.1k, False: 0]
  ------------------
 1686|  29.4k|    Size = Desc.getSize();
 1687|      0|  else
 1688|      0|    llvm_unreachable("Unexpected instruction size!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 1689|       |
 1690|  29.4k|  uint32_t Binary = getBinaryCodeForInstr(MI, Fixups, STI);
 1691|  29.4k|  if (getError()) {
  ------------------
  |  Branch (1691:7): [True: 15, False: 29.4k]
  ------------------
 1692|     15|      KsError = ErrorCode;
 1693|     15|      return;
 1694|     15|  }
 1695|       |  // Thumb 32-bit wide instructions need to emit the high order halfword
 1696|       |  // first.
 1697|  29.4k|  if (isThumb(STI) && Size == 4) {
  ------------------
  |  Branch (1697:7): [True: 10.2k, False: 19.1k]
  |  Branch (1697:23): [True: 5.92k, False: 4.36k]
  ------------------
 1698|  5.92k|    EmitConstant(Binary >> 16, 2, OS);
 1699|  5.92k|    EmitConstant(Binary & 0xffff, 2, OS);
 1700|  5.92k|  } else
 1701|  23.5k|    EmitConstant(Binary, Size, OS);
 1702|       |
 1703|       |  // update Inst.Address for Keystone
 1704|  29.4k|  MI.setAddress(MI.getAddress() + Size);
 1705|  29.4k|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter8setErrorEj:
   53|  29.5k|  void setError(unsigned int E) const { ErrorCode = E; }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17getMachineOpValueERKN7llvm_ks6MCInstERKNS1_9MCOperandERNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  531|  48.9k|                  const MCSubtargetInfo &STI) const {
  532|  48.9k|  if (MO.isReg()) {
  ------------------
  |  Branch (532:7): [True: 26.2k, False: 22.6k]
  ------------------
  533|  26.2k|    unsigned Reg = MO.getReg();
  534|  26.2k|    unsigned RegNo = CTX.getRegisterInfo()->getEncodingValue(Reg);
  535|       |
  536|       |    // Q registers are encoded as 2x their register number.
  537|  26.2k|    switch (Reg) {
  538|  25.8k|    default:
  ------------------
  |  Branch (538:5): [True: 25.8k, False: 362]
  ------------------
  539|  25.8k|      return RegNo;
  540|    206|    case ARM::Q0:  case ARM::Q1:  case ARM::Q2:  case ARM::Q3:
  ------------------
  |  Branch (540:5): [True: 9, False: 26.2k]
  |  Branch (540:20): [True: 139, False: 26.0k]
  |  Branch (540:35): [True: 46, False: 26.1k]
  |  Branch (540:50): [True: 12, False: 26.2k]
  ------------------
  541|    244|    case ARM::Q4:  case ARM::Q5:  case ARM::Q6:  case ARM::Q7:
  ------------------
  |  Branch (541:5): [True: 11, False: 26.2k]
  |  Branch (541:20): [True: 2, False: 26.2k]
  |  Branch (541:35): [True: 13, False: 26.2k]
  |  Branch (541:50): [True: 12, False: 26.2k]
  ------------------
  542|    296|    case ARM::Q8:  case ARM::Q9:  case ARM::Q10: case ARM::Q11:
  ------------------
  |  Branch (542:5): [True: 9, False: 26.2k]
  |  Branch (542:20): [True: 4, False: 26.2k]
  |  Branch (542:35): [True: 15, False: 26.2k]
  |  Branch (542:50): [True: 24, False: 26.2k]
  ------------------
  543|    362|    case ARM::Q12: case ARM::Q13: case ARM::Q14: case ARM::Q15:
  ------------------
  |  Branch (543:5): [True: 22, False: 26.2k]
  |  Branch (543:20): [True: 37, False: 26.1k]
  |  Branch (543:35): [True: 2, False: 26.2k]
  |  Branch (543:50): [True: 5, False: 26.2k]
  ------------------
  544|    362|      return 2 * RegNo;
  545|  26.2k|    }
  546|  26.2k|  } else if (MO.isImm()) {
  ------------------
  |  Branch (546:14): [True: 22.6k, False: 15]
  ------------------
  547|  22.6k|    return static_cast<unsigned>(MO.getImm());
  548|  22.6k|  } else if (MO.isFPImm()) {
  ------------------
  |  Branch (548:14): [True: 0, False: 15]
  ------------------
  549|      0|    return static_cast<unsigned>(APFloat(MO.getFPImm())
  550|      0|                     .bitcastToAPInt().getHiBits(32).getLimitedValue());
  551|      0|  }
  552|       |
  553|       |  //llvm_unreachable("Unable to encode MCOperand!");
  554|     15|  setError(KS_ERR_ASM_INVALIDOPERAND);
  555|     15|  return 0;
  556|  48.9k|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter30getBitfieldInvertedMaskOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1513|      3|                               const MCSubtargetInfo &STI) const {
 1514|       |  // 10 bits. lower 5 bits are are the lsb of the mask, high five bits are the
 1515|       |  // msb of the mask.
 1516|      3|  const MCOperand &MO = MI.getOperand(Op);
 1517|      3|  uint32_t v = ~MO.getImm();
 1518|      3|  uint32_t lsb = countTrailingZeros(v);
 1519|      3|  uint32_t msb = (32 - countLeadingZeros (v)) - 1;
 1520|      3|  assert (v != 0 && lsb < 32 && msb < 32 && "Illegal bitfield mask!");
  ------------------
  |  Branch (1520:3): [True: 3, False: 0]
  |  Branch (1520:3): [True: 3, False: 0]
  |  Branch (1520:3): [True: 3, False: 0]
  |  Branch (1520:3): [True: 3, Folded]
  |  Branch (1520:3): [True: 3, False: 0]
  ------------------
 1521|      3|  return lsb | (msb << 5);
 1522|      3|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter20getT2AdrLabelOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  837|     68|                   const MCSubtargetInfo &STI) const {
  838|     68|  const MCOperand MO = MI.getOperand(OpIdx);
  839|     68|  if (MO.isExpr())
  ------------------
  |  Branch (839:7): [True: 56, False: 12]
  ------------------
  840|     56|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_t2_adr_pcrel_12,
  841|     56|                                    Fixups, STI);
  842|     12|  int32_t Val = (MO.getImm() - ((MI.getAddress() + 4) & -4));
  843|     12|  if (Val == INT32_MIN)
  ------------------
  |  Branch (843:7): [True: 0, False: 12]
  ------------------
  844|      0|    Val = 0x1000;
  845|     12|  else if (Val < 0) {
  ------------------
  |  Branch (845:12): [True: 8, False: 4]
  ------------------
  846|      8|    Val *= -1;
  847|      8|    Val |= 0x1000;
  848|      8|  }
  849|     12|  return Val;
  850|     68|}
ARMMCCodeEmitter.cpp:_ZL22getBranchTargetOpValueRKN7llvm_ks6MCInstEjjRNS_15SmallVectorImplINS_7MCFixupEEERKNS_15MCSubtargetInfoE:
  592|  10.1k|                                       const MCSubtargetInfo &STI) {
  593|  10.1k|  const MCOperand &MO = MI.getOperand(OpIdx);
  594|       |
  595|       |  // If the destination is an immediate, we have nothing to do.
  596|  10.1k|  if (MO.isImm()) return MO.getImm();
  ------------------
  |  Branch (596:7): [True: 87, False: 10.0k]
  ------------------
  597|  10.1k|  assert(MO.isExpr() && "Unexpected branch target type!");
  ------------------
  |  Branch (597:3): [True: 10.0k, False: 0]
  |  Branch (597:3): [True: 10.0k, Folded]
  |  Branch (597:3): [True: 10.0k, False: 0]
  ------------------
  598|  10.0k|  const MCExpr *Expr = MO.getExpr();
  599|  10.0k|  MCFixupKind Kind = MCFixupKind(FixupKind);
  600|  10.0k|  Fixups.push_back(MCFixup::create(0, Expr, Kind, MI.getLoc()));
  601|       |
  602|       |  // All of the information is in the fixup.
  603|  10.0k|  return 0;
  604|  10.0k|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getHiLo16ImmOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1019|     63|                                      const MCSubtargetInfo &STI) const {
 1020|       |  // {20-16} = imm{15-12}
 1021|       |  // {11-0}  = imm{11-0}
 1022|     63|  const MCOperand &MO = MI.getOperand(OpIdx);
 1023|     63|  if (MO.isImm())
  ------------------
  |  Branch (1023:7): [True: 63, False: 0]
  ------------------
 1024|       |    // Hi / lo 16 bits already extracted during earlier passes.
 1025|     63|    return static_cast<unsigned>(MO.getImm());
 1026|       |
 1027|       |  // Handle :upper16: and :lower16: assembly prefixes.
 1028|      0|  const MCExpr *E = MO.getExpr();
 1029|      0|  MCFixupKind Kind;
 1030|      0|  if (E->getKind() == MCExpr::Target) {
  ------------------
  |  Branch (1030:7): [True: 0, False: 0]
  ------------------
 1031|      0|    const ARMMCExpr *ARM16Expr = cast<ARMMCExpr>(E);
 1032|      0|    E = ARM16Expr->getSubExpr();
 1033|       |
 1034|      0|    if (const MCConstantExpr *MCE = dyn_cast<MCConstantExpr>(E)) {
  ------------------
  |  Branch (1034:31): [True: 0, False: 0]
  ------------------
 1035|      0|      const int64_t Value = MCE->getValue();
 1036|      0|      if (Value > UINT32_MAX)
  ------------------
  |  Branch (1036:11): [True: 0, False: 0]
  ------------------
 1037|      0|        report_fatal_error("constant value truncated (limited to 32-bit)");
 1038|       |
 1039|      0|      switch (ARM16Expr->getKind()) {
 1040|      0|      case ARMMCExpr::VK_ARM_HI16:
  ------------------
  |  Branch (1040:7): [True: 0, False: 0]
  ------------------
 1041|      0|        return (int32_t(Value) & 0xffff0000) >> 16;
 1042|      0|      case ARMMCExpr::VK_ARM_LO16:
  ------------------
  |  Branch (1042:7): [True: 0, False: 0]
  ------------------
 1043|      0|        return (int32_t(Value) & 0x0000ffff);
 1044|      0|      default: llvm_unreachable("Unsupported ARMFixup");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (1044:7): [True: 0, False: 0]
  ------------------
 1045|      0|      }
 1046|      0|    }
 1047|       |
 1048|      0|    switch (ARM16Expr->getKind()) {
 1049|      0|    default: llvm_unreachable("Unsupported ARMFixup");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (1049:5): [True: 0, False: 0]
  ------------------
 1050|      0|    case ARMMCExpr::VK_ARM_HI16:
  ------------------
  |  Branch (1050:5): [True: 0, False: 0]
  ------------------
 1051|      0|      Kind = MCFixupKind(isThumb(STI) ? ARM::fixup_t2_movt_hi16
  ------------------
  |  Branch (1051:26): [True: 0, False: 0]
  ------------------
 1052|      0|                                      : ARM::fixup_arm_movt_hi16);
 1053|      0|      break;
 1054|      0|    case ARMMCExpr::VK_ARM_LO16:
  ------------------
  |  Branch (1054:5): [True: 0, False: 0]
  ------------------
 1055|      0|      Kind = MCFixupKind(isThumb(STI) ? ARM::fixup_t2_movw_lo16
  ------------------
  |  Branch (1055:26): [True: 0, False: 0]
  ------------------
 1056|      0|                                      : ARM::fixup_arm_movw_lo16);
 1057|      0|      break;
 1058|      0|    }
 1059|       |
 1060|      0|    Fixups.push_back(MCFixup::create(0, E, Kind, MI.getLoc()));
 1061|      0|    return 0;
 1062|      0|  }
 1063|       |  // If the expression doesn't have :upper16: or :lower16: on it,
 1064|       |  // it's just a plain immediate expression, previously those evaluated to
 1065|       |  // the lower 16 bits of the expression regardless of whether
 1066|       |  // we have a movt or a movw, but that led to misleadingly results.
 1067|       |  // This is disallowed in the AsmParser in validateInstruction()
 1068|       |  // so this should never happen.
 1069|      0|  llvm_unreachable("expression without :upper16: or :lower16:");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
 1070|      0|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter23getThumbAdrLabelOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  857|     65|                   const MCSubtargetInfo &STI) const {
  858|     65|  const MCOperand MO = MI.getOperand(OpIdx);
  859|     65|  if (MO.isExpr())
  ------------------
  |  Branch (859:7): [True: 62, False: 3]
  ------------------
  860|     62|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_thumb_adr_pcrel_10,
  861|     62|                                    Fixups, STI);
  862|      3|  return MO.getImm();
  863|     65|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17getT2SORegOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1470|     64|                const MCSubtargetInfo &STI) const {
 1471|       |  // Sub-operands are [reg, imm]. The first register is Rm, the reg to be
 1472|       |  // shifted. The second is the amount to shift by.
 1473|       |  //
 1474|       |  // {3-0} = Rm.
 1475|       |  // {4}   = 0
 1476|       |  // {6-5} = type
 1477|       |  // {11-7} = imm
 1478|       |
 1479|     64|  const MCOperand &MO  = MI.getOperand(OpIdx);
 1480|     64|  const MCOperand &MO1 = MI.getOperand(OpIdx + 1);
 1481|     64|  ARM_AM::ShiftOpc SOpc = ARM_AM::getSORegShOp(MO1.getImm());
 1482|       |
 1483|       |  // Encode Rm.
 1484|     64|  unsigned Binary = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
 1485|       |
 1486|       |  // Encode the shift opcode.
 1487|     64|  unsigned SBits = 0;
 1488|       |  // Set shift operand (bit[6:4]).
 1489|       |  // LSL - 000
 1490|       |  // LSR - 010
 1491|       |  // ASR - 100
 1492|       |  // ROR - 110
 1493|     64|  switch (SOpc) {
 1494|      0|  default: llvm_unreachable("Unknown shift opc!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (1494:3): [True: 0, False: 64]
  ------------------
 1495|     25|  case ARM_AM::lsl: SBits = 0x0; break;
  ------------------
  |  Branch (1495:3): [True: 25, False: 39]
  ------------------
 1496|     20|  case ARM_AM::lsr: SBits = 0x2; break;
  ------------------
  |  Branch (1496:3): [True: 20, False: 44]
  ------------------
 1497|      0|  case ARM_AM::asr: SBits = 0x4; break;
  ------------------
  |  Branch (1497:3): [True: 0, False: 64]
  ------------------
 1498|     19|  case ARM_AM::rrx: // FALLTHROUGH
  ------------------
  |  Branch (1498:3): [True: 19, False: 45]
  ------------------
 1499|     19|  case ARM_AM::ror: SBits = 0x6; break;
  ------------------
  |  Branch (1499:3): [True: 0, False: 64]
  ------------------
 1500|     64|  }
 1501|       |
 1502|     64|  Binary |= SBits << 4;
 1503|     64|  if (SOpc == ARM_AM::rrx)
  ------------------
  |  Branch (1503:7): [True: 19, False: 45]
  ------------------
 1504|     19|    return Binary;
 1505|       |
 1506|       |  // Encode shift_imm bit[11:7].
 1507|     45|  return Binary | ARM_AM::getSORegOffset(MO1.getImm()) << 7;
 1508|     64|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17getT2SOImmOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  335|    631|                           const MCSubtargetInfo &STI) const {
  336|    631|    unsigned SoImm = MI.getOperand(Op).getImm();
  337|    631|    unsigned Encoded =  ARM_AM::getT2SOImmVal(SoImm);
  338|    631|    assert(Encoded != ~0U && "Not a Thumb2 so_imm value?");
  ------------------
  |  Branch (338:5): [True: 631, False: 0]
  |  Branch (338:5): [True: 631, Folded]
  |  Branch (338:5): [True: 631, False: 0]
  ------------------
  339|    631|    return Encoded;
  340|    631|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter30getT2AddrModeImm8OffsetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1453|     33|                         const MCSubtargetInfo &STI) const {
 1454|     33|  const MCOperand &MO1 = MI.getOperand(OpNum);
 1455|       |
 1456|       |  // FIXME: Needs fixup support.
 1457|     33|  unsigned Value = 0;
 1458|     33|  int32_t tmp = (int32_t)MO1.getImm();
 1459|     33|  if (tmp < 0)
  ------------------
  |  Branch (1459:7): [True: 0, False: 33]
  ------------------
 1460|      0|    tmp = abs(tmp);
 1461|     33|  else
 1462|     33|    Value |= 256; // Set the ADD bit
 1463|     33|  Value |= tmp & 255;
 1464|     33|  return Value;
 1465|     33|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter18getT2Imm8s4OpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  935|      3|                   const MCSubtargetInfo &STI) const {
  936|       |  // FIXME: The immediate operand should have already been encoded like this
  937|       |  // before ever getting here. The encoder method should just need to combine
  938|       |  // the MI operands for the register and the offset into a single
  939|       |  // representation for the complex operand in the .td file. This isn't just
  940|       |  // style, unfortunately. As-is, we can't represent the distinct encoding
  941|       |  // for #-0.
  942|       |
  943|       |  // {8}    = (U)nsigned (add == '1', sub == '0')
  944|       |  // {7-0}  = imm8
  945|      3|  int32_t Imm8 = MI.getOperand(OpIdx).getImm();
  946|      3|  bool isAdd = Imm8 >= 0;
  947|       |
  948|       |  // Immediate is always encoded as positive. The 'U' bit controls add vs sub.
  949|      3|  if (Imm8 < 0)
  ------------------
  |  Branch (949:7): [True: 0, False: 3]
  ------------------
  950|      0|    Imm8 = -(uint32_t)Imm8;
  951|       |
  952|       |  // Scaled by 4.
  953|      3|  Imm8 /= 4;
  954|       |
  955|      3|  uint32_t Binary = Imm8 & 0xff;
  956|       |  // Immediate is always encoded as positive. The 'U' bit controls add vs sub.
  957|      3|  if (isAdd)
  ------------------
  |  Branch (957:7): [True: 3, False: 0]
  ------------------
  958|      3|    Binary |= (1 << 8);
  959|      3|  return Binary;
  960|      3|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter26getT2AddrModeImm8s4OpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  967|     14|                        const MCSubtargetInfo &STI) const {
  968|       |  // {12-9} = reg
  969|       |  // {8}    = (U)nsigned (add == '1', sub == '0')
  970|       |  // {7-0}  = imm8
  971|     14|  unsigned Reg, Imm8;
  972|     14|  bool isAdd = true;
  973|       |  // If The first operand isn't a register, we have a label reference.
  974|     14|  const MCOperand &MO = MI.getOperand(OpIdx);
  975|     14|  if (!MO.isReg()) {
  ------------------
  |  Branch (975:7): [True: 10, False: 4]
  ------------------
  976|     10|    Reg = CTX.getRegisterInfo()->getEncodingValue(ARM::PC);   // Rn is PC.
  977|     10|    Imm8 = 0;
  978|     10|    isAdd = false ; // 'U' bit is set as part of the fixup.
  979|       |
  980|     10|    assert(MO.isExpr() && "Unexpected machine operand type!");
  ------------------
  |  Branch (980:5): [True: 10, False: 0]
  |  Branch (980:5): [True: 10, Folded]
  |  Branch (980:5): [True: 10, False: 0]
  ------------------
  981|     10|    const MCExpr *Expr = MO.getExpr();
  982|     10|    MCFixupKind Kind = MCFixupKind(ARM::fixup_t2_pcrel_10);
  983|     10|    Fixups.push_back(MCFixup::create(0, Expr, Kind, MI.getLoc()));
  984|     10|  } else
  985|      4|    isAdd = EncodeAddrModeOpValues(MI, OpIdx, Reg, Imm8, Fixups, STI);
  986|       |
  987|       |  // FIXME: The immediate operand should have already been encoded like this
  988|       |  // before ever getting here. The encoder method should just need to combine
  989|       |  // the MI operands for the register and the offset into a single
  990|       |  // representation for the complex operand in the .td file. This isn't just
  991|       |  // style, unfortunately. As-is, we can't represent the distinct encoding
  992|       |  // for #-0.
  993|     14|  uint32_t Binary = (Imm8 >> 2) & 0xff;
  994|       |  // Immediate is always encoded as positive. The 'U' bit controls add vs sub.
  995|     14|  if (isAdd)
  ------------------
  |  Branch (995:7): [True: 4, False: 10]
  ------------------
  996|      4|    Binary |= (1 << 8);
  997|     14|  Binary |= (Reg << 9);
  998|     14|  return Binary;
  999|     14|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter22EncodeAddrModeOpValuesERKN7llvm_ks6MCInstEjRjS5_RNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  562|    107| const MCSubtargetInfo &STI) const {
  563|    107|  const MCOperand &MO  = MI.getOperand(OpIdx);
  564|    107|  const MCOperand &MO1 = MI.getOperand(OpIdx + 1);
  565|       |
  566|    107|  Reg = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
  567|       |
  568|    107|  int32_t SImm = MO1.getImm();
  569|    107|  bool isAdd = true;
  570|       |
  571|       |  // Special value for #-0
  572|    107|  if (SImm == INT32_MIN) {
  ------------------
  |  Branch (572:7): [True: 0, False: 107]
  ------------------
  573|      0|    SImm = 0;
  574|      0|    isAdd = false;
  575|      0|  }
  576|       |
  577|       |  // Immediate is always encoded as positive. The 'U' bit controls add vs sub.
  578|    107|  if (SImm < 0) {
  ------------------
  |  Branch (578:7): [True: 0, False: 107]
  ------------------
  579|      0|    SImm = -SImm;
  580|      0|    isAdd = false;
  581|      0|  }
  582|       |
  583|    107|  Imm = SImm;
  584|    107|  return isAdd;
  585|    107|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter23getAddrModeImm12OpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  885|  1.13k|                        const MCSubtargetInfo &STI) const {
  886|       |  // {17-13} = reg
  887|       |  // {12}    = (U)nsigned (add == '1', sub == '0')
  888|       |  // {11-0}  = imm12
  889|  1.13k|  unsigned Reg, Imm12;
  890|  1.13k|  bool isAdd = true;
  891|       |  // If The first operand isn't a register, we have a label reference.
  892|  1.13k|  const MCOperand &MO = MI.getOperand(OpIdx);
  893|  1.13k|  if (!MO.isReg()) {
  ------------------
  |  Branch (893:7): [True: 1.03k, False: 101]
  ------------------
  894|  1.03k|    Reg = CTX.getRegisterInfo()->getEncodingValue(ARM::PC);   // Rn is PC.
  895|  1.03k|    Imm12 = 0;
  896|       |
  897|  1.03k|    if (MO.isExpr()) {
  ------------------
  |  Branch (897:9): [True: 929, False: 106]
  ------------------
  898|    929|      const MCExpr *Expr = MO.getExpr();
  899|    929|      isAdd = false ; // 'U' bit is set as part of the fixup.
  900|       |
  901|    929|      MCFixupKind Kind;
  902|    929|      if (isThumb2(STI))
  ------------------
  |  Branch (902:11): [True: 136, False: 793]
  ------------------
  903|    136|        Kind = MCFixupKind(ARM::fixup_t2_ldst_pcrel_12);
  904|    793|      else
  905|    793|        Kind = MCFixupKind(ARM::fixup_arm_ldst_pcrel_12);
  906|    929|      Fixups.push_back(MCFixup::create(0, Expr, Kind, MI.getLoc()));
  907|    929|    } else {
  908|    106|      Reg = ARM::PC;
  909|    106|      int32_t Offset = MO.getImm();
  910|    106|      if (Offset == INT32_MIN) {
  ------------------
  |  Branch (910:11): [True: 4, False: 102]
  ------------------
  911|      4|        Offset = 0;
  912|      4|        isAdd = false;
  913|    102|      } else if (Offset < 0) {
  ------------------
  |  Branch (913:18): [True: 74, False: 28]
  ------------------
  914|     74|        Offset *= -1;
  915|     74|        isAdd = false;
  916|     74|      }
  917|    106|      Imm12 = Offset;
  918|    106|    }
  919|  1.03k|  } else
  920|    101|    isAdd = EncodeAddrModeOpValues(MI, OpIdx, Reg, Imm12, Fixups, STI);
  921|       |
  922|  1.13k|  uint32_t Binary = Imm12 & 0xfff;
  923|       |  // Immediate is always encoded as positive. The 'U' bit controls add vs sub.
  924|  1.13k|  if (isAdd)
  ------------------
  |  Branch (924:7): [True: 129, False: 1.00k]
  ------------------
  925|    129|    Binary |= (1 << 12);
  926|  1.13k|  Binary |= (Reg << 13);
  927|  1.13k|  return Binary;
  928|  1.13k|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter8isThumb2ERKN7llvm_ks15MCSubtargetInfoE:
   59|  2.72k|  bool isThumb2(const MCSubtargetInfo &STI) const {
   60|  2.72k|    return isThumb(STI) && STI.getFeatureBits()[ARM::FeatureThumb2];
  ------------------
  |  Branch (60:12): [True: 747, False: 1.97k]
  |  Branch (60:28): [True: 627, False: 120]
  ------------------
   61|  2.72k|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter24getT2AddrModeImm8OpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1431|     21|                         const MCSubtargetInfo &STI) const {
 1432|     21|  const MCOperand &MO1 = MI.getOperand(OpNum);
 1433|     21|  const MCOperand &MO2 = MI.getOperand(OpNum+1);
 1434|       |
 1435|       |  // FIXME: Needs fixup support.
 1436|     21|  unsigned Value = CTX.getRegisterInfo()->getEncodingValue(MO1.getReg());
 1437|       |
 1438|       |  // Even though the immediate is 8 bits long, we need 9 bits in order
 1439|       |  // to represent the (inverse of the) sign bit.
 1440|     21|  Value <<= 9;
 1441|     21|  int32_t tmp = (int32_t)MO2.getImm();
 1442|     21|  if (tmp < 0)
  ------------------
  |  Branch (1442:7): [True: 0, False: 21]
  ------------------
 1443|      0|    tmp = abs(tmp);
 1444|     21|  else
 1445|     21|    Value |= 256; // Set the ADD bit
 1446|     21|  Value |= tmp & 255;
 1447|     21|  return Value;
 1448|     21|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getT2AddrModeSORegOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1412|      8|                const MCSubtargetInfo &STI) const {
 1413|      8|  const MCOperand &MO1 = MI.getOperand(OpNum);
 1414|      8|  const MCOperand &MO2 = MI.getOperand(OpNum+1);
 1415|      8|  const MCOperand &MO3 = MI.getOperand(OpNum+2);
 1416|       |
 1417|       |  // Encoded as [Rn, Rm, imm].
 1418|       |  // FIXME: Needs fixup support.
 1419|      8|  unsigned Value = CTX.getRegisterInfo()->getEncodingValue(MO1.getReg());
 1420|      8|  Value <<= 4;
 1421|      8|  Value |= CTX.getRegisterInfo()->getEncodingValue(MO2.getReg());
 1422|      8|  Value <<= 2;
 1423|      8|  Value |= MO3.getImm();
 1424|       |
 1425|      8|  return Value;
 1426|      8|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter20getAddrModePCOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1231|    517|                     const MCSubtargetInfo &STI) const {
 1232|    517|  const MCOperand MO = MI.getOperand(OpIdx);
 1233|    517|  if (MO.isExpr())
  ------------------
  |  Branch (1233:7): [True: 509, False: 8]
  ------------------
 1234|    509|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_thumb_cp, Fixups, STI);
 1235|      8|  return (MO.getImm() >> 2);
 1236|    517|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter20getAddrModeISOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1216|     58|                     const MCSubtargetInfo &STI) const {
 1217|       |  // [Rn, #imm]
 1218|       |  //   {7-3} = imm5
 1219|       |  //   {2-0} = Rn
 1220|     58|  const MCOperand &MO = MI.getOperand(OpIdx);
 1221|     58|  const MCOperand &MO1 = MI.getOperand(OpIdx + 1);
 1222|     58|  unsigned Rn = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
 1223|     58|  unsigned Imm5 = MO1.getImm();
 1224|     58|  return ((Imm5 & 0x1f) << 3) | Rn;
 1225|     58|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter29getThumbAddrModeRegRegOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  870|      7|                              const MCSubtargetInfo &STI) const {
  871|       |  // [Rn, Rm]
  872|       |  //   {5-3} = Rm
  873|       |  //   {2-0} = Rn
  874|      7|  const MCOperand &MO1 = MI.getOperand(OpIdx);
  875|      7|  const MCOperand &MO2 = MI.getOperand(OpIdx + 1);
  876|      7|  unsigned Rn = CTX.getRegisterInfo()->getEncodingValue(MO1.getReg());
  877|      7|  unsigned Rm = CTX.getRegisterInfo()->getEncodingValue(MO2.getReg());
  878|      7|  return (Rm << 3) | Rn;
  879|      7|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter26NEONThumb2DataIPostEncoderERKN7llvm_ks6MCInstEjRKNS1_15MCSubtargetInfoE:
  459|    460|                                                 const MCSubtargetInfo &STI) const {
  460|    460|  if (isThumb2(STI)) {
  ------------------
  |  Branch (460:7): [True: 46, False: 414]
  ------------------
  461|       |    // NEON Thumb2 data-processsing encodings are very simple: bit 24 is moved
  462|       |    // to bit 12 of the high half-word (i.e. bit 28), and bits 27-24 are
  463|       |    // set to 1111.
  464|     46|    unsigned Bit24 = EncodedValue & 0x01000000;
  465|     46|    unsigned Bit28 = Bit24 << 4;
  466|     46|    EncodedValue &= 0xEFFFFFFF;
  467|     46|    EncodedValue |= Bit28;
  468|     46|    EncodedValue |= 0x0F000000;
  469|     46|  }
  470|       |
  471|    460|  return EncodedValue;
  472|    460|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter18getShiftRight16ImmERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1652|      9|                   const MCSubtargetInfo &STI) const {
 1653|      9|  return 16 - MI.getOperand(Op).getImm();
 1654|      9|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter18getShiftRight32ImmERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1659|     11|                   const MCSubtargetInfo &STI) const {
 1660|     11|  return 32 - MI.getOperand(Op).getImm();
 1661|     11|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter18getShiftRight64ImmERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1666|      9|                   const MCSubtargetInfo &STI) const {
 1667|      9|  return 64 - MI.getOperand(Op).getImm();
 1668|      9|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17getShiftRight8ImmERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1645|      8|                  const MCSubtargetInfo &STI) const {
 1646|      8|  return 8 - MI.getOperand(Op).getImm();
 1647|      8|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getAddrMode5OpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1242|    539|                    const MCSubtargetInfo &STI) const {
 1243|       |  // {12-9} = reg
 1244|       |  // {8}    = (U)nsigned (add == '1', sub == '0')
 1245|       |  // {7-0}  = imm8
 1246|    539|  unsigned Reg, Imm8;
 1247|    539|  bool isAdd;
 1248|       |  // If The first operand isn't a register, we have a label reference.
 1249|    539|  const MCOperand &MO = MI.getOperand(OpIdx);
 1250|    539|  if (!MO.isReg()) {
  ------------------
  |  Branch (1250:7): [True: 537, False: 2]
  ------------------
 1251|    537|    Reg = CTX.getRegisterInfo()->getEncodingValue(ARM::PC);   // Rn is PC.
 1252|    537|    Imm8 = 0;
 1253|    537|    isAdd = false; // 'U' bit is handled as part of the fixup.
 1254|       |
 1255|    537|    assert(MO.isExpr() && "Unexpected machine operand type!");
  ------------------
  |  Branch (1255:5): [True: 537, False: 0]
  |  Branch (1255:5): [True: 537, Folded]
  |  Branch (1255:5): [True: 537, False: 0]
  ------------------
 1256|    537|    const MCExpr *Expr = MO.getExpr();
 1257|    537|    MCFixupKind Kind;
 1258|    537|    if (isThumb2(STI))
  ------------------
  |  Branch (1258:9): [True: 108, False: 429]
  ------------------
 1259|    108|      Kind = MCFixupKind(ARM::fixup_t2_pcrel_10);
 1260|    429|    else
 1261|    429|      Kind = MCFixupKind(ARM::fixup_arm_pcrel_10);
 1262|    537|    Fixups.push_back(MCFixup::create(0, Expr, Kind, MI.getLoc()));
 1263|    537|  } else {
 1264|      2|    EncodeAddrModeOpValues(MI, OpIdx, Reg, Imm8, Fixups, STI);
 1265|      2|    isAdd = ARM_AM::getAM5Op(Imm8) == ARM_AM::add;
 1266|      2|  }
 1267|       |
 1268|    539|  uint32_t Binary = ARM_AM::getAM5Offset(Imm8);
 1269|       |  // Immediate is always encoded as positive. The 'U' bit controls add vs sub.
 1270|    539|  if (isAdd)
  ------------------
  |  Branch (1270:7): [True: 1, False: 538]
  ------------------
 1271|      1|    Binary |= (1 << 8);
 1272|    539|  Binary |= (Reg << 9);
 1273|    539|  return Binary;
 1274|    539|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter21getARMBLTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  738|  1.15k|                          const MCSubtargetInfo &STI) const {
  739|  1.15k|  const MCOperand MO = MI.getOperand(OpIdx);
  740|  1.15k|  if (MO.isExpr()) {
  ------------------
  |  Branch (740:7): [True: 1.06k, False: 85]
  ------------------
  741|  1.06k|    if (HasConditionalBranch(MI))
  ------------------
  |  Branch (741:9): [True: 133, False: 933]
  ------------------
  742|    133|      return ::getBranchTargetOpValue(MI, OpIdx, 
  743|    133|                                      ARM::fixup_arm_condbl, Fixups, STI);
  744|    933|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_uncondbl, Fixups, STI);
  745|  1.06k|  }
  746|       |
  747|     85|  return (MO.getImm() - MI.getAddress() - 8) >> 2;
  748|  1.15k|}
ARMMCCodeEmitter.cpp:_ZL20HasConditionalBranchRKN7llvm_ks6MCInstE:
  687|  4.22k|static bool HasConditionalBranch(const MCInst &MI) {
  688|  4.22k|  int NumOp = MI.getNumOperands();
  689|  4.22k|  if (NumOp >= 2) {
  ------------------
  |  Branch (689:7): [True: 4.22k, False: 0]
  ------------------
  690|  11.5k|    for (int i = 0; i < NumOp-1; ++i) {
  ------------------
  |  Branch (690:21): [True: 8.45k, False: 3.07k]
  ------------------
  691|  8.45k|      const MCOperand &MCOp1 = MI.getOperand(i);
  692|  8.45k|      const MCOperand &MCOp2 = MI.getOperand(i + 1);
  693|  8.45k|      if (MCOp1.isImm() && MCOp2.isReg() &&
  ------------------
  |  Branch (693:11): [True: 4.22k, False: 4.22k]
  |  Branch (693:28): [True: 4.22k, False: 0]
  ------------------
  694|  4.22k|          (MCOp2.getReg() == 0 || MCOp2.getReg() == ARM::CPSR)) {
  ------------------
  |  Branch (694:12): [True: 3.07k, False: 1.15k]
  |  Branch (694:35): [True: 1.15k, False: 0]
  ------------------
  695|  4.22k|        if (ARMCC::CondCodes(MCOp1.getImm()) != ARMCC::AL)
  ------------------
  |  Branch (695:13): [True: 1.15k, False: 3.07k]
  ------------------
  696|  1.15k|          return true;
  697|  4.22k|      }
  698|  8.45k|    }
  699|  4.22k|  }
  700|  3.07k|  return false;
  701|  4.22k|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter23getThumbBLTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  629|  1.58k|                        const MCSubtargetInfo &STI) const {
  630|  1.58k|  const MCOperand MO = MI.getOperand(OpIdx);
  631|  1.58k|  if (MO.isExpr())
  ------------------
  |  Branch (631:7): [True: 1.57k, False: 8]
  ------------------
  632|  1.57k|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_thumb_bl,
  633|  1.57k|                                    Fixups, STI);
  634|      8|  return encodeThumbBLOffset(MO.getImm() - MI.getAddress() - 4);
  635|  1.58k|}
ARMMCCodeEmitter.cpp:_ZL19encodeThumbBLOffseti:
  608|     11|static int32_t encodeThumbBLOffset(int32_t offset) {
  609|     11|  offset >>= 1;
  610|     11|  uint32_t S  = (offset & 0x800000) >> 23;
  611|     11|  uint32_t J1 = (offset & 0x400000) >> 22;
  612|     11|  uint32_t J2 = (offset & 0x200000) >> 21;
  613|     11|  J1 = (~J1 & 0x1);
  614|     11|  J2 = (~J2 & 0x1);
  615|     11|  J1 ^= S;
  616|     11|  J2 ^= S;
  617|       |
  618|     11|  offset &= ~0x600000;
  619|     11|  offset |= J1 << 22;
  620|     11|  offset |= J2 << 21;
  621|       |
  622|     11|  return offset;
  623|     11|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter24getThumbBLXTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  642|     60|                         const MCSubtargetInfo &STI) const {
  643|     60|  const MCOperand MO = MI.getOperand(OpIdx);
  644|     60|  if (MO.isExpr())
  ------------------
  |  Branch (644:7): [True: 57, False: 3]
  ------------------
  645|     57|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_thumb_blx,
  646|     57|                                    Fixups, STI);
  647|       |  // target address is rounded down to 4 byte aligned
  648|      3|  return encodeThumbBLOffset(MO.getImm() - ((MI.getAddress() + 4) & -4));
  649|     60|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter20VFPThumb2PostEncoderERKN7llvm_ks6MCInstEjRKNS1_15MCSubtargetInfoE:
  518|    445|                     const MCSubtargetInfo &STI) const {
  519|    445|  if (isThumb2(STI)) {
  ------------------
  |  Branch (519:7): [True: 102, False: 343]
  ------------------
  520|    102|    EncodedValue &= 0x0FFFFFFF;
  521|    102|    EncodedValue |= 0xE0000000;
  522|    102|  }
  523|    445|  return EncodedValue;
  524|    445|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter22getBranchTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  708|    351|                       const MCSubtargetInfo &STI) const {
  709|       |  // FIXME: This really, really shouldn't use TargetMachine. We don't want
  710|       |  // coupling between MC and TM anywhere we can help it.
  711|    351|  if (isThumb2(STI))
  ------------------
  |  Branch (711:7): [True: 235, False: 116]
  ------------------
  712|    235|    return
  713|    235|      ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_t2_condbranch, Fixups, STI);
  714|    116|  return getARMBranchTargetOpValue(MI, OpIdx, Fixups, STI);
  715|    351|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getARMBranchTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  722|  3.50k|                          const MCSubtargetInfo &STI) const {
  723|  3.50k|  const MCOperand MO = MI.getOperand(OpIdx);
  724|  3.50k|  if (MO.isExpr()) {
  ------------------
  |  Branch (724:7): [True: 3.16k, False: 348]
  ------------------
  725|  3.16k|    if (HasConditionalBranch(MI))
  ------------------
  |  Branch (725:9): [True: 1.02k, False: 2.13k]
  ------------------
  726|  1.02k|      return ::getBranchTargetOpValue(MI, OpIdx,
  727|  1.02k|                                      ARM::fixup_arm_condbranch, Fixups, STI);
  728|  2.13k|    return ::getBranchTargetOpValue(MI, OpIdx,
  729|  2.13k|                                    ARM::fixup_arm_uncondbranch, Fixups, STI);
  730|  3.16k|  }
  731|       |
  732|    348|  return (MO.getImm() - MI.getAddress() - 8) >> 2;
  733|  3.50k|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter24getThumbBCCTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  667|    488|                         const MCSubtargetInfo &STI) const {
  668|    488|  const MCOperand MO = MI.getOperand(OpIdx);
  669|    488|  if (MO.isExpr())
  ------------------
  |  Branch (669:7): [True: 362, False: 126]
  ------------------
  670|    362|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_thumb_bcc,
  671|    362|                                    Fixups, STI);
  672|    126|  return ((MO.getImm() - MI.getAddress() - 4) >> 1);
  673|    488|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter18getAdrLabelOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  796|  1.94k|                   const MCSubtargetInfo &STI) const {
  797|  1.94k|  const MCOperand MO = MI.getOperand(OpIdx);
  798|  1.94k|  if (MO.isExpr())
  ------------------
  |  Branch (798:7): [True: 1.73k, False: 210]
  ------------------
  799|  1.73k|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_adr_pcrel_12,
  800|  1.73k|                                    Fixups, STI);
  801|    210|  int64_t offset = MO.getImm();
  802|    210|  uint32_t Val = 0x2000;
  803|       |
  804|    210|  int SoImmVal;
  805|    210|  if (offset == INT32_MIN) {
  ------------------
  |  Branch (805:7): [True: 12, False: 198]
  ------------------
  806|     12|    Val = 0x1000;
  807|     12|    SoImmVal = 0;
  808|    198|  } else if (offset < 0) {
  ------------------
  |  Branch (808:14): [True: 85, False: 113]
  ------------------
  809|     85|    Val = 0x1000;
  810|     85|    offset *= -1;
  811|     85|    SoImmVal = ARM_AM::getSOImmVal(offset);
  812|     85|    if(SoImmVal == -1) {
  ------------------
  |  Branch (812:8): [True: 8, False: 77]
  ------------------
  813|      8|      Val = 0x2000;
  814|      8|      offset *= -1;
  815|      8|      SoImmVal = ARM_AM::getSOImmVal(offset);
  816|      8|    }
  817|    113|  } else {
  818|    113|    SoImmVal = ARM_AM::getSOImmVal(offset);
  819|    113|    if(SoImmVal == -1) {
  ------------------
  |  Branch (819:8): [True: 11, False: 102]
  ------------------
  820|     11|      Val = 0x1000;
  821|     11|      offset *= -1;
  822|     11|      SoImmVal = ARM_AM::getSOImmVal(offset);
  823|     11|    }
  824|    113|  }
  825|       |
  826|    210|  assert(SoImmVal != -1 && "Not a valid so_imm value!");
  ------------------
  |  Branch (826:3): [True: 210, False: 0]
  |  Branch (826:3): [True: 210, Folded]
  |  Branch (826:3): [True: 210, False: 0]
  ------------------
  827|       |
  828|    210|  Val |= SoImmVal;
  829|    210|  return Val;
  830|    210|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter16getModImmOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  312|  3.58k|                            const MCSubtargetInfo &ST) const {
  313|  3.58k|    const MCOperand &MO = MI.getOperand(Op);
  314|       |
  315|       |    // Support for fixups (MCFixup)
  316|  3.58k|    if (MO.isExpr()) {
  ------------------
  |  Branch (316:9): [True: 677, False: 2.91k]
  ------------------
  317|    677|      const MCExpr *Expr = MO.getExpr();
  318|       |      // In instruction code this value always encoded as lowest 12 bits,
  319|       |      // so we don't have to perform any specific adjustments.
  320|       |      // Due to requirements of relocatable records we have to use FK_Data_4.
  321|       |      // See ARMELFObjectWriter::ExplicitRelSym and
  322|       |      //     ARMELFObjectWriter::GetRelocTypeInner for more details.
  323|    677|      MCFixupKind Kind = MCFixupKind(FK_Data_4);
  324|    677|      Fixups.push_back(MCFixup::create(0, Expr, Kind, MI.getLoc()));
  325|    677|      return 0;
  326|    677|    }
  327|       |
  328|       |    // Immediate is already in its encoded format
  329|  2.91k|    return MO.getImm();
  330|  3.58k|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter15getCCOutOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  269|  6.64k|                           const MCSubtargetInfo &STI) const {
  270|       |    // The operand is either reg0 or CPSR. The 's' bit is encoded as '0' or
  271|       |    // '1' respectively.
  272|  6.64k|    return MI.getOperand(Op).getReg() == ARM::CPSR;
  273|  6.64k|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter18getSORegImmOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1365|    651|                const MCSubtargetInfo &STI) const {
 1366|       |  // Sub-operands are [reg, imm]. The first register is Rm, the reg to be
 1367|       |  // shifted. The second is the amount to shift by.
 1368|       |  //
 1369|       |  // {3-0} = Rm.
 1370|       |  // {4}   = 0
 1371|       |  // {6-5} = type
 1372|       |  // {11-7} = imm
 1373|       |
 1374|    651|  const MCOperand &MO  = MI.getOperand(OpIdx);
 1375|    651|  const MCOperand &MO1 = MI.getOperand(OpIdx + 1);
 1376|    651|  ARM_AM::ShiftOpc SOpc = ARM_AM::getSORegShOp(MO1.getImm());
 1377|       |
 1378|       |  // Encode Rm.
 1379|    651|  unsigned Binary = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
 1380|       |
 1381|       |  // Encode the shift opcode.
 1382|    651|  unsigned SBits = 0;
 1383|       |
 1384|       |  // Set shift operand (bit[6:4]).
 1385|       |  // LSL - 000
 1386|       |  // LSR - 010
 1387|       |  // ASR - 100
 1388|       |  // ROR - 110
 1389|       |  // RRX - 110 and bit[11:8] clear.
 1390|    651|  switch (SOpc) {
 1391|      0|  default: llvm_unreachable("Unknown shift opc!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (1391:3): [True: 0, False: 651]
  ------------------
 1392|    438|  case ARM_AM::lsl: SBits = 0x0; break;
  ------------------
  |  Branch (1392:3): [True: 438, False: 213]
  ------------------
 1393|     87|  case ARM_AM::lsr: SBits = 0x2; break;
  ------------------
  |  Branch (1393:3): [True: 87, False: 564]
  ------------------
 1394|     22|  case ARM_AM::asr: SBits = 0x4; break;
  ------------------
  |  Branch (1394:3): [True: 22, False: 629]
  ------------------
 1395|      6|  case ARM_AM::ror: SBits = 0x6; break;
  ------------------
  |  Branch (1395:3): [True: 6, False: 645]
  ------------------
 1396|     98|  case ARM_AM::rrx:
  ------------------
  |  Branch (1396:3): [True: 98, False: 553]
  ------------------
 1397|     98|    Binary |= 0x60;
 1398|     98|    return Binary;
 1399|    651|  }
 1400|       |
 1401|       |  // Encode shift_imm bit[11:7].
 1402|    553|  Binary |= SBits << 4;
 1403|    553|  unsigned Offset = ARM_AM::getSORegOffset(MO1.getImm());
 1404|    553|  assert(Offset < 32 && "Offset must be in range 0-31!");
  ------------------
  |  Branch (1404:3): [True: 553, False: 0]
  |  Branch (1404:3): [True: 553, Folded]
  |  Branch (1404:3): [True: 553, False: 0]
  ------------------
 1405|    553|  return Binary | (Offset << 7);
 1406|    553|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter18getSORegRegOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1317|    481|                const MCSubtargetInfo &STI) const {
 1318|       |  // Sub-operands are [reg, reg, imm]. The first register is Rm, the reg to be
 1319|       |  // shifted. The second is Rs, the amount to shift by, and the third specifies
 1320|       |  // the type of the shift.
 1321|       |  //
 1322|       |  // {3-0} = Rm.
 1323|       |  // {4}   = 1
 1324|       |  // {6-5} = type
 1325|       |  // {11-8} = Rs
 1326|       |  // {7}    = 0
 1327|       |
 1328|    481|  const MCOperand &MO  = MI.getOperand(OpIdx);
 1329|    481|  const MCOperand &MO1 = MI.getOperand(OpIdx + 1);
 1330|    481|  const MCOperand &MO2 = MI.getOperand(OpIdx + 2);
 1331|    481|  ARM_AM::ShiftOpc SOpc = ARM_AM::getSORegShOp(MO2.getImm());
 1332|       |
 1333|       |  // Encode Rm.
 1334|    481|  unsigned Binary = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
 1335|       |
 1336|       |  // Encode the shift opcode.
 1337|    481|  unsigned SBits = 0;
 1338|    481|  unsigned Rs = MO1.getReg();
 1339|    481|  if (Rs) {
  ------------------
  |  Branch (1339:7): [True: 481, False: 0]
  ------------------
 1340|       |    // Set shift operand (bit[7:4]).
 1341|       |    // LSL - 0001
 1342|       |    // LSR - 0011
 1343|       |    // ASR - 0101
 1344|       |    // ROR - 0111
 1345|    481|    switch (SOpc) {
 1346|      0|    default: llvm_unreachable("Unknown shift opc!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  |  Branch (1346:5): [True: 0, False: 481]
  ------------------
 1347|     47|    case ARM_AM::lsl: SBits = 0x1; break;
  ------------------
  |  Branch (1347:5): [True: 47, False: 434]
  ------------------
 1348|    312|    case ARM_AM::lsr: SBits = 0x3; break;
  ------------------
  |  Branch (1348:5): [True: 312, False: 169]
  ------------------
 1349|     80|    case ARM_AM::asr: SBits = 0x5; break;
  ------------------
  |  Branch (1349:5): [True: 80, False: 401]
  ------------------
 1350|     42|    case ARM_AM::ror: SBits = 0x7; break;
  ------------------
  |  Branch (1350:5): [True: 42, False: 439]
  ------------------
 1351|    481|    }
 1352|    481|  }
 1353|       |
 1354|    481|  Binary |= SBits << 4;
 1355|       |
 1356|       |  // Encode the shift operation Rs.
 1357|       |  // Encode Rs bit[11:8].
 1358|    481|  assert(ARM_AM::getSORegOffset(MO2.getImm()) == 0);
  ------------------
  |  Branch (1358:3): [True: 481, False: 0]
  ------------------
 1359|    481|  return Binary | (CTX.getRegisterInfo()->getEncodingValue(Rs) << ARMII::RegRsShift);
 1360|    481|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getLdStSORegOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1075|     16|                    const MCSubtargetInfo &STI) const {
 1076|     16|  const MCOperand &MO = MI.getOperand(OpIdx);
 1077|     16|  const MCOperand &MO1 = MI.getOperand(OpIdx+1);
 1078|     16|  const MCOperand &MO2 = MI.getOperand(OpIdx+2);
 1079|     16|  unsigned Rn = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
 1080|     16|  unsigned Rm = CTX.getRegisterInfo()->getEncodingValue(MO1.getReg());
 1081|     16|  unsigned ShImm = ARM_AM::getAM2Offset(MO2.getImm());
 1082|     16|  bool isAdd = ARM_AM::getAM2Op(MO2.getImm()) == ARM_AM::add;
 1083|     16|  ARM_AM::ShiftOpc ShOp = ARM_AM::getAM2ShiftOpc(MO2.getImm());
 1084|     16|  unsigned SBits = getShiftOp(ShOp);
 1085|       |
 1086|       |  // While "lsr #32" and "asr #32" exist, they are encoded with a 0 in the shift
 1087|       |  // amount. However, it would be an easy mistake to make so check here.
 1088|     16|  assert((ShImm & ~0x1f) == 0 && "Out of range shift amount");
  ------------------
  |  Branch (1088:3): [True: 16, False: 0]
  |  Branch (1088:3): [True: 16, Folded]
  |  Branch (1088:3): [True: 16, False: 0]
  ------------------
 1089|       |
 1090|       |  // {16-13} = Rn
 1091|       |  // {12}    = isAdd
 1092|       |  // {11-0}  = shifter
 1093|       |  //  {3-0}  = Rm
 1094|       |  //  {4}    = 0
 1095|       |  //  {6-5}  = type
 1096|       |  //  {11-7} = imm
 1097|     16|  uint32_t Binary = Rm;
 1098|     16|  Binary |= Rn << 13;
 1099|     16|  Binary |= SBits << 5;
 1100|     16|  Binary |= ShImm << 7;
 1101|     16|  if (isAdd)
  ------------------
  |  Branch (1101:7): [True: 16, False: 0]
  ------------------
 1102|     16|    Binary |= 1 << 12;
 1103|     16|  return Binary;
 1104|     16|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter10getShiftOpEN7llvm_ks6ARM_AM8ShiftOpcE:
  208|     54|  unsigned getShiftOp(ARM_AM::ShiftOpc ShOpc) const {
  209|     54|    switch (ShOpc) {
  ------------------
  |  Branch (209:13): [True: 54, False: 0]
  ------------------
  210|     54|    case ARM_AM::no_shift:
  ------------------
  |  Branch (210:5): [True: 54, False: 0]
  ------------------
  211|     54|    case ARM_AM::lsl: return 0;
  ------------------
  |  Branch (211:5): [True: 0, False: 54]
  ------------------
  212|      0|    case ARM_AM::lsr: return 1;
  ------------------
  |  Branch (212:5): [True: 0, False: 54]
  ------------------
  213|      0|    case ARM_AM::asr: return 2;
  ------------------
  |  Branch (213:5): [True: 0, False: 54]
  ------------------
  214|      0|    case ARM_AM::ror:
  ------------------
  |  Branch (214:5): [True: 0, False: 54]
  ------------------
  215|      0|    case ARM_AM::rrx: return 3;
  ------------------
  |  Branch (215:5): [True: 0, False: 54]
  ------------------
  216|     54|    }
  217|      0|    llvm_unreachable("Invalid ShiftOpc!");
  ------------------
  |  |   99|      0|  ::llvm_ks::llvm_unreachable_internal(msg, __FILE__, __LINE__)
  ------------------
  218|     54|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getAddrMode3OpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1164|    957|                    const MCSubtargetInfo &STI) const {
 1165|       |  // {13}     1 == imm8, 0 == Rm
 1166|       |  // {12-9}   Rn
 1167|       |  // {8}      isAdd
 1168|       |  // {7-4}    imm7_4/zero
 1169|       |  // {3-0}    imm3_0/Rm
 1170|    957|  const MCOperand &MO = MI.getOperand(OpIdx);
 1171|    957|  const MCOperand &MO1 = MI.getOperand(OpIdx+1);
 1172|    957|  const MCOperand &MO2 = MI.getOperand(OpIdx+2);
 1173|       |
 1174|       |  // If The first operand isn't a register, we have a label reference.
 1175|    957|  if (!MO.isReg()) {
  ------------------
  |  Branch (1175:7): [True: 925, False: 32]
  ------------------
 1176|    925|    unsigned Rn = CTX.getRegisterInfo()->getEncodingValue(ARM::PC);   // Rn is PC.
 1177|       |
 1178|    925|    assert(MO.isExpr() && "Unexpected machine operand type!");
  ------------------
  |  Branch (1178:5): [True: 925, False: 0]
  |  Branch (1178:5): [True: 925, Folded]
  |  Branch (1178:5): [True: 925, False: 0]
  ------------------
 1179|    925|    const MCExpr *Expr = MO.getExpr();
 1180|    925|    MCFixupKind Kind = MCFixupKind(ARM::fixup_arm_pcrel_10_unscaled);
 1181|    925|    Fixups.push_back(MCFixup::create(0, Expr, Kind, MI.getLoc()));
 1182|       |
 1183|    925|    return (Rn << 9) | (1 << 13);
 1184|    925|  }
 1185|     32|  unsigned Rn = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
 1186|     32|  unsigned Imm = MO2.getImm();
 1187|     32|  bool isAdd = ARM_AM::getAM3Op(Imm) == ARM_AM::add;
 1188|     32|  bool isImm = MO1.getReg() == 0;
 1189|     32|  uint32_t Imm8 = ARM_AM::getAM3Offset(Imm);
 1190|       |  // if reg +/- reg, Rm will be non-zero. Otherwise, we have reg +/- imm8
 1191|     32|  if (!isImm)
  ------------------
  |  Branch (1191:7): [True: 16, False: 16]
  ------------------
 1192|     16|    Imm8 = CTX.getRegisterInfo()->getEncodingValue(MO1.getReg());
 1193|     32|  return (Rn << 9) | Imm8 | (isAdd << 8) | (isImm << 13);
 1194|    957|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getAddrMode2OffsetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1109|    623|                          const MCSubtargetInfo &STI) const {
 1110|       |  // {13}     1 == imm12, 0 == Rm
 1111|       |  // {12}     isAdd
 1112|       |  // {11-0}   imm12/Rm
 1113|    623|  const MCOperand &MO = MI.getOperand(OpIdx);
 1114|    623|  const MCOperand &MO1 = MI.getOperand(OpIdx+1);
 1115|    623|  unsigned Imm = MO1.getImm();
 1116|    623|  bool isAdd = ARM_AM::getAM2Op(Imm) == ARM_AM::add;
 1117|    623|  bool isReg = MO.getReg() != 0;
 1118|    623|  uint32_t Binary = ARM_AM::getAM2Offset(Imm);
 1119|       |  // if reg +/- reg, Rm will be non-zero. Otherwise, we have reg +/- imm12
 1120|    623|  if (isReg) {
  ------------------
  |  Branch (1120:7): [True: 38, False: 585]
  ------------------
 1121|     38|    ARM_AM::ShiftOpc ShOp = ARM_AM::getAM2ShiftOpc(Imm);
 1122|     38|    Binary <<= 7;                    // Shift amount is bits [11:7]
 1123|     38|    Binary |= getShiftOp(ShOp) << 5; // Shift type is bits [6:5]
 1124|     38|    Binary |= CTX.getRegisterInfo()->getEncodingValue(MO.getReg()); // Rm is bits [3:0]
 1125|     38|  }
 1126|    623|  return Binary | (isAdd << 12) | (isReg << 13);
 1127|    623|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getAddrMode3OffsetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
 1144|     35|                          const MCSubtargetInfo &STI) const {
 1145|       |  // {9}      1 == imm8, 0 == Rm
 1146|       |  // {8}      isAdd
 1147|       |  // {7-4}    imm7_4/zero
 1148|       |  // {3-0}    imm3_0/Rm
 1149|     35|  const MCOperand &MO = MI.getOperand(OpIdx);
 1150|     35|  const MCOperand &MO1 = MI.getOperand(OpIdx+1);
 1151|     35|  unsigned Imm = MO1.getImm();
 1152|     35|  bool isAdd = ARM_AM::getAM3Op(Imm) == ARM_AM::add;
 1153|     35|  bool isImm = MO.getReg() == 0;
 1154|     35|  uint32_t Imm8 = ARM_AM::getAM3Offset(Imm);
 1155|       |  // if reg +/- reg, Rm will be non-zero. Otherwise, we have reg +/- imm8
 1156|     35|  if (!isImm)
  ------------------
  |  Branch (1156:7): [True: 7, False: 28]
  ------------------
 1157|      7|    Imm8 = CTX.getRegisterInfo()->getEncodingValue(MO.getReg());
 1158|     35|  return Imm8 | (isAdd << 8) | (isImm << 9);
 1159|     35|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter22getARMBLXTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  753|    416|                          const MCSubtargetInfo &STI) const {
  754|    416|  const MCOperand MO = MI.getOperand(OpIdx);
  755|    416|  if (MO.isExpr())
  ------------------
  |  Branch (755:7): [True: 405, False: 11]
  ------------------
  756|    405|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_blx, Fixups, STI);
  757|       |
  758|     11|  return (MO.getImm() - MI.getAddress() - 8) >> 1;
  759|    416|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter23getThumbBRTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  655|  1.53k|                        const MCSubtargetInfo &STI) const {
  656|  1.53k|  const MCOperand MO = MI.getOperand(OpIdx);
  657|  1.53k|  if (MO.isExpr())
  ------------------
  |  Branch (657:7): [True: 842, False: 696]
  ------------------
  658|    842|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_thumb_br,
  659|    842|                                    Fixups, STI);
  660|    696|  return ((MO.getImm() - MI.getAddress() - 4) >> 1);
  661|  1.53k|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter23getThumbCBTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  679|     55|                        const MCSubtargetInfo &STI) const {
  680|     55|  const MCOperand MO = MI.getOperand(OpIdx);
  681|     55|  if (MO.isExpr())
  ------------------
  |  Branch (681:7): [True: 45, False: 10]
  ------------------
  682|     45|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_thumb_cb, Fixups, STI);
  683|     10|  return ((MO.getImm() - MI.getAddress() - 4) >> 1);
  684|     55|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter35getUnconditionalBranchTargetOpValueERKN7llvm_ks6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEERKNS1_15MCSubtargetInfoE:
  766|    425|                       const MCSubtargetInfo &STI) const {
  767|    425|  unsigned Val = 0;
  768|    425|  const MCOperand MO = MI.getOperand(OpIdx);
  769|       |    
  770|    425|  if(MO.isExpr())
  ------------------
  |  Branch (770:6): [True: 50, False: 375]
  ------------------
  771|     50|    return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_t2_uncondbranch, Fixups, STI);
  772|    375|  else 
  773|    375|    Val = (MO.getImm() - MI.getAddress() - 4) >> 1;
  774|       |
  775|    375|  bool I  = (Val & 0x800000);
  776|    375|  bool J1 = (Val & 0x400000);
  777|    375|  bool J2 = (Val & 0x200000);
  778|    375|  if (I ^ J1)
  ------------------
  |  Branch (778:7): [True: 21, False: 354]
  ------------------
  779|     21|    Val &= ~0x400000;
  780|    354|  else
  781|    354|    Val |= 0x400000;
  782|       |
  783|    375|  if (I ^ J2)
  ------------------
  |  Branch (783:7): [True: 120, False: 255]
  ------------------
  784|    120|    Val &= ~0x200000;
  785|    255|  else
  786|    255|    Val |= 0x200000;
  787|       |
  788|    375|  return Val;
  789|    425|}
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter8getErrorEv:
   54|  29.4k|  unsigned int getError() const { return ErrorCode; }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter7isThumbERKN7llvm_ks15MCSubtargetInfoE:
   56|  32.1k|  bool isThumb(const MCSubtargetInfo &STI) const {
   57|  32.1k|    return STI.getFeatureBits()[ARM::ModeThumb];
   58|  32.1k|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter12EmitConstantEmjRN7llvm_ks11raw_ostreamE:
  426|  35.3k|  void EmitConstant(uint64_t Val, unsigned Size, raw_ostream &OS) const {
  427|       |    // Output the constant in little endian byte order.
  428|   144k|    for (unsigned i = 0; i != Size; ++i) {
  ------------------
  |  Branch (428:26): [True: 109k, False: 35.3k]
  ------------------
  429|   109k|      unsigned Shift = IsLittleEndian ? i * 8 : (Size - 1 - i) * 8;
  ------------------
  |  Branch (429:24): [True: 109k, False: 0]
  ------------------
  430|   109k|      EmitByte((Val >> Shift) & 0xff, OS);
  431|   109k|    }
  432|  35.3k|  }
ARMMCCodeEmitter.cpp:_ZNK12_GLOBAL__N_116ARMMCCodeEmitter8EmitByteEhRN7llvm_ks11raw_ostreamE:
  422|   109k|  void EmitByte(unsigned char C, raw_ostream &OS) const {
  423|   109k|    OS << (char)C;
  424|   109k|  }

_ZN7llvm_ks9ARMMCExpr6createENS0_11VariantKindEPKNS_6MCExprERNS_9MCContextE:
   20|     11|                       MCContext &Ctx) {
   21|     11|  return new (Ctx) ARMMCExpr(Kind, Expr);
   22|     11|}

_ZN7llvm_ks9ARMMCExpr7classofEPKNS_6MCExprE:
   73|      4|  static bool classof(const MCExpr *E) {
   74|      4|    return E->getKind() == MCExpr::Target;
   75|      4|  }
_ZN7llvm_ks9ARMMCExprC2ENS0_11VariantKindEPKNS_6MCExprE:
   30|     11|      : Kind(Kind), Expr(Expr) {}

_ZN7llvm_ks6ARM_MC14ParseARMTripleERKNS_6TripleENS_9StringRefE:
  131|  41.9k|std::string ARM_MC::ParseARMTriple(const Triple &TT, StringRef CPU) {
  132|  41.9k|  bool isThumb =
  133|  41.9k|      TT.getArch() == Triple::thumb || TT.getArch() == Triple::thumbeb;
  ------------------
  |  Branch (133:7): [True: 0, False: 41.9k]
  |  Branch (133:40): [True: 0, False: 41.9k]
  ------------------
  134|       |
  135|  41.9k|  std::string ARMArchFeature;
  136|       |
  137|  41.9k|  unsigned ArchID = ARM::parseArch(TT.getArchName());
  138|  41.9k|  if (ArchID != ARM::AK_INVALID &&  (CPU.empty() || CPU == "generic"))
  ------------------
  |  Branch (138:7): [True: 41.9k, False: 0]
  |  Branch (138:7): [True: 41.9k, False: 0]
  |  Branch (138:38): [True: 41.9k, False: 0]
  |  Branch (138:53): [True: 0, False: 0]
  ------------------
  139|  41.9k|    ARMArchFeature = (ARMArchFeature + "+" + ARM::getArchName(ArchID)).str();
  140|       |
  141|  41.9k|  if (isThumb) {
  ------------------
  |  Branch (141:7): [True: 0, False: 41.9k]
  ------------------
  142|      0|    if (ARMArchFeature.empty())
  ------------------
  |  Branch (142:9): [True: 0, False: 0]
  ------------------
  143|      0|      ARMArchFeature = "+thumb-mode";
  144|      0|    else
  145|      0|      ARMArchFeature += ",+thumb-mode";
  146|      0|  }
  147|       |
  148|  41.9k|  if (TT.isOSNaCl()) {
  ------------------
  |  Branch (148:7): [True: 0, False: 41.9k]
  ------------------
  149|      0|    if (ARMArchFeature.empty())
  ------------------
  |  Branch (149:9): [True: 0, False: 0]
  ------------------
  150|      0|      ARMArchFeature = "+nacl-trap";
  151|      0|    else
  152|      0|      ARMArchFeature += ",+nacl-trap";
  153|      0|  }
  154|       |
  155|  41.9k|  return ARMArchFeature;
  156|  41.9k|}
_ZN7llvm_ks6ARM_MC24createARMMCSubtargetInfoERKNS_6TripleENS_9StringRefES4_:
  159|  41.9k|                                                  StringRef CPU, StringRef FS) {
  160|  41.9k|  std::string ArchFS = ARM_MC::ParseARMTriple(TT, CPU);
  161|  41.9k|  if (!FS.empty()) {
  ------------------
  |  Branch (161:7): [True: 0, False: 41.9k]
  ------------------
  162|      0|    if (!ArchFS.empty())
  ------------------
  |  Branch (162:9): [True: 0, False: 0]
  ------------------
  163|      0|      ArchFS = (Twine(ArchFS) + "," + FS).str();
  164|      0|    else
  165|      0|      ArchFS = FS;
  166|      0|  }
  167|       |
  168|  41.9k|  return createARMMCSubtargetInfoImpl(TT, CPU, ArchFS);
  169|  41.9k|}
LLVMInitializeARMTargetMC:
  199|      1|extern "C" void LLVMInitializeARMTargetMC() {
  200|      1|  for (Target *T : {&TheARMLETarget, &TheARMBETarget, &TheThumbLETarget,
  ------------------
  |  Branch (200:18): [True: 4, False: 1]
  ------------------
  201|      4|                    &TheThumbBETarget}) {
  202|       |    // Register the MC asm info.
  203|      4|    RegisterMCAsmInfoFn X(*T, createARMMCAsmInfo);
  204|       |
  205|       |    // Register the MC instruction info.
  206|      4|    TargetRegistry::RegisterMCInstrInfo(*T, createARMMCInstrInfo);
  207|       |
  208|       |    // Register the MC register info.
  209|      4|    TargetRegistry::RegisterMCRegInfo(*T, createARMMCRegisterInfo);
  210|       |
  211|       |    // Register the MC subtarget info.
  212|      4|    TargetRegistry::RegisterMCSubtargetInfo(*T,
  213|      4|                                            ARM_MC::createARMMCSubtargetInfo);
  214|      4|  }
  215|       |
  216|       |  // Register the MC Code Emitter
  217|      1|  for (Target *T : {&TheARMLETarget, &TheThumbLETarget})
  ------------------
  |  Branch (217:18): [True: 2, False: 1]
  ------------------
  218|      2|    TargetRegistry::RegisterMCCodeEmitter(*T, createARMLEMCCodeEmitter);
  219|      1|  for (Target *T : {&TheARMBETarget, &TheThumbBETarget})
  ------------------
  |  Branch (219:18): [True: 2, False: 1]
  ------------------
  220|      2|    TargetRegistry::RegisterMCCodeEmitter(*T, createARMBEMCCodeEmitter);
  221|       |
  222|       |  // Register the asm backend.
  223|      1|  TargetRegistry::RegisterMCAsmBackend(TheARMLETarget, createARMLEAsmBackend);
  224|      1|  TargetRegistry::RegisterMCAsmBackend(TheARMBETarget, createARMBEAsmBackend);
  225|      1|  TargetRegistry::RegisterMCAsmBackend(TheThumbLETarget,
  226|      1|                                       createThumbLEAsmBackend);
  227|      1|  TargetRegistry::RegisterMCAsmBackend(TheThumbBETarget,
  228|      1|                                       createThumbBEAsmBackend);
  229|      1|}
ARMMCTargetDesc.cpp:_ZL20getITDeprecationInfoRN7llvm_ks6MCInstERKNS_15MCSubtargetInfoERNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE:
   65|    431|                                 std::string &Info) {
   66|    431|  if (STI.getFeatureBits()[llvm_ks::ARM::HasV8Ops] && MI.getOperand(1).isImm() &&
  ------------------
  |  Branch (66:7): [True: 49, False: 382]
  |  Branch (66:7): [True: 34, False: 397]
  |  Branch (66:55): [True: 49, False: 0]
  ------------------
   67|     49|      MI.getOperand(1).getImm() != 8) {
  ------------------
  |  Branch (67:7): [True: 34, False: 15]
  ------------------
   68|     34|    Info = "applying IT instruction to more than one subsequent instruction is "
   69|     34|           "deprecated";
   70|     34|    return true;
   71|     34|  }
   72|       |
   73|    397|  return false;
   74|    431|}
ARMMCTargetDesc.cpp:_ZL18createARMMCAsmInfoRKN7llvm_ks14MCRegisterInfoERKNS_6TripleE:
  184|  20.9k|                                     const Triple &TheTriple) {
  185|  20.9k|  MCAsmInfo *MAI;
  186|  20.9k|  if (TheTriple.isOSDarwin() || TheTriple.isOSBinFormatMachO())
  ------------------
  |  Branch (186:7): [True: 0, False: 20.9k]
  |  Branch (186:33): [True: 0, False: 20.9k]
  ------------------
  187|      0|    MAI = new ARMMCAsmInfoDarwin(TheTriple);
  188|  20.9k|  else if (TheTriple.isWindowsMSVCEnvironment())
  ------------------
  |  Branch (188:12): [True: 0, False: 20.9k]
  ------------------
  189|      0|    MAI = new ARMCOFFMCAsmInfoMicrosoft();
  190|  20.9k|  else if (TheTriple.isOSWindows())
  ------------------
  |  Branch (190:12): [True: 0, False: 20.9k]
  ------------------
  191|      0|    MAI = new ARMCOFFMCAsmInfoGNU();
  192|  20.9k|  else
  193|  20.9k|    MAI = new ARMELFMCAsmInfo(TheTriple);
  194|       |
  195|  20.9k|  return MAI;
  196|  20.9k|}
ARMMCTargetDesc.cpp:_ZL20createARMMCInstrInfov:
  171|  20.9k|static MCInstrInfo *createARMMCInstrInfo() {
  172|  20.9k|  MCInstrInfo *X = new MCInstrInfo();
  173|  20.9k|  InitARMMCInstrInfo(X);
  174|  20.9k|  return X;
  175|  20.9k|}
ARMMCTargetDesc.cpp:_ZL23createARMMCRegisterInfoRKN7llvm_ks6TripleE:
  177|  20.9k|static MCRegisterInfo *createARMMCRegisterInfo(const Triple &Triple) {
  178|  20.9k|  MCRegisterInfo *X = new MCRegisterInfo();
  179|  20.9k|  InitARMMCRegisterInfo(X, ARM::LR, 0, 0, ARM::PC);
  180|  20.9k|  return X;
  181|  20.9k|}

_ZN7llvm_ks17ARMTargetStreamerC2ERNS_10MCStreamerE:
   24|  20.9k|    : MCTargetStreamer(S), ConstantPools(new AssemblerConstantPools()) {}
_ZN7llvm_ks17ARMTargetStreamerD2Ev:
   26|  20.9k|ARMTargetStreamer::~ARMTargetStreamer() {}
_ZN7llvm_ks17ARMTargetStreamer20addConstantPoolEntryEPKNS_6MCExprENS_5SMLocE:
   30|  1.59k|const MCExpr *ARMTargetStreamer::addConstantPoolEntry(const MCExpr *Expr, SMLoc Loc) {
   31|  1.59k|  return ConstantPools->addEntry(Streamer, Expr, 4, Loc);
   32|  1.59k|}
_ZN7llvm_ks17ARMTargetStreamer23emitCurrentConstantPoolEv:
   34|  1.25k|void ARMTargetStreamer::emitCurrentConstantPool() {
   35|  1.25k|  ConstantPools->emitForCurrentSection(Streamer);
   36|  1.25k|}
_ZN7llvm_ks17ARMTargetStreamer6finishEv:
   39|  8.98k|void ARMTargetStreamer::finish() { ConstantPools->emitAll(Streamer); }
_ZN7llvm_ks17ARMTargetStreamer11emitFnStartEv:
   46|    827|void ARMTargetStreamer::emitFnStart() {}
_ZN7llvm_ks17ARMTargetStreamer9emitFnEndEv:
   47|    561|void ARMTargetStreamer::emitFnEnd() {}
_ZN7llvm_ks17ARMTargetStreamer14emitCantUnwindEv:
   48|     62|void ARMTargetStreamer::emitCantUnwind() {}
_ZN7llvm_ks17ARMTargetStreamer15emitPersonalityEPKNS_8MCSymbolE:
   49|      5|void ARMTargetStreamer::emitPersonality(const MCSymbol *Personality) {}
_ZN7llvm_ks17ARMTargetStreamer20emitPersonalityIndexEj:
   50|      1|void ARMTargetStreamer::emitPersonalityIndex(unsigned Index) {}
_ZN7llvm_ks17ARMTargetStreamer15emitHandlerDataEv:
   51|     80|void ARMTargetStreamer::emitHandlerData() {}
_ZN7llvm_ks17ARMTargetStreamer9emitMovSPEjl:
   54|      6|void ARMTargetStreamer::emitMovSP(unsigned Reg, int64_t Offset) {}
_ZN7llvm_ks17ARMTargetStreamer7emitPadEl:
   55|     15|void ARMTargetStreamer::emitPad(int64_t Offset) {}
_ZN7llvm_ks17ARMTargetStreamer13emitUnwindRawElRKNS_15SmallVectorImplIhEE:
   59|      6|                                      const SmallVectorImpl<uint8_t> &Opcodes) {
   60|      6|}
_ZN7llvm_ks17ARMTargetStreamer13emitAttributeEjj:
   62|     43|void ARMTargetStreamer::emitAttribute(unsigned Attribute, unsigned Value) {}
_ZN7llvm_ks17ARMTargetStreamer17emitTextAttributeEjNS_9StringRefE:
   64|    564|                                          StringRef String) {}
_ZN7llvm_ks17ARMTargetStreamer8emitArchEj:
   68|  22.9k|void ARMTargetStreamer::emitArch(unsigned Arch) {}
_ZN7llvm_ks17ARMTargetStreamer14emitObjectArchEj:
   70|     12|void ARMTargetStreamer::emitObjectArch(unsigned Arch) {}
_ZN7llvm_ks17ARMTargetStreamer7emitFPUEj:
   71|  2.84k|void ARMTargetStreamer::emitFPU(unsigned FPU) {}
_ZN7llvm_ks17ARMTargetStreamer8emitInstEjc:
   73|    161|void ARMTargetStreamer::emitInst(uint32_t Inst, char Suffix) {}
_ZN7llvm_ks17ARMTargetStreamer29AnnotateTLSDescriptorSequenceEPKNS_15MCSymbolRefExprE:
   75|     32|ARMTargetStreamer::AnnotateTLSDescriptorSequence(const MCSymbolRefExpr *SRE) {}
_ZN7llvm_ks17ARMTargetStreamer12emitThumbSetEPNS_8MCSymbolEPKNS_6MCExprE:
   77|      6|void ARMTargetStreamer::emitThumbSet(MCSymbol *Symbol, const MCExpr *Value) {}

LLVMInitializeARMTargetInfo:
   17|      1|extern "C" void LLVMInitializeARMTargetInfo() {
   18|      1|  RegisterTarget<Triple::arm>
   19|      1|    X(TheARMLETarget, "arm", "ARM");
   20|      1|  RegisterTarget<Triple::armeb>
   21|      1|    Y(TheARMBETarget, "armeb", "ARM (big endian)");
   22|       |
   23|      1|  RegisterTarget<Triple::thumb>
   24|      1|    A(TheThumbLETarget, "thumb", "Thumb");
   25|      1|  RegisterTarget<Triple::thumbeb>
   26|      1|    B(TheThumbBETarget, "thumbeb", "Thumb (big endian)");
   27|      1|}

LLVMInitializeHexagonAsmParser:
 1104|      1|extern "C" void LLVMInitializeHexagonAsmParser() {
 1105|      1|  RegisterMCAsmParser<HexagonAsmParser> X(TheHexagonTarget);
 1106|      1|}

LLVMInitializeHexagonTargetMC:
  118|      1|extern "C" void LLVMInitializeHexagonTargetMC() {
  119|       |  // Register the MC asm info.
  120|      1|  RegisterMCAsmInfoFn X(TheHexagonTarget, createHexagonMCAsmInfo);
  121|       |
  122|       |  // Register the MC instruction info.
  123|      1|  TargetRegistry::RegisterMCInstrInfo(TheHexagonTarget,
  124|      1|                                      createHexagonMCInstrInfo);
  125|       |
  126|       |  // Register the MC register info.
  127|      1|  TargetRegistry::RegisterMCRegInfo(TheHexagonTarget,
  128|      1|                                    createHexagonMCRegisterInfo);
  129|       |
  130|       |  // Register the MC subtarget info.
  131|      1|  TargetRegistry::RegisterMCSubtargetInfo(TheHexagonTarget,
  132|      1|                                          createHexagonMCSubtargetInfo);
  133|       |
  134|       |  // Register the MC Code Emitter
  135|      1|  TargetRegistry::RegisterMCCodeEmitter(TheHexagonTarget,
  136|      1|                                        createHexagonMCCodeEmitter);
  137|       |
  138|       |  // Register the asm backend
  139|      1|  TargetRegistry::RegisterMCAsmBackend(TheHexagonTarget,
  140|      1|                                       createHexagonAsmBackend);
  141|      1|}

LLVMInitializeHexagonTargetInfo:
   16|      1|extern "C" void LLVMInitializeHexagonTargetInfo() {
   17|      1|  RegisterTarget<Triple::hexagon>  X(TheHexagonTarget, "hexagon", "Hexagon");
   18|      1|}

LLVMInitializeMipsAsmParser:
 6345|      1|extern "C" void LLVMInitializeMipsAsmParser() {
 6346|      1|  RegisterMCAsmParser<MipsAsmParser> X(TheMipsTarget);
 6347|      1|  RegisterMCAsmParser<MipsAsmParser> Y(TheMipselTarget);
 6348|      1|  RegisterMCAsmParser<MipsAsmParser> A(TheMips64Target);
 6349|      1|  RegisterMCAsmParser<MipsAsmParser> B(TheMips64elTarget);
 6350|      1|}

LLVMInitializeMipsTargetMC:
   83|      1|extern "C" void LLVMInitializeMipsTargetMC() {
   84|      1|  for (Target *T : {&TheMipsTarget, &TheMipselTarget, &TheMips64Target,
  ------------------
  |  Branch (84:18): [True: 4, False: 1]
  ------------------
   85|      4|                    &TheMips64elTarget}) {
   86|       |    // Register the MC asm info.
   87|      4|    RegisterMCAsmInfoFn X(*T, createMipsMCAsmInfo);
   88|       |
   89|       |    // Register the MC instruction info.
   90|      4|    TargetRegistry::RegisterMCInstrInfo(*T, createMipsMCInstrInfo);
   91|       |
   92|       |    // Register the MC register info.
   93|      4|    TargetRegistry::RegisterMCRegInfo(*T, createMipsMCRegisterInfo);
   94|       |
   95|       |    // Register the MC subtarget info.
   96|      4|    TargetRegistry::RegisterMCSubtargetInfo(*T, createMipsMCSubtargetInfo);
   97|      4|  }
   98|       |
   99|       |  // Register the MC Code Emitter
  100|      1|  for (Target *T : {&TheMipsTarget, &TheMips64Target})
  ------------------
  |  Branch (100:18): [True: 2, False: 1]
  ------------------
  101|      2|    TargetRegistry::RegisterMCCodeEmitter(*T, createMipsMCCodeEmitterEB);
  102|       |
  103|      1|  for (Target *T : {&TheMipselTarget, &TheMips64elTarget})
  ------------------
  |  Branch (103:18): [True: 2, False: 1]
  ------------------
  104|      2|    TargetRegistry::RegisterMCCodeEmitter(*T, createMipsMCCodeEmitterEL);
  105|       |
  106|       |  // Register the asm backend.
  107|      1|  TargetRegistry::RegisterMCAsmBackend(TheMipsTarget,
  108|      1|                                       createMipsAsmBackendEB32);
  109|      1|  TargetRegistry::RegisterMCAsmBackend(TheMipselTarget,
  110|      1|                                       createMipsAsmBackendEL32);
  111|      1|  TargetRegistry::RegisterMCAsmBackend(TheMips64Target,
  112|      1|                                       createMipsAsmBackendEB64);
  113|      1|  TargetRegistry::RegisterMCAsmBackend(TheMips64elTarget,
  114|      1|                                       createMipsAsmBackendEL64);
  115|       |
  116|      1|}

LLVMInitializeMipsTargetInfo:
   17|      1|extern "C" void LLVMInitializeMipsTargetInfo() {
   18|      1|  RegisterTarget<Triple::mips> X(TheMipsTarget, "mips", "Mips");
   19|       |
   20|      1|  RegisterTarget<Triple::mipsel> Y(TheMipselTarget, "mipsel", "Mipsel");
   21|       |
   22|      1|  RegisterTarget<Triple::mips64> A(TheMips64Target, "mips64", "Mips64 [experimental]");
   23|       |
   24|      1|  RegisterTarget<Triple::mips64el> B(TheMips64elTarget,
   25|      1|                            "mips64el", "Mips64el [experimental]");
   26|      1|}

LLVMInitializePowerPCAsmParser:
 1922|      1|extern "C" void LLVMInitializePowerPCAsmParser() {
 1923|      1|  RegisterMCAsmParser<PPCAsmParser> A(ThePPC32Target);
 1924|      1|  RegisterMCAsmParser<PPCAsmParser> B(ThePPC64Target);
 1925|      1|  RegisterMCAsmParser<PPCAsmParser> C(ThePPC64LETarget);
 1926|      1|}

LLVMInitializePowerPCTargetMC:
  198|      1|extern "C" void LLVMInitializePowerPCTargetMC() {
  199|      3|  for (Target *T : {&ThePPC32Target, &ThePPC64Target, &ThePPC64LETarget}) {
  ------------------
  |  Branch (199:18): [True: 3, False: 1]
  ------------------
  200|       |    // Register the MC asm info.
  201|      3|    RegisterMCAsmInfoFn C(*T, createPPCMCAsmInfo);
  202|       |
  203|       |    // Register the MC instruction info.
  204|      3|    TargetRegistry::RegisterMCInstrInfo(*T, createPPCMCInstrInfo);
  205|       |
  206|       |    // Register the MC register info.
  207|      3|    TargetRegistry::RegisterMCRegInfo(*T, createPPCMCRegisterInfo);
  208|       |
  209|       |    // Register the MC subtarget info.
  210|      3|    TargetRegistry::RegisterMCSubtargetInfo(*T, createPPCMCSubtargetInfo);
  211|       |
  212|       |    // Register the MC Code Emitter
  213|      3|    TargetRegistry::RegisterMCCodeEmitter(*T, createPPCMCCodeEmitter);
  214|       |
  215|       |    // Register the asm backend.
  216|      3|    TargetRegistry::RegisterMCAsmBackend(*T, createPPCAsmBackend);
  217|      3|  }
  218|      1|}

LLVMInitializePowerPCTargetInfo:
   16|      1|extern "C" void LLVMInitializePowerPCTargetInfo() {
   17|      1|  RegisterTarget<Triple::ppc>
   18|      1|    X(ThePPC32Target, "ppc32", "PowerPC 32");
   19|       |
   20|      1|  RegisterTarget<Triple::ppc64>
   21|      1|    Y(ThePPC64Target, "ppc64", "PowerPC 64");
   22|       |
   23|      1|  RegisterTarget<Triple::ppc64le>
   24|      1|    Z(ThePPC64LETarget, "ppc64le", "PowerPC 64 LE");
   25|      1|}

LLVMInitializeRISCVAsmParser:
 1809|      1|extern "C" void LLVMInitializeRISCVAsmParser() {
 1810|      1|  RegisterMCAsmParser<RISCVAsmParser> X(TheRISCV32Target);
 1811|      1|  RegisterMCAsmParser<RISCVAsmParser> Y(TheRISCV64Target);
 1812|      1|}

LLVMInitializeRISCVTargetMC:
   83|      1|extern "C" void LLVMInitializeRISCVTargetMC() {
   84|      2|  for (Target *T : {&TheRISCV32Target, &TheRISCV64Target}) {
  ------------------
  |  Branch (84:18): [True: 2, False: 1]
  ------------------
   85|      2|    TargetRegistry::RegisterMCAsmInfo(*T, createRISCVMCAsmInfo);
   86|      2|    TargetRegistry::RegisterMCInstrInfo(*T, createRISCVMCInstrInfo);
   87|      2|    TargetRegistry::RegisterMCRegInfo(*T, createRISCVMCRegisterInfo);
   88|       |    // TargetRegistry::RegisterMCAsmBackend(*T, createRISCVAsmBackend);
   89|      2|    TargetRegistry::RegisterMCAsmBackend2(*T, createRISCVAsmBackend);
   90|      2|    TargetRegistry::RegisterMCCodeEmitter(*T, createRISCVMCCodeEmitter);
   91|      2|    TargetRegistry::RegisterMCSubtargetInfo(*T, createRISCVMCSubtargetInfo);
   92|      2|    TargetRegistry::RegisterObjectTargetStreamer(
   93|      2|        *T, createRISCVObjectTargetStreamer);
   94|       |
   95|       |    // Register the asm target streamer.
   96|      2|    TargetRegistry::RegisterAsmTargetStreamer(*T, createRISCVAsmTargetStreamer);
   97|      2|  }
   98|      1|}

LLVMInitializeRISCVTargetInfo:
   26|      1|extern "C" void LLVMInitializeRISCVTargetInfo() {
   27|       |
   28|       |
   29|      1|  RegisterTarget<Triple::riscv32> X(TheRISCV32Target, "riscv32",
   30|      1|                                    "32-bit RISC-V");
   31|      1|  RegisterTarget<Triple::riscv64> Y(TheRISCV64Target, "riscv64",
   32|      1|                                    "64-bit RISC-V");
   33|      1|}

LLVMInitializeSparcAsmParser:
 1188|      1|extern "C" void LLVMInitializeSparcAsmParser() {
 1189|      1|  RegisterMCAsmParser<SparcAsmParser> A(TheSparcTarget);
 1190|      1|  RegisterMCAsmParser<SparcAsmParser> B(TheSparcV9Target);
 1191|      1|  RegisterMCAsmParser<SparcAsmParser> C(TheSparcelTarget);
 1192|      1|}

LLVMInitializeSparcTargetMC:
   83|      1|extern "C" void LLVMInitializeSparcTargetMC() {
   84|       |  // Register the MC asm info.
   85|      1|  RegisterMCAsmInfoFn X(TheSparcTarget, createSparcMCAsmInfo);
   86|      1|  RegisterMCAsmInfoFn Y(TheSparcV9Target, createSparcV9MCAsmInfo);
   87|      1|  RegisterMCAsmInfoFn Z(TheSparcelTarget, createSparcMCAsmInfo);
   88|       |
   89|      3|  for (Target *T : {&TheSparcTarget, &TheSparcV9Target, &TheSparcelTarget}) {
  ------------------
  |  Branch (89:18): [True: 3, False: 1]
  ------------------
   90|       |    // Register the MC instruction info.
   91|      3|    TargetRegistry::RegisterMCInstrInfo(*T, createSparcMCInstrInfo);
   92|       |
   93|       |    // Register the MC register info.
   94|      3|    TargetRegistry::RegisterMCRegInfo(*T, createSparcMCRegisterInfo);
   95|       |
   96|       |    // Register the MC subtarget info.
   97|      3|    TargetRegistry::RegisterMCSubtargetInfo(*T, createSparcMCSubtargetInfo);
   98|       |
   99|       |    // Register the MC Code Emitter.
  100|      3|    TargetRegistry::RegisterMCCodeEmitter(*T, createSparcMCCodeEmitter);
  101|       |
  102|       |    // Register the asm backend.
  103|      3|    TargetRegistry::RegisterMCAsmBackend(*T, createSparcAsmBackend);
  104|      3|  }
  105|      1|}

LLVMInitializeSparcTargetInfo:
   18|      1|extern "C" void LLVMInitializeSparcTargetInfo() {
   19|      1|  RegisterTarget<Triple::sparc> X(TheSparcTarget, "sparc",
   20|      1|                                                   "Sparc");
   21|      1|  RegisterTarget<Triple::sparcv9> Y(TheSparcV9Target,
   22|      1|                                                     "sparcv9", "Sparc V9");
   23|      1|  RegisterTarget<Triple::sparcel> Z(TheSparcelTarget,
   24|      1|                                                     "sparcel", "Sparc LE");
   25|      1|}

LLVMInitializeSystemZAsmParser:
  972|      1|extern "C" void LLVMInitializeSystemZAsmParser() {
  973|      1|  RegisterMCAsmParser<SystemZAsmParser> X(TheSystemZTarget);
  974|      1|}

LLVMInitializeSystemZTargetMC:
  161|      1|extern "C" void LLVMInitializeSystemZTargetMC() {
  162|       |  // Register the MCAsmInfo.
  163|      1|  TargetRegistry::RegisterMCAsmInfo(TheSystemZTarget,
  164|      1|                                    createSystemZMCAsmInfo);
  165|       |
  166|       |  // Register the MCCodeEmitter.
  167|      1|  TargetRegistry::RegisterMCCodeEmitter(TheSystemZTarget,
  168|      1|                                        createSystemZMCCodeEmitter);
  169|       |
  170|       |  // Register the MCInstrInfo.
  171|      1|  TargetRegistry::RegisterMCInstrInfo(TheSystemZTarget,
  172|      1|                                      createSystemZMCInstrInfo);
  173|       |
  174|       |  // Register the MCRegisterInfo.
  175|      1|  TargetRegistry::RegisterMCRegInfo(TheSystemZTarget,
  176|      1|                                    createSystemZMCRegisterInfo);
  177|       |
  178|       |  // Register the MCSubtargetInfo.
  179|      1|  TargetRegistry::RegisterMCSubtargetInfo(TheSystemZTarget,
  180|      1|                                          createSystemZMCSubtargetInfo);
  181|       |
  182|       |  // Register the MCAsmBackend.
  183|      1|  TargetRegistry::RegisterMCAsmBackend(TheSystemZTarget,
  184|      1|                                       createSystemZMCAsmBackend);
  185|      1|}

LLVMInitializeSystemZTargetInfo:
   17|      1|extern "C" void LLVMInitializeSystemZTargetInfo() {
   18|      1|  RegisterTarget<Triple::systemz>
   19|      1|    X(TheSystemZTarget, "systemz", "SystemZ");
   20|      1|}

LLVMInitializeX86AsmParser:
 3433|      1|extern "C" void LLVMInitializeX86AsmParser() {
 3434|      1|  RegisterMCAsmParser<X86AsmParser> X(TheX86_32Target);
 3435|      1|  RegisterMCAsmParser<X86AsmParser> Y(TheX86_64Target);
 3436|      1|}

LLVMInitializeX86TargetMC:
  158|      1|extern "C" void LLVMInitializeX86TargetMC() {
  159|      2|  for (Target *T : {&TheX86_32Target, &TheX86_64Target}) {
  ------------------
  |  Branch (159:18): [True: 2, False: 1]
  ------------------
  160|       |    // Register the MC asm info.
  161|      2|    RegisterMCAsmInfoFn X(*T, createX86MCAsmInfo);
  162|       |
  163|       |    // Register the MC instruction info.
  164|      2|    TargetRegistry::RegisterMCInstrInfo(*T, createX86MCInstrInfo);
  165|       |
  166|       |    // Register the MC register info.
  167|      2|    TargetRegistry::RegisterMCRegInfo(*T, createX86MCRegisterInfo);
  168|       |
  169|       |    // Register the MC subtarget info.
  170|      2|    TargetRegistry::RegisterMCSubtargetInfo(*T,
  171|      2|                                            X86_MC::createX86MCSubtargetInfo);
  172|       |
  173|       |    // Register the code emitter.
  174|      2|    TargetRegistry::RegisterMCCodeEmitter(*T, createX86MCCodeEmitter);
  175|       |
  176|       |    // Register the MC relocation info.
  177|      2|    TargetRegistry::RegisterMCRelocationInfo(*T, createX86MCRelocationInfo);
  178|      2|  }
  179|       |
  180|       |  // Register the asm backend.
  181|      1|  TargetRegistry::RegisterMCAsmBackend(TheX86_32Target,
  182|      1|                                       createX86_32AsmBackend);
  183|      1|  TargetRegistry::RegisterMCAsmBackend(TheX86_64Target,
  184|      1|                                       createX86_64AsmBackend);
  185|      1|}

LLVMInitializeX86TargetInfo:
   16|      1|extern "C" void LLVMInitializeX86TargetInfo() {
   17|      1|  RegisterTarget<Triple::x86>
   18|      1|    X(TheX86_32Target, "x86", "32-bit X86: Pentium-Pro and above");
   19|       |
   20|      1|  RegisterTarget<Triple::x86_64>
   21|      1|    Y(TheX86_64Target, "x86-64", "64-bit X86: EM64T and AMD64");
   22|      1|}

LLVMFuzzerTestOneInput:
    8|  20.9k|int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
    9|  20.9k|    ks_engine *ks;
   10|  20.9k|    ks_err err;
   11|  20.9k|    size_t count;
   12|  20.9k|    unsigned char *encode = NULL;
   13|  20.9k|    size_t size;
   14|  20.9k|    char * assembler;
   15|       |
   16|  20.9k|    if (outfile == NULL) {
  ------------------
  |  Branch (16:9): [True: 1, False: 20.9k]
  ------------------
   17|       |        // we compute the output
   18|      1|        outfile = fopen("/dev/null", "w");
   19|      1|        if (outfile == NULL) {
  ------------------
  |  Branch (19:13): [True: 0, False: 1]
  ------------------
   20|      0|            printf("failed opening /dev/null\n");
   21|      0|            abort();
   22|      0|        }
   23|      1|    }
   24|       |
   25|  20.9k|    if (Size < 1) {
  ------------------
  |  Branch (25:9): [True: 0, False: 20.9k]
  ------------------
   26|      0|        return 0;
   27|      0|    }
   28|       |
   29|  20.9k|    err = ks_open(KS_ARCH_ARM, KS_MODE_ARM+KS_MODE_LITTLE_ENDIAN, &ks);
   30|  20.9k|    if (err != KS_ERR_OK) {
  ------------------
  |  Branch (30:9): [True: 0, False: 20.9k]
  ------------------
   31|      0|        printf("ERROR: failed on ks_open(), quit error = %u\n", err);
   32|      0|        abort();
   33|      0|    }
   34|       |
   35|  20.9k|    ks_option(ks, KS_OPT_SYNTAX, Data[Size-1]);
   36|       |
   37|  20.9k|    assembler = malloc(Size);
   38|  20.9k|    memcpy(assembler, Data, Size-1);
   39|       |    //null terminate string
   40|  20.9k|    assembler[Size-1] = 0;
   41|       |
   42|  20.9k|    if (ks_asm(ks, assembler, 0, &encode, &size, &count) != KS_ERR_OK) {
  ------------------
  |  Branch (42:9): [True: 14.0k, False: 6.95k]
  ------------------
   43|  14.0k|        fprintf(outfile, "ERROR: ks_asm() failed & count = %lu, error = %u\n",
   44|  14.0k|                count, ks_errno(ks));
   45|  14.0k|    } else {
   46|  6.95k|        size_t i;
   47|       |
   48|  6.95k|        fprintf(outfile, "%s = ", assembler);
   49|   203M|        for (i = 0; i < size; i++) {
  ------------------
  |  Branch (49:21): [True: 203M, False: 6.95k]
  ------------------
   50|   203M|            fprintf(outfile, "%02x ", encode[i]);
   51|   203M|        }
   52|  6.95k|        fprintf(outfile, "\n");
   53|  6.95k|        fprintf(outfile, "Compiled: %lu bytes, statements: %lu\n", size, count);
   54|  6.95k|    }
   55|       |
   56|  20.9k|    free(assembler);
   57|       |    // NOTE: free encode after usage to avoid leaking memory
   58|  20.9k|    if (encode != NULL) {
  ------------------
  |  Branch (58:9): [True: 6.95k, False: 14.0k]
  ------------------
   59|  6.95k|        ks_free(encode);
   60|  6.95k|    }
   61|       |
   62|       |    // close Keystone instance when done
   63|  20.9k|    ks_close(ks);
   64|       |
   65|  20.9k|    return 0;
   66|  20.9k|}

