diff --git a/llvm/include/llvm/MC/MCAssembler.h b/llvm/include/llvm/MC/MCAssembler.h index 1015992cedf29..6b0d1b202e8c2 100644 --- a/llvm/include/llvm/MC/MCAssembler.h +++ b/llvm/include/llvm/MC/MCAssembler.h @@ -85,11 +85,6 @@ class MCAssembler { // refactoring too. mutable SmallPtrSet ThumbFuncs; - /// The bundle alignment size currently set in the assembler. - /// - /// By default it's 0, which means bundling is disabled. - unsigned BundleAlignSize = 0; - /// Evaluate a fixup to a relocatable expression and the value which should be /// placed into the fixup. /// @@ -143,8 +138,6 @@ class MCAssembler { /// Compute the effective fragment size. LLVM_ABI uint64_t computeFragmentSize(const MCFragment &F) const; - LLVM_ABI void layoutBundle(MCFragment *Prev, MCFragment *F) const; - // Get the offset of the given fragment inside its containing section. uint64_t getFragmentOffset(const MCFragment &F) const { return F.Offset; } @@ -203,16 +196,6 @@ class MCAssembler { bool getRelaxAll() const { return RelaxAll; } void setRelaxAll(bool Value) { RelaxAll = Value; } - bool isBundlingEnabled() const { return BundleAlignSize != 0; } - - unsigned getBundleAlignSize() const { return BundleAlignSize; } - - void setBundleAlignSize(unsigned Size) { - assert((Size == 0 || !(Size & (Size - 1))) && - "Expect a power-of-two bundle align size"); - BundleAlignSize = Size; - } - const_iterator begin() const { return Sections.begin(); } const_iterator end() const { return Sections.end(); } @@ -226,12 +209,6 @@ class MCAssembler { LLVM_ABI bool registerSection(MCSection &Section); LLVM_ABI bool registerSymbol(const MCSymbol &Symbol); - /// Write the necessary bundle padding to \p OS. - /// Expects a fragment \p F containing instructions and its size \p FSize. - LLVM_ABI void writeFragmentPadding(raw_ostream &OS, - const MCEncodedFragment &F, - uint64_t FSize) const; - LLVM_ABI void reportError(SMLoc L, const Twine &Msg) const; // Record pending errors during layout iteration, as they may go away once the // layout is finalized. diff --git a/llvm/include/llvm/MC/MCELFStreamer.h b/llvm/include/llvm/MC/MCELFStreamer.h index fa0b5cbde71d9..cf931e99acce1 100644 --- a/llvm/include/llvm/MC/MCELFStreamer.h +++ b/llvm/include/llvm/MC/MCELFStreamer.h @@ -65,13 +65,8 @@ class MCELFStreamer : public MCObjectStreamer { void emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, Align ByteAlignment) override; - void emitValueImpl(const MCExpr *Value, unsigned Size, - SMLoc Loc = SMLoc()) override; - void emitIdent(StringRef IdentString) override; - void emitValueToAlignment(Align, int64_t, uint8_t, unsigned) override; - void emitCGProfileEntry(const MCSymbolRefExpr *From, const MCSymbolRefExpr *To, uint64_t Count) override; @@ -79,10 +74,6 @@ class MCELFStreamer : public MCObjectStreamer { // target-specific code. void finishImpl() final; - void emitBundleAlignMode(Align Alignment) override; - void emitBundleLock(bool AlignToEnd) override; - void emitBundleUnlock() override; - /// ELF object attributes section emission support struct AttributeItem { // This structure holds all attributes, accounting for their string / @@ -151,9 +142,6 @@ class MCELFStreamer : public MCObjectStreamer { } private: - bool isBundleLocked() const; - void emitInstToData(const MCInst &Inst, const MCSubtargetInfo &) override; - void finalizeCGProfileEntry(const MCSymbolRefExpr *&S, uint64_t Offset); void finalizeCGProfile(); diff --git a/llvm/include/llvm/MC/MCObjectStreamer.h b/llvm/include/llvm/MC/MCObjectStreamer.h index 2b42507d66920..5990d70a076f5 100644 --- a/llvm/include/llvm/MC/MCObjectStreamer.h +++ b/llvm/include/llvm/MC/MCObjectStreamer.h @@ -59,7 +59,7 @@ class MCObjectStreamer : public MCStreamer { DenseMap> pendingAssignments; - virtual void emitInstToData(const MCInst &Inst, const MCSubtargetInfo &); + void emitInstToData(const MCInst &Inst, const MCSubtargetInfo &); void emitCFIStartProcImpl(MCDwarfFrameInfo &Frame) override; void emitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override; void emitInstructionImpl(const MCInst &Inst, const MCSubtargetInfo &STI); @@ -127,9 +127,6 @@ class MCObjectStreamer : public MCStreamer { /// can change its size during relaxation. void emitInstToFragment(const MCInst &Inst, const MCSubtargetInfo &); - void emitBundleAlignMode(Align Alignment) override; - void emitBundleLock(bool AlignToEnd) override; - void emitBundleUnlock() override; void emitBytes(StringRef Data) override; void emitValueToAlignment(Align Alignment, int64_t Fill = 0, uint8_t FillLen = 1, diff --git a/llvm/include/llvm/MC/MCSection.h b/llvm/include/llvm/MC/MCSection.h index 64b13972bfca1..01ce3842cd368 100644 --- a/llvm/include/llvm/MC/MCSection.h +++ b/llvm/include/llvm/MC/MCSection.h @@ -61,13 +61,6 @@ class LLVM_ABI MCSection { SV_DXContainer, }; - /// Express the state of bundle locked groups while emitting code. - enum BundleLockStateType { - NotBundleLocked, - BundleLocked, - BundleLockedAlignToEnd - }; - struct iterator { MCFragment *F = nullptr; iterator() = default; @@ -94,16 +87,6 @@ class LLVM_ABI MCSection { /// The section index in the assemblers section list. unsigned Ordinal = 0; - /// Keeping track of bundle-locked state. - BundleLockStateType BundleLockState = NotBundleLocked; - - /// Current nesting depth of bundle_lock directives. - unsigned BundleLockNestingDepth = 0; - - /// We've seen a bundle_lock directive but not its first instruction - /// yet. - bool BundleGroupBeforeFirstInst : 1; - /// Whether this section has had instructions emitted into it. bool HasInstructions : 1; @@ -169,17 +152,6 @@ class LLVM_ABI MCSection { unsigned getOrdinal() const { return Ordinal; } void setOrdinal(unsigned Value) { Ordinal = Value; } - BundleLockStateType getBundleLockState() const { return BundleLockState; } - void setBundleLockState(BundleLockStateType NewState); - bool isBundleLocked() const { return BundleLockState != NotBundleLocked; } - - bool isBundleGroupBeforeFirstInst() const { - return BundleGroupBeforeFirstInst; - } - void setBundleGroupBeforeFirstInst(bool IsFirst) { - BundleGroupBeforeFirstInst = IsFirst; - } - bool hasInstructions() const { return HasInstructions; } void setHasInstructions(bool Value) { HasInstructions = Value; } @@ -259,7 +231,6 @@ class MCFragment { /// /// MCEncodedFragment bool HasInstructions : 1; - bool AlignToBundleEnd : 1; /// MCDataFragment bool LinkerRelaxable : 1; /// MCRelaxableFragment: x86-specific @@ -297,7 +268,6 @@ class MCFragment { /// Interface implemented by fragments that contain encoded instructions and/or /// data. class MCEncodedFragment : public MCFragment { - uint8_t BundlePadding = 0; uint32_t ContentStart = 0; uint32_t ContentEnd = 0; uint32_t FixupStart = 0; @@ -329,21 +299,6 @@ class MCEncodedFragment : public MCFragment { } } - /// Should this fragment be placed at the end of an aligned bundle? - bool alignToBundleEnd() const { return AlignToBundleEnd; } - void setAlignToBundleEnd(bool V) { AlignToBundleEnd = V; } - - /// Get the padding size that must be inserted before this fragment. - /// Used for bundling. By default, no padding is inserted. - /// Note that padding size is restricted to 8 bits. This is an optimization - /// to reduce the amount of space used for each fragment. In practice, larger - /// padding should never be required. - uint8_t getBundlePadding() const { return BundlePadding; } - - /// Set the padding size for this fragment. By default it's a no-op, - /// and only some fragments have a meaningful implementation. - void setBundlePadding(uint8_t N) { BundlePadding = N; } - /// Retrieve the MCSubTargetInfo in effect when the instruction was encoded. /// Guaranteed to be non-null if hasInstructions() == true const MCSubtargetInfo *getSubtargetInfo() const { return STI; } diff --git a/llvm/include/llvm/MC/MCStreamer.h b/llvm/include/llvm/MC/MCStreamer.h index 4e052ecfe0e86..1f7c8b57540a7 100644 --- a/llvm/include/llvm/MC/MCStreamer.h +++ b/llvm/include/llvm/MC/MCStreamer.h @@ -1068,19 +1068,6 @@ class LLVM_ABI MCStreamer { const MCPseudoProbeInlineStack &InlineStack, MCSymbol *FnSym); - /// Set the bundle alignment mode from now on in the section. - /// The value 1 means turn the bundle alignment off. - virtual void emitBundleAlignMode(Align Alignment); - - /// The following instructions are a bundle-locked group. - /// - /// \param AlignToEnd - If true, the bundle-locked group will be aligned to - /// the end of a bundle. - virtual void emitBundleLock(bool AlignToEnd); - - /// Ends a bundle-locked group. - virtual void emitBundleUnlock(); - /// If this file is backed by a assembly streamer, this dumps the /// specified string in the output .s file. This capability is indicated by /// the hasRawTextSupport() predicate. By default this aborts. diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp index 28b6f28a2e55b..3a330dbfec342 100644 --- a/llvm/lib/MC/MCAsmStreamer.cpp +++ b/llvm/lib/MC/MCAsmStreamer.cpp @@ -407,10 +407,6 @@ class MCAsmStreamer final : public MCStreamer { const MCPseudoProbeInlineStack &InlineStack, MCSymbol *FnSym) override; - void emitBundleAlignMode(Align Alignment) override; - void emitBundleLock(bool AlignToEnd) override; - void emitBundleUnlock() override; - std::optional> emitRelocDirective(const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc, const MCSubtargetInfo &STI) override; @@ -2472,23 +2468,6 @@ void MCAsmStreamer::emitPseudoProbe(uint64_t Guid, uint64_t Index, EmitEOL(); } -void MCAsmStreamer::emitBundleAlignMode(Align Alignment) { - OS << "\t.bundle_align_mode " << Log2(Alignment); - EmitEOL(); -} - -void MCAsmStreamer::emitBundleLock(bool AlignToEnd) { - OS << "\t.bundle_lock"; - if (AlignToEnd) - OS << " align_to_end"; - EmitEOL(); -} - -void MCAsmStreamer::emitBundleUnlock() { - OS << "\t.bundle_unlock"; - EmitEOL(); -} - std::optional> MCAsmStreamer::emitRelocDirective(const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc, diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp index fd8a8c3a79c9f..7f01e272a323e 100644 --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -94,7 +94,6 @@ void MCAssembler::reset() { Sections.clear(); Symbols.clear(); ThumbFuncs.clear(); - BundleAlignSize = 0; // reset objects owned by us if (getBackendPtr()) @@ -282,87 +281,6 @@ uint64_t MCAssembler::computeFragmentSize(const MCFragment &F) const { llvm_unreachable("invalid fragment kind"); } -// Compute the amount of padding required before the fragment \p F to -// obey bundling restrictions, where \p FOffset is the fragment's offset in -// its section and \p FSize is the fragment's size. -static uint64_t computeBundlePadding(unsigned BundleSize, - const MCEncodedFragment *F, - uint64_t FOffset, uint64_t FSize) { - uint64_t OffsetInBundle = FOffset & (BundleSize - 1); - uint64_t EndOfFragment = OffsetInBundle + FSize; - - // There are two kinds of bundling restrictions: - // - // 1) For alignToBundleEnd(), add padding to ensure that the fragment will - // *end* on a bundle boundary. - // 2) Otherwise, check if the fragment would cross a bundle boundary. If it - // would, add padding until the end of the bundle so that the fragment - // will start in a new one. - if (F->alignToBundleEnd()) { - // Three possibilities here: - // - // A) The fragment just happens to end at a bundle boundary, so we're good. - // B) The fragment ends before the current bundle boundary: pad it just - // enough to reach the boundary. - // C) The fragment ends after the current bundle boundary: pad it until it - // reaches the end of the next bundle boundary. - // - // Note: this code could be made shorter with some modulo trickery, but it's - // intentionally kept in its more explicit form for simplicity. - if (EndOfFragment == BundleSize) - return 0; - else if (EndOfFragment < BundleSize) - return BundleSize - EndOfFragment; - else { // EndOfFragment > BundleSize - return 2 * BundleSize - EndOfFragment; - } - } else if (OffsetInBundle > 0 && EndOfFragment > BundleSize) - return BundleSize - OffsetInBundle; - else - return 0; -} - -void MCAssembler::layoutBundle(MCFragment *Prev, MCFragment *F) const { - // If bundling is enabled and this fragment has instructions in it, it has to - // obey the bundling restrictions. With padding, we'll have: - // - // - // BundlePadding - // ||| - // ------------------------------------- - // Prev |##########| F | - // ------------------------------------- - // ^ - // | - // F->Offset - // - // The fragment's offset will point to after the padding, and its computed - // size won't include the padding. - // - // ".align N" is an example of a directive that introduces multiple - // fragments. We could add a special case to handle ".align N" by emitting - // within-fragment padding (which would produce less padding when N is less - // than the bundle size), but for now we don't. - // - assert(isa(F) && - "Only MCEncodedFragment implementations have instructions"); - MCEncodedFragment *EF = cast(F); - uint64_t FSize = computeFragmentSize(*EF); - - if (FSize > getBundleAlignSize()) - report_fatal_error("Fragment can't be larger than a bundle size"); - - uint64_t RequiredBundlePadding = - computeBundlePadding(getBundleAlignSize(), EF, EF->Offset, FSize); - if (RequiredBundlePadding > UINT8_MAX) - report_fatal_error("Padding cannot exceed 255 bytes"); - EF->setBundlePadding(static_cast(RequiredBundlePadding)); - EF->Offset += RequiredBundlePadding; - if (auto *DF = dyn_cast_or_null(Prev)) - if (DF->getContents().empty()) - DF->Offset = EF->Offset; -} - // Simple getSymbolOffset helper for the non-variable case. static bool getLabelOffset(const MCAssembler &Asm, const MCSymbol &S, bool ReportError, uint64_t &Val) { @@ -480,41 +398,6 @@ bool MCAssembler::registerSymbol(const MCSymbol &Symbol) { return Changed; } -void MCAssembler::writeFragmentPadding(raw_ostream &OS, - const MCEncodedFragment &EF, - uint64_t FSize) const { - assert(getBackendPtr() && "Expected assembler backend"); - // Should NOP padding be written out before this fragment? - unsigned BundlePadding = EF.getBundlePadding(); - if (BundlePadding > 0) { - assert(isBundlingEnabled() && - "Writing bundle padding with disabled bundling"); - assert(EF.hasInstructions() && - "Writing bundle padding for a fragment without instructions"); - - unsigned TotalLength = BundlePadding + static_cast(FSize); - const MCSubtargetInfo *STI = EF.getSubtargetInfo(); - if (EF.alignToBundleEnd() && TotalLength > getBundleAlignSize()) { - // If the padding itself crosses a bundle boundary, it must be emitted - // in 2 pieces, since even nop instructions must not cross boundaries. - // v--------------v <- BundleAlignSize - // v---------v <- BundlePadding - // ---------------------------- - // | Prev |####|####| F | - // ---------------------------- - // ^-------------------^ <- TotalLength - unsigned DistanceToBoundary = TotalLength - getBundleAlignSize(); - if (!getBackend().writeNopData(OS, DistanceToBoundary, STI)) - report_fatal_error("unable to write NOP sequence of " + - Twine(DistanceToBoundary) + " bytes"); - BundlePadding -= DistanceToBoundary; - } - if (!getBackend().writeNopData(OS, BundlePadding, STI)) - report_fatal_error("unable to write NOP sequence of " + - Twine(BundlePadding) + " bytes"); - } -} - /// Write the fragment \p F to the output file. static void writeFragment(raw_ostream &OS, const MCAssembler &Asm, const MCFragment &F) { @@ -523,9 +406,6 @@ static void writeFragment(raw_ostream &OS, const MCAssembler &Asm, llvm::endianness Endian = Asm.getBackend().Endian; - if (const MCEncodedFragment *EF = dyn_cast(&F)) - Asm.writeFragmentPadding(OS, *EF, FragmentSize); - // This variable (and its dummy usage) is to participate in the assert at // the end of the function. uint64_t Start = OS.tell(); @@ -1101,17 +981,9 @@ bool MCAssembler::relaxFragment(MCFragment &F) { } void MCAssembler::layoutSection(MCSection &Sec) { - MCFragment *Prev = nullptr; uint64_t Offset = 0; for (MCFragment &F : Sec) { F.Offset = Offset; - if (LLVM_UNLIKELY(isBundlingEnabled())) { - if (F.hasInstructions()) { - layoutBundle(Prev, &F); - Offset = F.Offset; - } - Prev = &F; - } Offset += computeFragmentSize(F); } } diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index 4bc3f4642ea02..ecc77c6705267 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/lib/MC/MCELFStreamer.cpp @@ -48,10 +48,6 @@ ELFObjectWriter &MCELFStreamer::getWriter() { return static_cast(getAssembler().getWriter()); } -bool MCELFStreamer::isBundleLocked() const { - return getCurrentSectionOnly()->isBundleLocked(); -} - void MCELFStreamer::initSections(bool NoExecStack, const MCSubtargetInfo &STI) { MCContext &Ctx = getContext(); switchSection(Ctx.getObjectFileInfo()->getTextSection()); @@ -83,23 +79,8 @@ void MCELFStreamer::emitLabelAtPos(MCSymbol *S, SMLoc Loc, MCDataFragment &F, Symbol->setType(ELF::STT_TLS); } -// If bundle alignment is used and there are any instructions in the section, it -// needs to be aligned to at least the bundle size. -static void setSectionAlignmentForBundling(const MCAssembler &Assembler, - MCSection *Section) { - if (Assembler.isBundlingEnabled() && Section->hasInstructions()) - Section->ensureMinAlignment(Align(Assembler.getBundleAlignSize())); -} - void MCELFStreamer::changeSection(MCSection *Section, uint32_t Subsection) { MCAssembler &Asm = getAssembler(); - if (auto *F = getCurrentFragment()) { - if (isBundleLocked()) - report_fatal_error("Unterminated .bundle_lock when changing a section"); - - // Ensure the previous section gets aligned if necessary. - setSectionAlignmentForBundling(Asm, F->getParent()); - } auto *SectionELF = static_cast(Section); const MCSymbol *Grp = SectionELF->getGroup(); if (Grp) @@ -313,22 +294,6 @@ void MCELFStreamer::emitLocalCommonSymbol(MCSymbol *S, uint64_t Size, emitCommonSymbol(Symbol, Size, ByteAlignment); } -void MCELFStreamer::emitValueImpl(const MCExpr *Value, unsigned Size, - SMLoc Loc) { - if (isBundleLocked()) - report_fatal_error("Emitting values inside a locked bundle is forbidden"); - MCObjectStreamer::emitValueImpl(Value, Size, Loc); -} - -void MCELFStreamer::emitValueToAlignment(Align Alignment, int64_t Value, - uint8_t ValueSize, - unsigned MaxBytesToEmit) { - if (isBundleLocked()) - report_fatal_error("Emitting values inside a locked bundle is forbidden"); - MCObjectStreamer::emitValueToAlignment(Alignment, Value, ValueSize, - MaxBytesToEmit); -} - void MCELFStreamer::emitCGProfileEntry(const MCSymbolRefExpr *From, const MCSymbolRefExpr *To, uint64_t Count) { @@ -391,117 +356,6 @@ void MCELFStreamer::finalizeCGProfile() { popSection(); } -// A fragment can only have one Subtarget, and when bundling is enabled we -// sometimes need to use the same fragment. We give an error if there -// are conflicting Subtargets. -static void CheckBundleSubtargets(const MCSubtargetInfo *OldSTI, - const MCSubtargetInfo *NewSTI) { - if (OldSTI && NewSTI && OldSTI != NewSTI) - report_fatal_error("A Bundle can only have one Subtarget."); -} - -void MCELFStreamer::emitInstToData(const MCInst &Inst, - const MCSubtargetInfo &STI) { - MCAssembler &Assembler = getAssembler(); - - // There are several possibilities here: - // - // If bundling is disabled, append the encoded instruction to the current data - // fragment (or create a new such fragment if the current fragment is not a - // data fragment, or the Subtarget has changed). - // - // If bundling is enabled: - // - If we're not in a bundle-locked group, emit the instruction into a - // fragment of its own. - // - If we're in a bundle-locked group, append the instruction to the current - // data fragment because we want all the instructions in a group to get into - // the same fragment. Be careful not to do that for the first instruction in - // the group, though. - MCDataFragment *DF; - - if (Assembler.isBundlingEnabled()) { - MCSection &Sec = *getCurrentSectionOnly(); - if (isBundleLocked() && !Sec.isBundleGroupBeforeFirstInst()) { - // If we are bundle-locked, we re-use the current fragment. - // The bundle-locking directive ensures this is a new data fragment. - DF = cast(getCurrentFragment()); - CheckBundleSubtargets(DF->getSubtargetInfo(), &STI); - } else { - DF = getContext().allocFragment(); - insert(DF); - } - if (Sec.getBundleLockState() == MCSection::BundleLockedAlignToEnd) { - // If this fragment is for a group marked "align_to_end", set a flag - // in the fragment. This can happen after the fragment has already been - // created if there are nested bundle_align groups and an inner one - // is the one marked align_to_end. - DF->setAlignToBundleEnd(true); - } - - // We're now emitting an instruction in a bundle group, so this flag has - // to be turned off. - Sec.setBundleGroupBeforeFirstInst(false); - } else { - DF = getOrCreateDataFragment(&STI); - } - - // Emit instruction directly into data fragment. - size_t FixupStartIndex = DF->getFixups().size(); - size_t CodeOffset = DF->getContents().size(); - SmallVector Fixups; - Assembler.getEmitter().encodeInstruction(Inst, DF->getContentsForAppending(), - Fixups, STI); - DF->doneAppending(); - if (!Fixups.empty()) - DF->appendFixups(Fixups); - - for (auto &Fixup : MutableArrayRef(DF->getFixups()).slice(FixupStartIndex)) { - Fixup.setOffset(Fixup.getOffset() + CodeOffset); - if (Fixup.isLinkerRelaxable()) { - DF->setLinkerRelaxable(); - getCurrentSectionOnly()->setLinkerRelaxable(); - } - } - - DF->setHasInstructions(STI); -} - -void MCELFStreamer::emitBundleAlignMode(Align Alignment) { - assert(Log2(Alignment) <= 30 && "Invalid bundle alignment"); - MCAssembler &Assembler = getAssembler(); - if (Alignment > 1 && (Assembler.getBundleAlignSize() == 0 || - Assembler.getBundleAlignSize() == Alignment.value())) - Assembler.setBundleAlignSize(Alignment.value()); - else - report_fatal_error(".bundle_align_mode cannot be changed once set"); -} - -void MCELFStreamer::emitBundleLock(bool AlignToEnd) { - MCSection &Sec = *getCurrentSectionOnly(); - - if (!getAssembler().isBundlingEnabled()) - report_fatal_error(".bundle_lock forbidden when bundling is disabled"); - - if (!isBundleLocked()) - Sec.setBundleGroupBeforeFirstInst(true); - - Sec.setBundleLockState(AlignToEnd ? MCSection::BundleLockedAlignToEnd - : MCSection::BundleLocked); -} - -void MCELFStreamer::emitBundleUnlock() { - MCSection &Sec = *getCurrentSectionOnly(); - - if (!getAssembler().isBundlingEnabled()) - report_fatal_error(".bundle_unlock forbidden when bundling is disabled"); - else if (!isBundleLocked()) - report_fatal_error(".bundle_unlock without matching lock"); - else if (Sec.isBundleGroupBeforeFirstInst()) - report_fatal_error("Empty bundle-locked group is forbidden"); - - Sec.setBundleLockState(MCSection::NotBundleLocked); -} - void MCELFStreamer::finishImpl() { // Emit the .gnu attributes section if any attributes have been added. if (!GNUAttributes.empty()) { @@ -510,10 +364,6 @@ void MCELFStreamer::finishImpl() { DummyAttributeSection, GNUAttributes); } - // Ensure the last section gets aligned if necessary. - if (MCFragment *F = getCurrentFragment()) - setSectionAlignmentForBundling(getAssembler(), F->getParent()); - finalizeCGProfile(); emitFrames(nullptr); diff --git a/llvm/lib/MC/MCFragment.cpp b/llvm/lib/MC/MCFragment.cpp index c59fabe5df1b9..c62abac2793e4 100644 --- a/llvm/lib/MC/MCFragment.cpp +++ b/llvm/lib/MC/MCFragment.cpp @@ -28,8 +28,8 @@ static_assert(std::is_trivially_destructible_v, "fragment classes must be trivially destructible"); MCFragment::MCFragment(FragmentType Kind, bool HasInstructions) - : Kind(Kind), HasInstructions(HasInstructions), AlignToBundleEnd(false), - LinkerRelaxable(false), AllowAutoPadding(false) {} + : Kind(Kind), HasInstructions(HasInstructions), LinkerRelaxable(false), + AllowAutoPadding(false) {} const MCSymbol *MCFragment::getAtom() const { return cast(Parent)->getAtom(LayoutOrder); @@ -59,10 +59,6 @@ LLVM_DUMP_METHOD void MCFragment::dump() const { // clang-format on } - if (const auto *EF = dyn_cast(this)) - if (auto Pad = static_cast(EF->getBundlePadding())) - OS << " BundlePadding:" << Pad; - auto printFixups = [&](llvm::ArrayRef Fixups) { if (Fixups.empty()) return; diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp index 44a82f75576b6..4ab5e3e5d4b47 100644 --- a/llvm/lib/MC/MCObjectStreamer.cpp +++ b/llvm/lib/MC/MCObjectStreamer.cpp @@ -141,10 +141,6 @@ static bool canReuseDataFragment(const MCDataFragment &F, // instruction cannot be resolved at assemble-time. if (F.isLinkerRelaxable()) return false; - // When bundling is enabled, we don't want to add data to a fragment that - // already has instructions (see MCELFStreamer::emitInstToData for details) - if (Assembler.isBundlingEnabled()) - return false; // If the subtarget is changed mid fragment we start a new fragment to record // the new STI. return !STI || F.getSubtargetInfo() == STI; @@ -359,13 +355,8 @@ void MCObjectStreamer::emitInstructionImpl(const MCInst &Inst, return; } - // Otherwise, relax and emit it as data if either: - // - The RelaxAll flag was passed - // - Bundling is enabled and this instruction is inside a bundle-locked - // group. We want to emit all such instructions into the same data - // fragment. - if (Assembler.getRelaxAll() || - (Assembler.isBundlingEnabled() && Sec->isBundleLocked())) { + // Otherwise, relax and emit it as data if RelaxAll is specified. + if (Assembler.getRelaxAll()) { MCInst Relaxed = Inst; while (Backend.mayNeedRelaxation(Relaxed.getOpcode(), Relaxed.getOperands(), STI)) @@ -380,18 +371,27 @@ void MCObjectStreamer::emitInstructionImpl(const MCInst &Inst, void MCObjectStreamer::emitInstToData(const MCInst &Inst, const MCSubtargetInfo &STI) { - MCDataFragment *DF = getOrCreateDataFragment(); + MCDataFragment *F = getOrCreateDataFragment(&STI); + + // Append the instruction to the data fragment. + size_t FixupStartIndex = F->getFixups().size(); + size_t CodeOffset = F->getContents().size(); SmallVector Fixups; - SmallString<256> Code; - getAssembler().getEmitter().encodeInstruction(Inst, Code, Fixups, STI); + getAssembler().getEmitter().encodeInstruction( + Inst, F->getContentsForAppending(), Fixups, STI); + F->doneAppending(); + if (!Fixups.empty()) + F->appendFixups(Fixups); - auto CodeOffset = DF->getContents().size(); - for (MCFixup &Fixup : Fixups) + for (auto &Fixup : MutableArrayRef(F->getFixups()).slice(FixupStartIndex)) { Fixup.setOffset(Fixup.getOffset() + CodeOffset); - if (!Fixups.empty()) - DF->appendFixups(Fixups); - DF->setHasInstructions(STI); - DF->appendContents(Code); + if (Fixup.isLinkerRelaxable()) { + F->setLinkerRelaxable(); + getCurrentSectionOnly()->setLinkerRelaxable(); + } + } + + F->setHasInstructions(STI); } void MCObjectStreamer::emitInstToFragment(const MCInst &Inst, @@ -410,23 +410,6 @@ void MCObjectStreamer::emitInstToFragment(const MCInst &Inst, IF->appendFixups(Fixups); } -#ifndef NDEBUG -static const char *const BundlingNotImplementedMsg = - "Aligned bundling is not implemented for this object format"; -#endif - -void MCObjectStreamer::emitBundleAlignMode(Align Alignment) { - llvm_unreachable(BundlingNotImplementedMsg); -} - -void MCObjectStreamer::emitBundleLock(bool AlignToEnd) { - llvm_unreachable(BundlingNotImplementedMsg); -} - -void MCObjectStreamer::emitBundleUnlock() { - llvm_unreachable(BundlingNotImplementedMsg); -} - void MCObjectStreamer::emitDwarfLocDirective(unsigned FileNo, unsigned Line, unsigned Column, unsigned Flags, unsigned Isa, diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 9fd6c05a846db..a36b2dea70ccf 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -421,9 +421,6 @@ class AsmParser : public MCAsmParser { DK_ORG, DK_FILL, DK_ENDR, - DK_BUNDLE_ALIGN_MODE, - DK_BUNDLE_LOCK, - DK_BUNDLE_UNLOCK, DK_ZERO, DK_EXTERN, DK_GLOBL, @@ -624,12 +621,6 @@ class AsmParser : public MCAsmParser { bool parseDirectiveMacrosOnOff(StringRef Directive); // alternate macro mode directives bool parseDirectiveAltmacro(StringRef Directive); - // ".bundle_align_mode" - bool parseDirectiveBundleAlignMode(); - // ".bundle_lock" - bool parseDirectiveBundleLock(); - // ".bundle_unlock" - bool parseDirectiveBundleUnlock(); // ".space", ".skip" bool parseDirectiveSpace(StringRef IDVal); @@ -2062,12 +2053,6 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info, return parseDirectiveIrpc(IDLoc); case DK_ENDR: return parseDirectiveEndr(IDLoc); - case DK_BUNDLE_ALIGN_MODE: - return parseDirectiveBundleAlignMode(); - case DK_BUNDLE_LOCK: - return parseDirectiveBundleLock(); - case DK_BUNDLE_UNLOCK: - return parseDirectiveBundleUnlock(); case DK_SLEB128: return parseDirectiveLEB128(true); case DK_ULEB128: @@ -4779,56 +4764,6 @@ bool AsmParser::parseDirectivePurgeMacro(SMLoc DirectiveLoc) { return false; } -/// parseDirectiveBundleAlignMode -/// ::= {.bundle_align_mode} expression -bool AsmParser::parseDirectiveBundleAlignMode() { - // Expect a single argument: an expression that evaluates to a constant - // in the inclusive range 0-30. - SMLoc ExprLoc = getLexer().getLoc(); - int64_t AlignSizePow2; - if (checkForValidSection() || parseAbsoluteExpression(AlignSizePow2) || - parseEOL() || - check(AlignSizePow2 < 0 || AlignSizePow2 > 30, ExprLoc, - "invalid bundle alignment size (expected between 0 and 30)")) - return true; - - getStreamer().emitBundleAlignMode(Align(1ULL << AlignSizePow2)); - return false; -} - -/// parseDirectiveBundleLock -/// ::= {.bundle_lock} [align_to_end] -bool AsmParser::parseDirectiveBundleLock() { - if (checkForValidSection()) - return true; - bool AlignToEnd = false; - - StringRef Option; - SMLoc Loc = getTok().getLoc(); - const char *kInvalidOptionError = - "invalid option for '.bundle_lock' directive"; - - if (!parseOptionalToken(AsmToken::EndOfStatement)) { - if (check(parseIdentifier(Option), Loc, kInvalidOptionError) || - check(Option != "align_to_end", Loc, kInvalidOptionError) || parseEOL()) - return true; - AlignToEnd = true; - } - - getStreamer().emitBundleLock(AlignToEnd); - return false; -} - -/// parseDirectiveBundleLock -/// ::= {.bundle_lock} -bool AsmParser::parseDirectiveBundleUnlock() { - if (checkForValidSection() || parseEOL()) - return true; - - getStreamer().emitBundleUnlock(); - return false; -} - /// parseDirectiveSpace /// ::= (.skip | .space) expression [ , expression ] bool AsmParser::parseDirectiveSpace(StringRef IDVal) { @@ -5477,9 +5412,6 @@ void AsmParser::initializeDirectiveKindMap() { DirectiveKindMap[".irp"] = DK_IRP; DirectiveKindMap[".irpc"] = DK_IRPC; DirectiveKindMap[".endr"] = DK_ENDR; - DirectiveKindMap[".bundle_align_mode"] = DK_BUNDLE_ALIGN_MODE; - DirectiveKindMap[".bundle_lock"] = DK_BUNDLE_LOCK; - DirectiveKindMap[".bundle_unlock"] = DK_BUNDLE_UNLOCK; DirectiveKindMap[".if"] = DK_IF; DirectiveKindMap[".ifeq"] = DK_IFEQ; DirectiveKindMap[".ifge"] = DK_IFGE; diff --git a/llvm/lib/MC/MCSection.cpp b/llvm/lib/MC/MCSection.cpp index beb472b7c7deb..f1c81e90a0fe5 100644 --- a/llvm/lib/MC/MCSection.cpp +++ b/llvm/lib/MC/MCSection.cpp @@ -20,9 +20,8 @@ using namespace llvm; MCSection::MCSection(SectionVariant V, StringRef Name, bool IsText, bool IsVirtual, MCSymbol *Begin) - : Begin(Begin), BundleGroupBeforeFirstInst(false), HasInstructions(false), - IsRegistered(false), IsText(IsText), IsVirtual(IsVirtual), - LinkerRelaxable(false), Name(Name), Variant(V) { + : Begin(Begin), HasInstructions(false), IsRegistered(false), IsText(IsText), + IsVirtual(IsVirtual), LinkerRelaxable(false), Name(Name), Variant(V) { // The initial subsection number is 0. Create a fragment list. CurFragList = &Subsections.emplace_back(0u, FragList{}).second; } @@ -35,25 +34,6 @@ MCSymbol *MCSection::getEndSymbol(MCContext &Ctx) { bool MCSection::hasEnded() const { return End && End->isInSection(); } -void MCSection::setBundleLockState(BundleLockStateType NewState) { - if (NewState == NotBundleLocked) { - if (BundleLockNestingDepth == 0) { - report_fatal_error("Mismatched bundle_lock/unlock directives"); - } - if (--BundleLockNestingDepth == 0) { - BundleLockState = NotBundleLocked; - } - return; - } - - // If any of the directives is an align_to_end directive, the whole nested - // group is align_to_end. So don't downgrade from align_to_end to just locked. - if (BundleLockState != BundleLockedAlignToEnd) { - BundleLockState = NewState; - } - ++BundleLockNestingDepth; -} - StringRef MCSection::getVirtualSectionKind() const { return "virtual"; } #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 6d2fb41760044..d814ab8880500 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -1333,10 +1333,7 @@ void MCStreamer::emitCodeAlignment(Align Alignment, const MCSubtargetInfo *STI, unsigned MaxBytesToEmit) {} void MCStreamer::emitValueToOffset(const MCExpr *Offset, unsigned char Value, SMLoc Loc) {} -void MCStreamer::emitBundleAlignMode(Align Alignment) {} -void MCStreamer::emitBundleLock(bool AlignToEnd) {} void MCStreamer::finishImpl() {} -void MCStreamer::emitBundleUnlock() {} bool MCStreamer::popSection() { if (SectionStack.size() <= 1) diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp index 3410726c8e553..1c2296c0d5141 100644 --- a/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp +++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp @@ -112,10 +112,8 @@ class MipsNaClELFStreamer : public MipsELFStreamer { void sandboxIndirectJump(const MCInst &MI, const MCSubtargetInfo &STI) { MCRegister AddrReg = MI.getOperand(0).getReg(); - emitBundleLock(false); emitMask(AddrReg, IndirectBranchMaskReg, STI); MipsELFStreamer::emitInstruction(MI, STI); - emitBundleUnlock(); } // Sandbox memory access or SP change. Insert mask operation before and/or @@ -123,7 +121,6 @@ class MipsNaClELFStreamer : public MipsELFStreamer { void sandboxLoadStoreStackChange(const MCInst &MI, unsigned AddrIdx, const MCSubtargetInfo &STI, bool MaskBefore, bool MaskAfter) { - emitBundleLock(false); if (MaskBefore) { // Sandbox memory access. MCRegister BaseReg = MI.getOperand(AddrIdx).getReg(); @@ -136,7 +133,6 @@ class MipsNaClELFStreamer : public MipsELFStreamer { assert((Mips::SP == SPReg) && "Unexpected stack-pointer register."); emitMask(SPReg, LoadStoreStackMaskReg, STI); } - emitBundleUnlock(); } public: @@ -180,7 +176,6 @@ class MipsNaClELFStreamer : public MipsELFStreamer { report_fatal_error("Dangerous instruction in branch delay slot!"); // Start the sandboxing sequence by emitting call. - emitBundleLock(true); if (IsIndirectCall) { MCRegister TargetReg = Inst.getOperand(1).getReg(); emitMask(TargetReg, IndirectBranchMaskReg, STI); @@ -192,7 +187,6 @@ class MipsNaClELFStreamer : public MipsELFStreamer { if (PendingCall) { // Finish the sandboxing sequence by emitting branch delay. MipsELFStreamer::emitInstruction(Inst, STI); - emitBundleUnlock(); PendingCall = false; return; } @@ -265,9 +259,6 @@ createMipsNaClELFStreamer(MCContext &Context, std::unique_ptr TAB, MipsNaClELFStreamer *S = new MipsNaClELFStreamer( Context, std::move(TAB), std::move(OW), std::move(Emitter)); - // Set bundle-alignment as required by the NaCl ABI for the target. - S->emitBundleAlignMode(MIPS_NACL_BUNDLE_ALIGN); - return S; } diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp index ff2df3d5b192a..30d1b96455b1a 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp @@ -468,10 +468,6 @@ bool X86AsmBackend::canPadBranches(MCObjectStreamer &OS) const { if (!OS.getCurrentSectionOnly()->isText()) return false; - // To be Done: Currently don't deal with Bundle cases. - if (OS.getAssembler().isBundlingEnabled()) - return false; - // Branches only need to be aligned in 32-bit or 64-bit mode. if (!(STI.hasFeature(X86::Is64Bit) || STI.hasFeature(X86::Is32Bit))) return false; diff --git a/llvm/test/MC/ARM/AlignedBundling/group-bundle-arm.s b/llvm/test/MC/ARM/AlignedBundling/group-bundle-arm.s deleted file mode 100644 index ca78f2acc2894..0000000000000 --- a/llvm/test/MC/ARM/AlignedBundling/group-bundle-arm.s +++ /dev/null @@ -1,48 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple armv7-linux-gnueabi %s -o - \ -# RUN: | llvm-objdump --no-show-raw-insn --triple=armv7 -d - | FileCheck %s - -# On ARM each instruction is 4 bytes long so padding for individual -# instructions should not be inserted. However, for bundle-locked groups -# it can be. - - .syntax unified - .text - .bundle_align_mode 4 - - bx lr - and r1, r1, r2 - and r1, r1, r2 - .bundle_lock - bx r9 - bx r8 - .bundle_unlock -# CHECK: c: nop -# CHECK-NEXT: 10: bx -# CHECK-NEXT: 14: bx - - # pow2 here - .align 4 - bx lr - .bundle_lock - bx r9 - bx r9 - bx r9 - bx r8 - .bundle_unlock -# CHECK: 20: bx -# CHECK-NEXT: 24: nop -# CHECK-NEXT: 28: nop -# CHECK-NEXT: 2c: nop -# CHECK-NEXT: 30: bx - - .align 4 -foo: - b foo - .long 3892240112 - .long 3892240112 - .long 3892240112 - .long 3892240112 - .long 3892240112 - .long 3892240112 -# CHECK: 40: b - diff --git a/llvm/test/MC/ARM/AlignedBundling/illegal-subtarget-change.s b/llvm/test/MC/ARM/AlignedBundling/illegal-subtarget-change.s deleted file mode 100644 index e831ac5c2af06..0000000000000 --- a/llvm/test/MC/ARM/AlignedBundling/illegal-subtarget-change.s +++ /dev/null @@ -1,16 +0,0 @@ -# RUN: not --crash llvm-mc -filetype=obj -triple armv7-linux-gnueabi %s -o - 2>&1 | FileCheck %s - - # We cannot switch subtargets mid-bundle - .syntax unified - .text - .bundle_align_mode 4 - .arch armv4t - bx lr - .bundle_lock - bx lr - .arch armv7a - movt r0, #0xffff - movw r0, #0xffff - .bundle_unlock - bx lr -# CHECK: LLVM ERROR: A Bundle can only have one Subtarget. diff --git a/llvm/test/MC/ARM/AlignedBundling/lit.local.cfg b/llvm/test/MC/ARM/AlignedBundling/lit.local.cfg deleted file mode 100644 index 42bf50dcc13c3..0000000000000 --- a/llvm/test/MC/ARM/AlignedBundling/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if not "X86" in config.root.targets: - config.unsupported = True diff --git a/llvm/test/MC/ARM/AlignedBundling/pad-align-to-bundle-end.s b/llvm/test/MC/ARM/AlignedBundling/pad-align-to-bundle-end.s deleted file mode 100644 index c01c8c178afeb..0000000000000 --- a/llvm/test/MC/ARM/AlignedBundling/pad-align-to-bundle-end.s +++ /dev/null @@ -1,41 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple armv7-linux-gnueabi %s -o - \ -# RUN: | llvm-objdump --no-show-raw-insn --triple=armv7 -d - | FileCheck %s - - .syntax unified - .text - .bundle_align_mode 4 - - bx lr - and r1, r1, r2 - and r1, r1, r2 - .bundle_lock align_to_end - bx r9 - .bundle_unlock -# No padding required here because bx just happens to be in the -# right offset. -# CHECK: 8: and -# CHECK-NEXT: c: bx - - bx lr - and r1, r1, r2 - .bundle_lock align_to_end - bx r9 - .bundle_unlock -# A 4-byte padding is needed here -# CHECK: 18: nop -# CHECK-NEXT: 1c: bx - - bx lr - and r1, r1, r2 - .bundle_lock align_to_end - bx r9 - bx r9 - bx r9 - .bundle_unlock -# A 12-byte padding is needed here to push the group to the end of the next -# bundle -# CHECK: 28: nop -# CHECK-NEXT: 2c: nop -# CHECK-NEXT: 30: nop -# CHECK-NEXT: 34: bx - diff --git a/llvm/test/MC/ARM/AlignedBundling/subtarget-change.s b/llvm/test/MC/ARM/AlignedBundling/subtarget-change.s deleted file mode 100644 index 5672560376d46..0000000000000 --- a/llvm/test/MC/ARM/AlignedBundling/subtarget-change.s +++ /dev/null @@ -1,33 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple armv7-linux-gnueabi %s -o - \ -# RUN: | llvm-objdump --no-print-imm-hex --no-show-raw-insn --triple=armv7 -d - | FileCheck %s - - # We can switch subtargets with .arch outside of a bundle - .syntax unified - .text - .bundle_align_mode 4 - .arch armv4t - bx lr - .bundle_lock - and r1, r1, r1 - and r1, r1, r1 - .bundle_unlock - bx lr - - # We can switch subtargets at the start of a bundle - bx lr - .bundle_lock align_to_end - .arch armv7a - movt r0, #0xffff - movw r0, #0xffff - .bundle_unlock - bx lr - -# CHECK: 0: bx lr -# CHECK-NEXT: 4: and r1, r1, r1 -# CHECK-NEXT: 8: and r1, r1, r1 -# CHECK-NEXT: c: bx lr -# CHECK-NEXT: 10: bx lr -# CHECK-NEXT: 14: nop -# CHECK-NEXT: 18: movt r0, #65535 -# CHECK-NEXT: 1c: movw r0, #65535 -# CHECK-NEXT: 20: bx lr diff --git a/llvm/test/MC/AsmParser/AArch64/directive-parse-err.s b/llvm/test/MC/AsmParser/AArch64/directive-parse-err.s index 02cdfd7829198..5e2dd4adcdf8c 100644 --- a/llvm/test/MC/AsmParser/AArch64/directive-parse-err.s +++ b/llvm/test/MC/AsmParser/AArch64/directive-parse-err.s @@ -1,5 +1,5 @@ // RUN: not llvm-mc -triple aarch64 %s 2>&1 | FileCheck %s -// RUN: not llvm-mc -triple aarch64 %s 2>&1 | grep "error:" | count 60 +// RUN: not llvm-mc -triple aarch64 %s 2>&1 | grep "error:" | count 59 // CHECK: [[#@LINE+1]]:19: error: expected newline .equ ident1, 0 $ @@ -175,11 +175,6 @@ // CHECK-NOT: :[[#@LINE+1]]:{{[0-9]+}}: error: .cv_loc 1 1 // EOL COMMENT - // CHECK: [[#@LINE+1]]:28: error: expected newline - .bundle_lock align_to_end $ - // CHECK-NOT: [[#@LINE+1]]:{{[0-9]+}}: error: - .bundle_lock align_to_end // EOL COMMENT - // CHECK: [[#@LINE+1]]:11: error: invalid token in expression .sleb128 $ // CHECK-NOT: :[[#@LINE+1]]:{{[0-9]+}}: error: diff --git a/llvm/test/MC/Mips/nacl-mask.s b/llvm/test/MC/Mips/nacl-mask.s deleted file mode 100644 index 17226475c2135..0000000000000 --- a/llvm/test/MC/Mips/nacl-mask.s +++ /dev/null @@ -1,319 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-nacl %s \ -# RUN: | llvm-objdump --no-print-imm-hex -d -z --no-show-raw-insn - | FileCheck %s - -# This test tests that address-masking sandboxing is added when given assembly -# input. - - -# Test that address-masking sandboxing is added before indirect branches and -# returns. - - .align 4 -test1: - .set noreorder - - jr $a0 - nop - jr $ra - nop - -# CHECK-LABEL: : - -# CHECK: and $4, $4, $14 -# CHECK-NEXT: jr $4 - -# Check that additional nop is inserted, to align mask and jr to the next -# bundle. - -# CHECK-NEXT: nop -# CHECK-NEXT: nop - -# CHECK: and $ra, $ra, $14 -# CHECK-NEXT: jr $ra - - - -# Test that address-masking sandboxing is added before load instructions. - - .align 4 -test2: - .set noreorder - - lb $4, 0($1) - nop - lbu $4, 0($2) - lh $4, 0($3) - lhu $1, 0($4) - lw $4, 0($5) - lwc1 $f0, 0($6) - ldc1 $f2, 0($7) - ll $4, 0($8) - lwl $4, 0($9) - lwr $4, 0($10) - - lw $4, 0($sp) - lw $4, 0($t8) - -# CHECK-LABEL: : - -# CHECK: and $1, $1, $15 -# CHECK-NEXT: lb $4, 0($1) - -# Check that additional nop is inserted, to align mask and load to the next -# bundle. - -# CHECK: nop -# CHECK: nop - -# CHECK: and $2, $2, $15 -# CHECK-NEXT: lbu $4, 0($2) - -# CHECK: and $3, $3, $15 -# CHECK-NEXT: lh $4, 0($3) - -# CHECK: and $4, $4, $15 -# CHECK-NEXT: lhu $1, 0($4) - -# CHECK: and $5, $5, $15 -# CHECK-NEXT: lw $4, 0($5) - -# CHECK: and $6, $6, $15 -# CHECK-NEXT: lwc1 $f0, 0($6) - -# CHECK: and $7, $7, $15 -# CHECK-NEXT: ldc1 $f2, 0($7) - -# CHECK: and $8, $8, $15 -# CHECK-NEXT: ll $4, 0($8) - -# CHECK: and $9, $9, $15 -# CHECK-NEXT: lwl $4, 0($9) - -# CHECK: and $10, $10, $15 -# CHECK-NEXT: lwr $4, 0($10) - - -# Check that loads where base register is $sp or $t8 (thread pointer register) -# are not masked. - -# CHECK-NOT: and -# CHECK: lw $4, 0($sp) -# CHECK-NOT: and -# CHECK: lw $4, 0($24) - - - -# Test that address-masking sandboxing is added before store instructions. - - .align 4 -test3: - .set noreorder - - sb $4, 0($1) - nop - sh $4, 0($2) - sw $4, 0($3) - swc1 $f0, 0($4) - sdc1 $f2, 0($5) - swl $4, 0($6) - swr $4, 0($7) - sc $4, 0($8) - - sw $4, 0($sp) - sw $4, 0($t8) - -# CHECK-LABEL: : - -# CHECK: and $1, $1, $15 -# CHECK-NEXT: sb $4, 0($1) - -# Check that additional nop is inserted, to align mask and store to the next -# bundle. - -# CHECK: nop -# CHECK: nop - -# CHECK: and $2, $2, $15 -# CHECK-NEXT: sh $4, 0($2) - -# CHECK: and $3, $3, $15 -# CHECK-NEXT: sw $4, 0($3) - -# CHECK: and $4, $4, $15 -# CHECK-NEXT: swc1 $f0, 0($4) - -# CHECK: and $5, $5, $15 -# CHECK-NEXT: sdc1 $f2, 0($5) - -# CHECK: and $6, $6, $15 -# CHECK-NEXT: swl $4, 0($6) - -# CHECK: and $7, $7, $15 -# CHECK-NEXT: swr $4, 0($7) - -# CHECK: and $8, $8, $15 -# CHECK-NEXT: sc $4, 0($8) - - -# Check that stores where base register is $sp or $t8 (thread pointer register) -# are not masked. - -# CHECK-NOT: and -# CHECK: sw $4, 0($sp) -# CHECK-NOT: and -# CHECK: sw $4, 0($24) - - - -# Test that address-masking sandboxing is added after instructions that change -# stack pointer. - - .align 4 -test4: - .set noreorder - - addiu $sp, $sp, 24 - nop - addu $sp, $sp, $1 - lw $sp, 0($2) - lw $sp, 123($sp) - sw $sp, 123($sp) - -# CHECK-LABEL: : - -# CHECK: addiu $sp, $sp, 24 -# CHECK-NEXT: and $sp, $sp, $15 - -# Check that additional nop is inserted, to align instruction and mask to the -# next bundle. - -# CHECK: nop -# CHECK: nop - -# CHECK: addu $sp, $sp, $1 -# CHECK-NEXT: and $sp, $sp, $15 - -# Since we next check sandboxing sequence which consists of 3 instructions, -# check that 2 additional nops are inserted, to align it to the next bundle. - -# CHECK: nop -# CHECK: nop - - -# Check that for instructions that change stack-pointer and load from memory -# masks are added before and after the instruction. - -# CHECK: and $2, $2, $15 -# CHECK-NEXT: lw $sp, 0($2) -# CHECK-NEXT: and $sp, $sp, $15 - -# For loads where $sp is destination and base, check that mask is added after -# but not before. - -# CHECK-NOT: and -# CHECK: lw $sp, 123($sp) -# CHECK-NEXT: and $sp, $sp, $15 - -# For stores where $sp is destination and base, check that mask is added neither -# before nor after. - -# CHECK-NOT: and -# CHECK: sw $sp, 123($sp) -# CHECK-NOT: and - - - -# Test that call + branch delay is aligned at bundle end. Test that mask is -# added before indirect calls. - - .align 4 -test5: - .set noreorder - - jal func1 - addiu $4, $zero, 1 - - nop - bal func2 - addiu $4, $zero, 2 - - nop - nop - bltzal $t1, func3 - addiu $4, $zero, 3 - - nop - nop - nop - bgezal $t2, func4 - addiu $4, $zero, 4 - - jalr $t9 - addiu $4, $zero, 5 - - -# CHECK: nop -# CHECK-NEXT: nop -# CHECK-LABEL: : -# CHECK-NEXT: jal -# CHECK-NEXT: addiu $4, $zero, 1 - -# CHECK-NEXT: nop -# CHECK-NEXT: nop -# CHECK-NEXT: bal -# CHECK-NEXT: addiu $4, $zero, 2 - -# CHECK-NEXT: nop -# CHECK-NEXT: nop -# CHECK-NEXT: bltzal -# CHECK-NEXT: addiu $4, $zero, 3 - -# CHECK-NEXT: nop -# CHECK-NEXT: nop -# CHECK-NEXT: nop -# CHECK-NEXT: nop - -# CHECK-NEXT: nop -# CHECK-NEXT: nop -# CHECK-NEXT: bgezal -# CHECK-NEXT: addiu $4, $zero, 4 - -# CHECK-NEXT: nop -# CHECK-NEXT: and $25, $25, $14 -# CHECK-NEXT: jalr $25 -# CHECK-NEXT: addiu $4, $zero, 5 - - - -# Test that we can put non-dangerous loads and stores in branch delay slot. - - .align 4 -test6: - .set noreorder - - jal func1 - sw $4, 0($sp) - - bal func2 - lw $5, 0($t8) - - jalr $t9 - sw $sp, 0($sp) - - - -# CHECK: nop -# CHECK-NEXT: nop -# CHECK-LABEL: : -# CHECK-NEXT: jal -# CHECK-NEXT: sw $4, 0($sp) - -# CHECK-NEXT: nop -# CHECK-NEXT: nop -# CHECK-NEXT: bal -# CHECK-NEXT: lw $5, 0($24) - -# CHECK-NEXT: nop -# CHECK-NEXT: and $25, $25, $14 -# CHECK-NEXT: jalr -# CHECK-NEXT: sw $sp, 0($sp) diff --git a/llvm/test/MC/X86/AlignedBundling/align-mode-argument-error.s b/llvm/test/MC/X86/AlignedBundling/align-mode-argument-error.s deleted file mode 100644 index 37c74c86f754e..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/align-mode-argument-error.s +++ /dev/null @@ -1,8 +0,0 @@ -# RUN: not llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s - -# Missing .bundle_align_mode argument -# CHECK: error: unknown token - - .bundle_align_mode - imull $17, %ebx, %ebp - diff --git a/llvm/test/MC/X86/AlignedBundling/asm-printing-bundle-directives.s b/llvm/test/MC/X86/AlignedBundling/asm-printing-bundle-directives.s deleted file mode 100644 index 387e0fe59bf29..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/asm-printing-bundle-directives.s +++ /dev/null @@ -1,22 +0,0 @@ -# RUN: llvm-mc -filetype=asm -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s - -# Just a simple test for the assembly emitter - making sure it emits back the -# bundling directives. - - .text -foo: - .bundle_align_mode 4 -# CHECK: .bundle_align_mode 4 - pushq %rbp - .bundle_lock -# CHECK: .bundle_lock - cmpl %r14d, %ebp - jle .L_ELSE - .bundle_unlock -# CHECK: .bundle_unlock - .bundle_lock align_to_end -# CHECK: .bundle_lock align_to_end - add %rbx, %rdx - .bundle_unlock - - diff --git a/llvm/test/MC/X86/AlignedBundling/autogen-inst-offset-align-to-end.s b/llvm/test/MC/X86/AlignedBundling/autogen-inst-offset-align-to-end.s deleted file mode 100644 index 6dabafc394e99..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/autogen-inst-offset-align-to-end.s +++ /dev/null @@ -1,2899 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - \ -# RUN: | llvm-objdump --triple=i386 -d --no-show-raw-insn - | FileCheck %s - -# !!! This test is auto-generated from utils/testgen/mc-bundling-x86-gen.py !!! -# It tests that bundle-aligned grouping works correctly in MC. Read the -# source of the script for more details. - - .text - .bundle_align_mode 4 - - .align 32, 0x90 -INSTRLEN_1_OFFSET_0: - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 0: nop -# CHECK: f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 21: nop -# CHECK: 2f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 42: nop -# CHECK: 4f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 63: nop -# CHECK: 6f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 84: nop -# CHECK: 8f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: a5: nop -# CHECK: af: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: c6: nop -# CHECK: cf: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: e7: nop -# CHECK: ef: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 108: nop -# CHECK: 10f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 129: nop -# CHECK: 12f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 14a: nop -# CHECK: 14f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 16b: nop -# CHECK: 16f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 18c: nop -# CHECK: 18f: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ad: nop -# CHECK: 1af: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ce: nop -# CHECK: 1cf: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ef: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_0: - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 200: nop -# CHECK: 20e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 221: nop -# CHECK: 22e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 242: nop -# CHECK: 24e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 263: nop -# CHECK: 26e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 284: nop -# CHECK: 28e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 2a5: nop -# CHECK: 2ae: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 2c6: nop -# CHECK: 2ce: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 2e7: nop -# CHECK: 2ee: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 308: nop -# CHECK: 30e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 329: nop -# CHECK: 32e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 34a: nop -# CHECK: 34e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 36b: nop -# CHECK: 36e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 38c: nop -# CHECK: 38e: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 3ad: nop -# CHECK: 3ae: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 3ce: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 3ef: nop -# CHECK: 3f0: nop -# CHECK: 3fe: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_0: - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 400: nop -# CHECK: 40d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 421: nop -# CHECK: 42d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 442: nop -# CHECK: 44d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 463: nop -# CHECK: 46d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 484: nop -# CHECK: 48d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 4a5: nop -# CHECK: 4ad: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 4c6: nop -# CHECK: 4cd: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 4e7: nop -# CHECK: 4ed: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 508: nop -# CHECK: 50d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 529: nop -# CHECK: 52d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 54a: nop -# CHECK: 54d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 56b: nop -# CHECK: 56d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 58c: nop -# CHECK: 58d: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 5ad: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 5ce: nop -# CHECK: 5d0: nop -# CHECK: 5dd: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 5ef: nop -# CHECK: 5f0: nop -# CHECK: 5fd: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_0: - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 600: nop -# CHECK: 60c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 621: nop -# CHECK: 62c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 642: nop -# CHECK: 64c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 663: nop -# CHECK: 66c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 684: nop -# CHECK: 68c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 6a5: nop -# CHECK: 6ac: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 6c6: nop -# CHECK: 6cc: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 6e7: nop -# CHECK: 6ec: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 708: nop -# CHECK: 70c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 729: nop -# CHECK: 72c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 74a: nop -# CHECK: 74c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 76b: nop -# CHECK: 76c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 78c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 7ad: nop -# CHECK: 7b0: nop -# CHECK: 7bc: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 7ce: nop -# CHECK: 7d0: nop -# CHECK: 7dc: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 7ef: nop -# CHECK: 7f0: nop -# CHECK: 7fc: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_0: - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 800: nop -# CHECK: 80b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 821: nop -# CHECK: 82b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 842: nop -# CHECK: 84b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 863: nop -# CHECK: 86b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 884: nop -# CHECK: 88b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 8a5: nop -# CHECK: 8ab: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 8c6: nop -# CHECK: 8cb: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 8e7: nop -# CHECK: 8eb: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 908: nop -# CHECK: 90b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 929: nop -# CHECK: 92b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 94a: nop -# CHECK: 94b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 96b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 98c: nop -# CHECK: 990: nop -# CHECK: 99b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 9ad: nop -# CHECK: 9b0: nop -# CHECK: 9bb: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 9ce: nop -# CHECK: 9d0: nop -# CHECK: 9db: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 9ef: nop -# CHECK: 9f0: nop -# CHECK: 9fb: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_0: - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a00: nop -# CHECK: a0a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a21: nop -# CHECK: a2a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a42: nop -# CHECK: a4a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a63: nop -# CHECK: a6a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a84: nop -# CHECK: a8a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: aa5: nop -# CHECK: aaa: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: ac6: nop -# CHECK: aca: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: ae7: nop -# CHECK: aea: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b08: nop -# CHECK: b0a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b29: nop -# CHECK: b2a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b4a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b6b: nop -# CHECK: b70: nop -# CHECK: b7a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b8c: nop -# CHECK: b90: nop -# CHECK: b9a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: bad: nop -# CHECK: bb0: nop -# CHECK: bba: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: bce: nop -# CHECK: bd0: nop -# CHECK: bda: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: bef: nop -# CHECK: bf0: nop -# CHECK: bfa: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_0: - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c00: nop -# CHECK: c09: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c21: nop -# CHECK: c29: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c42: nop -# CHECK: c49: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c63: nop -# CHECK: c69: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c84: nop -# CHECK: c89: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: ca5: nop -# CHECK: ca9: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: cc6: nop -# CHECK: cc9: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: ce7: nop -# CHECK: ce9: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d08: nop -# CHECK: d09: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d29: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d4a: nop -# CHECK: d50: nop -# CHECK: d59: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d6b: nop -# CHECK: d70: nop -# CHECK: d79: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d8c: nop -# CHECK: d90: nop -# CHECK: d99: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: dad: nop -# CHECK: db0: nop -# CHECK: db9: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: dce: nop -# CHECK: dd0: nop -# CHECK: dd9: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: def: nop -# CHECK: df0: nop -# CHECK: df9: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_0: - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e00: nop -# CHECK: e08: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e21: nop -# CHECK: e28: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e42: nop -# CHECK: e48: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e63: nop -# CHECK: e68: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e84: nop -# CHECK: e88: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: ea5: nop -# CHECK: ea8: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: ec6: nop -# CHECK: ec8: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: ee7: nop -# CHECK: ee8: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f08: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f29: nop -# CHECK: f30: nop -# CHECK: f38: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f4a: nop -# CHECK: f50: nop -# CHECK: f58: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f6b: nop -# CHECK: f70: nop -# CHECK: f78: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f8c: nop -# CHECK: f90: nop -# CHECK: f98: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: fad: nop -# CHECK: fb0: nop -# CHECK: fb8: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: fce: nop -# CHECK: fd0: nop -# CHECK: fd8: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: fef: nop -# CHECK: ff0: nop -# CHECK: ff8: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_0: - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1000: nop -# CHECK: 1007: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1021: nop -# CHECK: 1027: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1042: nop -# CHECK: 1047: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1063: nop -# CHECK: 1067: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1084: nop -# CHECK: 1087: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 10a5: nop -# CHECK: 10a7: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 10c6: nop -# CHECK: 10c7: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 10e7: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1108: nop -# CHECK: 1110: nop -# CHECK: 1117: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1129: nop -# CHECK: 1130: nop -# CHECK: 1137: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 114a: nop -# CHECK: 1150: nop -# CHECK: 1157: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 116b: nop -# CHECK: 1170: nop -# CHECK: 1177: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 118c: nop -# CHECK: 1190: nop -# CHECK: 1197: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 11ad: nop -# CHECK: 11b0: nop -# CHECK: 11b7: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 11ce: nop -# CHECK: 11d0: nop -# CHECK: 11d7: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 11ef: nop -# CHECK: 11f0: nop -# CHECK: 11f7: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_0: - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1200: nop -# CHECK: 1206: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1221: nop -# CHECK: 1226: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1242: nop -# CHECK: 1246: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1263: nop -# CHECK: 1266: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1284: nop -# CHECK: 1286: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 12a5: nop -# CHECK: 12a6: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 12c6: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 12e7: nop -# CHECK: 12f0: nop -# CHECK: 12f6: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1308: nop -# CHECK: 1310: nop -# CHECK: 1316: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1329: nop -# CHECK: 1330: nop -# CHECK: 1336: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 134a: nop -# CHECK: 1350: nop -# CHECK: 1356: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 136b: nop -# CHECK: 1370: nop -# CHECK: 1376: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 138c: nop -# CHECK: 1390: nop -# CHECK: 1396: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 13ad: nop -# CHECK: 13b0: nop -# CHECK: 13b6: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 13ce: nop -# CHECK: 13d0: nop -# CHECK: 13d6: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 13ef: nop -# CHECK: 13f0: nop -# CHECK: 13f6: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_0: - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1400: nop -# CHECK: 1405: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1421: nop -# CHECK: 1425: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1442: nop -# CHECK: 1445: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1463: nop -# CHECK: 1465: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1484: nop -# CHECK: 1485: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 14a5: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 14c6: nop -# CHECK: 14d0: nop -# CHECK: 14d5: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 14e7: nop -# CHECK: 14f0: nop -# CHECK: 14f5: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1508: nop -# CHECK: 1510: nop -# CHECK: 1515: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1529: nop -# CHECK: 1530: nop -# CHECK: 1535: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 154a: nop -# CHECK: 1550: nop -# CHECK: 1555: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 156b: nop -# CHECK: 1570: nop -# CHECK: 1575: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 158c: nop -# CHECK: 1590: nop -# CHECK: 1595: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 15ad: nop -# CHECK: 15b0: nop -# CHECK: 15b5: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 15ce: nop -# CHECK: 15d0: nop -# CHECK: 15d5: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 15ef: nop -# CHECK: 15f0: nop -# CHECK: 15f5: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_0: - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1600: nop -# CHECK: 1604: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1621: nop -# CHECK: 1624: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1642: nop -# CHECK: 1644: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1663: nop -# CHECK: 1664: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1684: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 16a5: nop -# CHECK: 16b0: nop -# CHECK: 16b4: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 16c6: nop -# CHECK: 16d0: nop -# CHECK: 16d4: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 16e7: nop -# CHECK: 16f0: nop -# CHECK: 16f4: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1708: nop -# CHECK: 1710: nop -# CHECK: 1714: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1729: nop -# CHECK: 1730: nop -# CHECK: 1734: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 174a: nop -# CHECK: 1750: nop -# CHECK: 1754: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 176b: nop -# CHECK: 1770: nop -# CHECK: 1774: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 178c: nop -# CHECK: 1790: nop -# CHECK: 1794: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 17ad: nop -# CHECK: 17b0: nop -# CHECK: 17b4: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 17ce: nop -# CHECK: 17d0: nop -# CHECK: 17d4: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 17ef: nop -# CHECK: 17f0: nop -# CHECK: 17f4: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_0: - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1800: nop -# CHECK: 1803: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1821: nop -# CHECK: 1823: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1842: nop -# CHECK: 1843: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1863: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1884: nop -# CHECK: 1890: nop -# CHECK: 1893: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 18a5: nop -# CHECK: 18b0: nop -# CHECK: 18b3: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 18c6: nop -# CHECK: 18d0: nop -# CHECK: 18d3: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 18e7: nop -# CHECK: 18f0: nop -# CHECK: 18f3: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1908: nop -# CHECK: 1910: nop -# CHECK: 1913: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1929: nop -# CHECK: 1930: nop -# CHECK: 1933: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 194a: nop -# CHECK: 1950: nop -# CHECK: 1953: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 196b: nop -# CHECK: 1970: nop -# CHECK: 1973: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 198c: nop -# CHECK: 1990: nop -# CHECK: 1993: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 19ad: nop -# CHECK: 19b0: nop -# CHECK: 19b3: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 19ce: nop -# CHECK: 19d0: nop -# CHECK: 19d3: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 19ef: nop -# CHECK: 19f0: nop -# CHECK: 19f3: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_0: - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a00: nop -# CHECK: 1a02: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a21: nop -# CHECK: 1a22: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a42: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a63: nop -# CHECK: 1a70: nop -# CHECK: 1a72: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a84: nop -# CHECK: 1a90: nop -# CHECK: 1a92: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1aa5: nop -# CHECK: 1ab0: nop -# CHECK: 1ab2: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ac6: nop -# CHECK: 1ad0: nop -# CHECK: 1ad2: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ae7: nop -# CHECK: 1af0: nop -# CHECK: 1af2: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b08: nop -# CHECK: 1b10: nop -# CHECK: 1b12: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b29: nop -# CHECK: 1b30: nop -# CHECK: 1b32: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b4a: nop -# CHECK: 1b50: nop -# CHECK: 1b52: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b6b: nop -# CHECK: 1b70: nop -# CHECK: 1b72: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b8c: nop -# CHECK: 1b90: nop -# CHECK: 1b92: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1bad: nop -# CHECK: 1bb0: nop -# CHECK: 1bb2: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1bce: nop -# CHECK: 1bd0: nop -# CHECK: 1bd2: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1bef: nop -# CHECK: 1bf0: nop -# CHECK: 1bf2: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_0: - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c00: nop -# CHECK: 1c01: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c21: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c42: nop -# CHECK: 1c50: nop -# CHECK: 1c51: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c63: nop -# CHECK: 1c70: nop -# CHECK: 1c71: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c84: nop -# CHECK: 1c90: nop -# CHECK: 1c91: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ca5: nop -# CHECK: 1cb0: nop -# CHECK: 1cb1: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1cc6: nop -# CHECK: 1cd0: nop -# CHECK: 1cd1: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ce7: nop -# CHECK: 1cf0: nop -# CHECK: 1cf1: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d08: nop -# CHECK: 1d10: nop -# CHECK: 1d11: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d29: nop -# CHECK: 1d30: nop -# CHECK: 1d31: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d4a: nop -# CHECK: 1d50: nop -# CHECK: 1d51: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d6b: nop -# CHECK: 1d70: nop -# CHECK: 1d71: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d8c: nop -# CHECK: 1d90: nop -# CHECK: 1d91: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1dad: nop -# CHECK: 1db0: nop -# CHECK: 1db1: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1dce: nop -# CHECK: 1dd0: nop -# CHECK: 1dd1: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1def: nop -# CHECK: 1df0: nop -# CHECK: 1df1: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_0: - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e00: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e21: nop -# CHECK: 1e30: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e42: nop -# CHECK: 1e50: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e63: nop -# CHECK: 1e70: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e84: nop -# CHECK: 1e90: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ea5: nop -# CHECK: 1eb0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ec6: nop -# CHECK: 1ed0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ee7: nop -# CHECK: 1ef0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f08: nop -# CHECK: 1f10: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f29: nop -# CHECK: 1f30: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f4a: nop -# CHECK: 1f50: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f6b: nop -# CHECK: 1f70: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f8c: nop -# CHECK: 1f90: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1fad: nop -# CHECK: 1fb0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1fce: nop -# CHECK: 1fd0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock align_to_end - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1fef: nop -# CHECK: 1ff0: incl - diff --git a/llvm/test/MC/X86/AlignedBundling/autogen-inst-offset-padding.s b/llvm/test/MC/X86/AlignedBundling/autogen-inst-offset-padding.s deleted file mode 100644 index d486ec5fca00e..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/autogen-inst-offset-padding.s +++ /dev/null @@ -1,2674 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - \ -# RUN: | llvm-objdump --triple=i386 -d --no-show-raw-insn - | FileCheck %s - -# !!! This test is auto-generated from utils/testgen/mc-bundling-x86-gen.py !!! -# It tests that bundle-aligned grouping works correctly in MC. Read the -# source of the script for more details. - - .text - .bundle_align_mode 4 - - .align 32, 0x90 -INSTRLEN_1_OFFSET_0: - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 0: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 21: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 42: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 63: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 84: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: a5: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: c6: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: e7: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 108: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 129: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 14a: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 16b: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 18c: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ad: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ce: incl - - .align 32, 0x90 -INSTRLEN_1_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 1 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ef: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_0: - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 200: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 221: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 242: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 263: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 284: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 2a5: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 2c6: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 2e7: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 308: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 329: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 34a: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 36b: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 38c: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 3ad: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 3ce: incl - - .align 32, 0x90 -INSTRLEN_2_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 2 - inc %eax - .endr - .bundle_unlock -# CHECK: 3ef: nop -# CHECK: 3f0: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_0: - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 400: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 421: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 442: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 463: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 484: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 4a5: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 4c6: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 4e7: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 508: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 529: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 54a: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 56b: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 58c: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 5ad: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 5ce: nop -# CHECK: 5d0: incl - - .align 32, 0x90 -INSTRLEN_3_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 3 - inc %eax - .endr - .bundle_unlock -# CHECK: 5ef: nop -# CHECK: 5f0: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_0: - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 600: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 621: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 642: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 663: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 684: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 6a5: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 6c6: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 6e7: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 708: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 729: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 74a: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 76b: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 78c: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 7ad: nop -# CHECK: 7b0: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 7ce: nop -# CHECK: 7d0: incl - - .align 32, 0x90 -INSTRLEN_4_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 4 - inc %eax - .endr - .bundle_unlock -# CHECK: 7ef: nop -# CHECK: 7f0: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_0: - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 800: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 821: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 842: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 863: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 884: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 8a5: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 8c6: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 8e7: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 908: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 929: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 94a: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 96b: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 98c: nop -# CHECK: 990: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 9ad: nop -# CHECK: 9b0: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 9ce: nop -# CHECK: 9d0: incl - - .align 32, 0x90 -INSTRLEN_5_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 5 - inc %eax - .endr - .bundle_unlock -# CHECK: 9ef: nop -# CHECK: 9f0: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_0: - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a00: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a21: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a42: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a63: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: a84: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: aa5: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: ac6: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: ae7: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b08: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b29: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b4a: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b6b: nop -# CHECK: b70: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: b8c: nop -# CHECK: b90: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: bad: nop -# CHECK: bb0: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: bce: nop -# CHECK: bd0: incl - - .align 32, 0x90 -INSTRLEN_6_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 6 - inc %eax - .endr - .bundle_unlock -# CHECK: bef: nop -# CHECK: bf0: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_0: - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c00: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c21: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c42: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c63: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: c84: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: ca5: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: cc6: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: ce7: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d08: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d29: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d4a: nop -# CHECK: d50: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d6b: nop -# CHECK: d70: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: d8c: nop -# CHECK: d90: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: dad: nop -# CHECK: db0: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: dce: nop -# CHECK: dd0: incl - - .align 32, 0x90 -INSTRLEN_7_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 7 - inc %eax - .endr - .bundle_unlock -# CHECK: def: nop -# CHECK: df0: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_0: - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e00: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e21: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e42: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e63: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: e84: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: ea5: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: ec6: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: ee7: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f08: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f29: nop -# CHECK: f30: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f4a: nop -# CHECK: f50: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f6b: nop -# CHECK: f70: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: f8c: nop -# CHECK: f90: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: fad: nop -# CHECK: fb0: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: fce: nop -# CHECK: fd0: incl - - .align 32, 0x90 -INSTRLEN_8_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 8 - inc %eax - .endr - .bundle_unlock -# CHECK: fef: nop -# CHECK: ff0: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_0: - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1000: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1021: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1042: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1063: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1084: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 10a5: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 10c6: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 10e7: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1108: nop -# CHECK: 1110: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 1129: nop -# CHECK: 1130: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 114a: nop -# CHECK: 1150: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 116b: nop -# CHECK: 1170: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 118c: nop -# CHECK: 1190: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 11ad: nop -# CHECK: 11b0: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 11ce: nop -# CHECK: 11d0: incl - - .align 32, 0x90 -INSTRLEN_9_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 9 - inc %eax - .endr - .bundle_unlock -# CHECK: 11ef: nop -# CHECK: 11f0: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_0: - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1200: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1221: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1242: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1263: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1284: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 12a5: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 12c6: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 12e7: nop -# CHECK: 12f0: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1308: nop -# CHECK: 1310: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 1329: nop -# CHECK: 1330: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 134a: nop -# CHECK: 1350: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 136b: nop -# CHECK: 1370: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 138c: nop -# CHECK: 1390: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 13ad: nop -# CHECK: 13b0: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 13ce: nop -# CHECK: 13d0: incl - - .align 32, 0x90 -INSTRLEN_10_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 10 - inc %eax - .endr - .bundle_unlock -# CHECK: 13ef: nop -# CHECK: 13f0: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_0: - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1400: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1421: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1442: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1463: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1484: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 14a5: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 14c6: nop -# CHECK: 14d0: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 14e7: nop -# CHECK: 14f0: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1508: nop -# CHECK: 1510: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 1529: nop -# CHECK: 1530: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 154a: nop -# CHECK: 1550: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 156b: nop -# CHECK: 1570: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 158c: nop -# CHECK: 1590: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 15ad: nop -# CHECK: 15b0: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 15ce: nop -# CHECK: 15d0: incl - - .align 32, 0x90 -INSTRLEN_11_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 11 - inc %eax - .endr - .bundle_unlock -# CHECK: 15ef: nop -# CHECK: 15f0: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_0: - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1600: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1621: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1642: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1663: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1684: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 16a5: nop -# CHECK: 16b0: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 16c6: nop -# CHECK: 16d0: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 16e7: nop -# CHECK: 16f0: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1708: nop -# CHECK: 1710: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 1729: nop -# CHECK: 1730: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 174a: nop -# CHECK: 1750: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 176b: nop -# CHECK: 1770: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 178c: nop -# CHECK: 1790: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 17ad: nop -# CHECK: 17b0: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 17ce: nop -# CHECK: 17d0: incl - - .align 32, 0x90 -INSTRLEN_12_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 12 - inc %eax - .endr - .bundle_unlock -# CHECK: 17ef: nop -# CHECK: 17f0: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_0: - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1800: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1821: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1842: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1863: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1884: nop -# CHECK: 1890: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 18a5: nop -# CHECK: 18b0: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 18c6: nop -# CHECK: 18d0: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 18e7: nop -# CHECK: 18f0: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1908: nop -# CHECK: 1910: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 1929: nop -# CHECK: 1930: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 194a: nop -# CHECK: 1950: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 196b: nop -# CHECK: 1970: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 198c: nop -# CHECK: 1990: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 19ad: nop -# CHECK: 19b0: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 19ce: nop -# CHECK: 19d0: incl - - .align 32, 0x90 -INSTRLEN_13_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 13 - inc %eax - .endr - .bundle_unlock -# CHECK: 19ef: nop -# CHECK: 19f0: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_0: - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a00: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a21: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a42: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a63: nop -# CHECK: 1a70: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1a84: nop -# CHECK: 1a90: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1aa5: nop -# CHECK: 1ab0: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ac6: nop -# CHECK: 1ad0: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ae7: nop -# CHECK: 1af0: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b08: nop -# CHECK: 1b10: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b29: nop -# CHECK: 1b30: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b4a: nop -# CHECK: 1b50: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b6b: nop -# CHECK: 1b70: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1b8c: nop -# CHECK: 1b90: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1bad: nop -# CHECK: 1bb0: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1bce: nop -# CHECK: 1bd0: incl - - .align 32, 0x90 -INSTRLEN_14_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 14 - inc %eax - .endr - .bundle_unlock -# CHECK: 1bef: nop -# CHECK: 1bf0: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_0: - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c00: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c21: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c42: nop -# CHECK: 1c50: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c63: nop -# CHECK: 1c70: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1c84: nop -# CHECK: 1c90: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ca5: nop -# CHECK: 1cb0: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1cc6: nop -# CHECK: 1cd0: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ce7: nop -# CHECK: 1cf0: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d08: nop -# CHECK: 1d10: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d29: nop -# CHECK: 1d30: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d4a: nop -# CHECK: 1d50: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d6b: nop -# CHECK: 1d70: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1d8c: nop -# CHECK: 1d90: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1dad: nop -# CHECK: 1db0: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1dce: nop -# CHECK: 1dd0: incl - - .align 32, 0x90 -INSTRLEN_15_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 15 - inc %eax - .endr - .bundle_unlock -# CHECK: 1def: nop -# CHECK: 1df0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_0: - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e00: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_1: - .fill 1, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e21: nop -# CHECK: 1e30: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_2: - .fill 2, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e42: nop -# CHECK: 1e50: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_3: - .fill 3, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e63: nop -# CHECK: 1e70: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_4: - .fill 4, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1e84: nop -# CHECK: 1e90: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_5: - .fill 5, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ea5: nop -# CHECK: 1eb0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_6: - .fill 6, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ec6: nop -# CHECK: 1ed0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_7: - .fill 7, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1ee7: nop -# CHECK: 1ef0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_8: - .fill 8, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f08: nop -# CHECK: 1f10: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_9: - .fill 9, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f29: nop -# CHECK: 1f30: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_10: - .fill 10, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f4a: nop -# CHECK: 1f50: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_11: - .fill 11, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f6b: nop -# CHECK: 1f70: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_12: - .fill 12, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1f8c: nop -# CHECK: 1f90: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_13: - .fill 13, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1fad: nop -# CHECK: 1fb0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_14: - .fill 14, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1fce: nop -# CHECK: 1fd0: incl - - .align 32, 0x90 -INSTRLEN_16_OFFSET_15: - .fill 15, 1, 0x90 - .bundle_lock - .rept 16 - inc %eax - .endr - .bundle_unlock -# CHECK: 1fef: nop -# CHECK: 1ff0: incl - diff --git a/llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s b/llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s deleted file mode 100644 index 697b8bf6ab6c0..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s +++ /dev/null @@ -1,18 +0,0 @@ -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - 2>&1 | FileCheck %s - -# CHECK: ERROR: Fragment can't be larger than a bundle size - - .text -foo: - .bundle_align_mode 4 - pushq %rbp - - .bundle_lock - pushq %r14 - callq bar - callq bar - callq bar - callq bar - .bundle_unlock - diff --git a/llvm/test/MC/X86/AlignedBundling/bundle-lock-option-error.s b/llvm/test/MC/X86/AlignedBundling/bundle-lock-option-error.s deleted file mode 100644 index b849d2b333007..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/bundle-lock-option-error.s +++ /dev/null @@ -1,11 +0,0 @@ -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s - -# Missing .bundle_align_mode argument -# CHECK: error: invalid option - - .bundle_align_mode 4 - .bundle_lock 5 - imull $17, %ebx, %ebp - .bundle_unlock - - diff --git a/llvm/test/MC/X86/AlignedBundling/bundle-subtarget-change-error.s b/llvm/test/MC/X86/AlignedBundling/bundle-subtarget-change-error.s deleted file mode 100644 index c02d0d6b19b4e..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/bundle-subtarget-change-error.s +++ /dev/null @@ -1,16 +0,0 @@ -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro %s -o - 2>&1 | FileCheck %s -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - 2>&1 | FileCheck %s - -# Switching mode will change subtarget, which we can't do within a bundle - .text - .code64 - .bundle_align_mode 4 -foo: - pushq %rbp - .bundle_lock - addl %ebp, %eax - .code32 - movb $0x0, (%si) - .bundle_unlock - -CHECK: LLVM ERROR: A Bundle can only have one Subtarget. diff --git a/llvm/test/MC/X86/AlignedBundling/different-sections.s b/llvm/test/MC/X86/AlignedBundling/different-sections.s deleted file mode 100644 index bc4f20132dbe7..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/different-sections.s +++ /dev/null @@ -1,27 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s - -# Test two different executable sections with bundling. - - .bundle_align_mode 3 - .section text1, "x" -# CHECK: section text1 - imull $17, %ebx, %ebp - imull $17, %ebx, %ebp - - imull $17, %ebx, %ebp -# CHECK: 6: nop -# CHECK-NEXT: 8: imull - - .section text2, "x" -# CHECK: section text2 - imull $17, %ebx, %ebp - imull $17, %ebx, %ebp - - imull $17, %ebx, %ebp -# CHECK: 6: nop -# CHECK-NEXT: 8: imull - - diff --git a/llvm/test/MC/X86/AlignedBundling/labeloffset.s b/llvm/test/MC/X86/AlignedBundling/labeloffset.s deleted file mode 100644 index 2850aba718430..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/labeloffset.s +++ /dev/null @@ -1,85 +0,0 @@ -# RUN: llvm-mc -triple=i686-linux -filetype=obj %s -o - | \ -# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn -r - | FileCheck %s -# RUN: llvm-mc -triple=i686-nacl -filetype=obj %s -o - | \ -# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn -r - | FileCheck %s -# RUN: llvm-mc -triple=i686-nacl -filetype=obj -mc-relax-all %s -o - | \ -# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn -r - | FileCheck %s - - .bundle_align_mode 5 - .text - .globl main - .align 32, 0x90 - .type main,@function -main: # @main -# CHECK-LABEL:
: -# Call + pop sequence for determining the PIC base. - .bundle_lock align_to_end - calll .L0$pb - .bundle_unlock -.L0$pb: - popl %eax -# CHECK: 20: popl -# 26 bytes of instructions between the pop and the use of the pic base symbol. - movl $3, 2(%ebx, %ebx) - movl $3, 2(%ebx, %ebx) - movl $3, 2(%ebx, %ebx) - hlt - hlt -# CHECK: nop -.Ltmp0: - addl (.Ltmp0-.L0$pb), %eax -# The addl has bundle padding to push it from 0x3b to 0x40. -# The difference between the labels should be 0x20 (0x40-0x20) not 0x1b -# (0x3b-0x20) -# CHECK: 40: addl 32, %eax - popl %ecx - jmp *%ecx - - -# Also make sure it works with a non-relaxable instruction (cmp vs add) -# and for 2 adjacent labels that both point to the correct instruction - .section .text.bar, "ax" - .globl bar - .align 32, 0x90 - .type bar,@function -bar: -# CHECK-LABEL: bar: - .bundle_lock align_to_end - calll .L1$pb - .bundle_unlock -.L1$pb: - popl %eax -# CHECK: 20: popl -# 26 bytes of instructions between the pop and the use of the pic base symbol. - movl $3, 2(%ebx, %ebx) - movl $3, 2(%ebx, %ebx) - movl $3, 2(%ebx, %ebx) - hlt - hlt -# CHECK: nop -.Ltmp1: -.Ltmp2: - cmpl %eax, .Ltmp1 -# CHECK: 40: cmpl %eax, 64 - cmpl %eax, (.Ltmp2-.L1$pb) -# CHECK: 46: cmpl %eax, 32 - popl %ecx - jmp *%ecx - - -# Switch sections in the middle of a function - .section .text.foo, "ax" - .globl foo - .align 32, 0x90 - .type foo,@function -# CHECK-LABEL: foo: -foo: - inc %eax -tmp3: - .rodata - .type obj,@object - .comm obj,4,4 - .section .text.foo - inc %eax -# CHECK: : -# CHECK-NEXT: 1: incl diff --git a/llvm/test/MC/X86/AlignedBundling/lit.local.cfg b/llvm/test/MC/X86/AlignedBundling/lit.local.cfg deleted file mode 100644 index 42bf50dcc13c3..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if not "X86" in config.root.targets: - config.unsupported = True diff --git a/llvm/test/MC/X86/AlignedBundling/lock-without-bundle-mode-error.s b/llvm/test/MC/X86/AlignedBundling/lock-without-bundle-mode-error.s deleted file mode 100644 index 65ee2d5b9f385..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/lock-without-bundle-mode-error.s +++ /dev/null @@ -1,10 +0,0 @@ -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s - -# .bundle_lock can't come without a .bundle_align_mode before it - -# CHECK: ERROR: .bundle_lock forbidden when bundling is disabled - - imull $17, %ebx, %ebp - .bundle_lock - - diff --git a/llvm/test/MC/X86/AlignedBundling/long-nop-pad.s b/llvm/test/MC/X86/AlignedBundling/long-nop-pad.s deleted file mode 100644 index 439915dfd0b5b..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/long-nop-pad.s +++ /dev/null @@ -1,31 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s - -# Test that long nops are generated for padding where possible. - - .text -foo: - .bundle_align_mode 5 - -# This callq instruction is 5 bytes long - .bundle_lock align_to_end - callq bar - .bundle_unlock -# To align this group to a bundle end, we need a two 10-byte NOPs and a 7-byte NOP. -# CHECK: 0: nop -# CHECK-NEXT: a: nop -# CHECK-NEXT: 14: nop -# CHECK: 1b: callq - -# This push instruction is 1 byte long - .bundle_lock align_to_end - push %rax - .bundle_unlock -# To align this group to a bundle end, we need three 10-byte NOPs, and a 1-byte. -# CHECK: 20: nop -# CHECK-NEXT: 2a: nop -# CHECK-NEXT: 34: nop -# CHECK-NEXT: 3e: nop -# CHECK-NEXT: 3f: pushq diff --git a/llvm/test/MC/X86/AlignedBundling/misaligned-bundle-group.s b/llvm/test/MC/X86/AlignedBundling/misaligned-bundle-group.s deleted file mode 100644 index 92bd9ec016bd5..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/misaligned-bundle-group.s +++ /dev/null @@ -1,19 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - \ -# RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-OPT %s -# RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - \ -# RUN: | FileCheck --check-prefixes=CHECK,CHECK-OPT %s - - .text -foo: - .bundle_align_mode 5 - push %ebp # 1 byte - .align 16 - .bundle_lock align_to_end -# CHECK: 1: nopw %cs:(%eax,%eax) -# CHECK: 10: nopw %cs:(%eax,%eax) -# CHECK-OPT: 1b: calll 0x1c - calll bar # 5 bytes - .bundle_unlock - ret # 1 byte diff --git a/llvm/test/MC/X86/AlignedBundling/misaligned-bundle.s b/llvm/test/MC/X86/AlignedBundling/misaligned-bundle.s deleted file mode 100644 index 0bf5cfd802be9..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/misaligned-bundle.s +++ /dev/null @@ -1,26 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump --no-print-imm-hex -d --no-show-raw-insn - \ -# RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-OPT %s -# RUN: llvm-mc -filetype=obj -triple i686-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump --no-print-imm-hex -d --no-show-raw-insn - \ -# RUN: | FileCheck --check-prefixes=CHECK,CHECK-OPT %s - - .text -foo: - .bundle_align_mode 5 - push %ebp # 1 byte - .align 16 -# CHECK: 1: nopw %cs:(%eax,%eax) -# CHECK-OPT: 10: movl $1, (%esp) - movl $0x1, (%esp) # 7 bytes - movl $0x1, (%esp) # 7 bytes -# CHECK-OPT: 1e: nop - movl $0x2, 0x1(%esp) # 8 bytes - movl $0x2, 0x1(%esp) # 8 bytes - movl $0x2, 0x1(%esp) # 8 bytes - movl $0x2, (%esp) # 7 bytes -# CHECK-OPT: 3f: nop -# CHECK-OPT: 40: movl $3, (%esp) - movl $0x3, (%esp) # 7 bytes - movl $0x3, (%esp) # 7 bytes - ret diff --git a/llvm/test/MC/X86/AlignedBundling/nesting.s b/llvm/test/MC/X86/AlignedBundling/nesting.s deleted file mode 100644 index e107a413521b3..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/nesting.s +++ /dev/null @@ -1,73 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s - -# Will be bundle-aligning to 16 byte boundaries - .bundle_align_mode 4 - .text -# CHECK-LABEL: : -.type foo,@function -foo: -# Test that bundle alignment mode can be set more than once. - .bundle_align_mode 4 -# Each of these callq instructions is 5 bytes long - callq bar - callq bar - .bundle_lock - .bundle_lock - callq bar - callq bar - .bundle_unlock - .bundle_unlock -# CHECK: 10: callq {{.*}} -# CHECK-NEXT: 15: callq {{.*}} - - .p2align 4 -# CHECK-LABEL: : -.type bar,@function -bar: - callq foo - callq foo -# Check that the callqs get bundled together, and that the whole group is -# align_to_end - .bundle_lock - callq bar - .bundle_lock align_to_end - callq bar - .bundle_unlock - .bundle_unlock -# CHECK: 36: callq {{.*}} -# CHECK-NEXT: 3b: callq {{.*}} - -# CHECK-LABEL: : -.type baz,@function -baz: - callq foo - callq foo -# Check that the callqs get bundled together, and that the whole group is -# align_to_end (with the outer directive marked align_to_end) - .bundle_lock align_to_end - callq bar - .bundle_lock - callq bar - .bundle_unlock - .bundle_unlock -# CHECK: 56: callq {{.*}} -# CHECK-NEXT: 5b: callq {{.*}} - -# CHECK-LABEL: quux -.type quux,@function -quux: - callq bar - callq bar - .bundle_lock - .bundle_lock - callq bar - .bundle_unlock - callq bar - .bundle_unlock -# Check that the calls are bundled together when the second one is after the -# inner nest is closed. -# CHECK: 70: callq {{.*}} -# CHECK-NEXT: 75: callq {{.*}} diff --git a/llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s b/llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s deleted file mode 100644 index d725724f8fd44..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s +++ /dev/null @@ -1,35 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s - -# Test some variations of padding to the end of a bundle. - - .text -foo: - .bundle_align_mode 4 - -# Each of these callq instructions is 5 bytes long - callq bar - callq bar - .bundle_lock align_to_end - callq bar - .bundle_unlock -# To align this group to a bundle end, we need a 1-byte NOP. -# CHECK: a: nop -# CHECK-NEXT: b: callq - - callq bar - callq bar - .bundle_lock align_to_end - callq bar - callq bar - .bundle_unlock -# Here we have to pad until the end of the *next* boundary because -# otherwise the group crosses a boundary. -# CHECK: 1a: nop -# The nop sequence may be implemented as one instruction or many, but if -# it's one instruction, that instruction cannot itself cross the boundary. -# CHECK: 20: nop -# CHECK-NEXT: 26: callq -# CHECK-NEXT: 2b: callq diff --git a/llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s b/llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s deleted file mode 100644 index 9e07b5994864b..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/pad-bundle-groups.s +++ /dev/null @@ -1,49 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s - -# Test some variations of padding for bundle-locked groups. - - .text -foo: - .bundle_align_mode 4 - -# Each of these callq instructions is 5 bytes long - callq bar - callq bar - - .bundle_lock - callq bar - callq bar - .bundle_unlock -# We'll need a 6-byte NOP before this group -# CHECK: a: nop -# CHECK-NEXT: 10: callq -# CHECK-NEXT: 15: callq - - .bundle_lock - callq bar - callq bar - .bundle_unlock -# Same here -# CHECK: 1a: nop -# CHECK-NEXT: 20: callq -# CHECK-NEXT: 25: callq - - .align 16, 0x90 - callq bar - .bundle_lock - callq bar - callq bar - callq bar - .bundle_unlock -# And here we'll need a 10-byte NOP + 1-byte NOP -# CHECK: 30: callq -# CHECK: 35: nop -# CHECK: 3f: nop -# CHECK-NEXT: 40: callq -# CHECK-NEXT: 45: callq - - - diff --git a/llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s b/llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s deleted file mode 100644 index 2c510f796e19f..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/relax-at-bundle-end.s +++ /dev/null @@ -1,18 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck %s - -# Test that an instruction near a bundle end gets properly padded -# after it is relaxed. -.text -foo: - .bundle_align_mode 5 - .rept 29 - push %rax - .endr -# CHECK: 1c: push -# CHECK: 1d: nop -# CHECK: 20: jne - jne 0x100 - diff --git a/llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s b/llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s deleted file mode 100644 index 2419a02f9ab74..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/relax-in-bundle-group.s +++ /dev/null @@ -1,44 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump -d - | FileCheck %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d - | FileCheck %s - -# Test that instructions inside bundle-locked groups are relaxed even if their -# fixup is short enough not to warrant relaxation on its own. - - .text -foo: - .bundle_align_mode 4 - pushq %rbp - - movl %edi, %ebx - callq bar - movl %eax, %r14d - imull $17, %ebx, %ebp - movl %ebx, %edi - callq bar - cmpl %r14d, %ebp - .bundle_lock - - jle .L_ELSE -# This group would've started at 0x18 and is too long, so a chunky NOP padding -# is inserted to push it to 0x20. -# CHECK: 18: {{[a-f0-9 ]+}} nopl - -# The long encoding for JLE should be used here even though its target is close -# CHECK-NEXT: 20: 0f 8e - - addl %ebp, %eax - - jmp .L_RET -# Same for the JMP -# CHECK: 28: e9 - - .bundle_unlock - -.L_ELSE: - imull %ebx, %eax -.L_RET: - - popq %rbx - diff --git a/llvm/test/MC/X86/AlignedBundling/rodata-section.s b/llvm/test/MC/X86/AlignedBundling/rodata-section.s deleted file mode 100644 index 6c2b41a6f8034..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/rodata-section.s +++ /dev/null @@ -1,30 +0,0 @@ -# RUN: llvm-mc -triple=i686-nacl -filetype=obj %s -o - \ -# RUN: | llvm-objdump --no-print-imm-hex -d --no-show-raw-insn - | FileCheck %s -# RUN: llvm-mc -triple=i686-nacl -filetype=obj -mc-relax-all %s -o - \ -# RUN: | llvm-objdump --no-print-imm-hex -d --no-show-raw-insn - | FileCheck %s - - .bundle_align_mode 5 - .text - .align 32, 0x90 -# CHECK: 0: movl $14, 8(%esp) - movl $.str2, 8(%esp) -# CHECK: 8: movl $7, 4(%esp) - movl $.str1, 4(%esp) -# CHECK: 10: movl $0, (%esp) - movl $.str, (%esp) - - .type .str,@object - .section .rodata,"a",@progbits -.str: - .asciz "hello1" - .size .str, 7 - - .type .str1,@object -.str1: - .asciz "hello2" - .size .str1, 7 - - .type .str2,@object -.str2: - .asciz "hello3" - .size .str2, 7 diff --git a/llvm/test/MC/X86/AlignedBundling/section-alignment.s b/llvm/test/MC/X86/AlignedBundling/section-alignment.s deleted file mode 100644 index d5277d194576e..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/section-alignment.s +++ /dev/null @@ -1,23 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - \ -# RUN: | llvm-readobj --sections - | FileCheck %s - -# Test that bundle-aligned sections with instructions are aligned - - .bundle_align_mode 5 -# CHECK: Sections -# Check that the empty .text section has the default alignment -# CHECK-LABEL: Name: .text -# CHECK-NOT: Name -# CHECK: AddressAlignment: 4 - - .section text1, "x" - imull $17, %ebx, %ebp -# CHECK-LABEL: Name: text1 -# CHECK-NOT: Name -# CHECK: AddressAlignment: 32 - - .section text2, "x" - imull $17, %ebx, %ebp -# CHECK-LABEL: Name: text2 -# CHECK-NOT: Name -# CHECK: AddressAlignment: 32 diff --git a/llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s b/llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s deleted file mode 100644 index 1bcd010240ae3..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/single-inst-bundling.s +++ /dev/null @@ -1,52 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck --check-prefix=CHECK --check-prefix=CHECK-OPT %s -# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu -mcpu=pentiumpro -mc-relax-all %s -o - \ -# RUN: | llvm-objdump -d --no-show-raw-insn - | FileCheck --check-prefix=CHECK --check-prefix=CHECK-RELAX %s - -# Test simple NOP insertion for single instructions. - - .text -foo: - # Will be bundle-aligning to 16 byte boundaries - .bundle_align_mode 4 - pushq %rbp - pushq %r14 - pushq %rbx - - movl %edi, %ebx - callq bar - movl %eax, %r14d - - imull $17, %ebx, %ebp -# This imull is 3 bytes long and should have started at 0xe, so two bytes -# of nop padding are inserted instead and it starts at 0x10 -# CHECK: nop -# CHECK-NEXT: 10: imull - - movl %ebx, %edi - callq bar - cmpl %r14d, %ebp -# CHECK-RELAX: nopl - jle .L_ELSE -# Due to the padding that's inserted before the addl, the jump target -# becomes farther by one byte. -# CHECK-OPT: jle 0x24 -# CHECK-RELAX: jle 0x2d - - addl %ebp, %eax -# CHECK-OPT: nop -# CHECK-OPT-NEXT:20: addl -# CHECK-RELAX: 26: addl - - jmp .L_RET -.L_ELSE: - imull %ebx, %eax -.L_RET: - ret - -# Just verifying that data fills don't drive bundling crazy - .data - .byte 40 - .byte 98 - - diff --git a/llvm/test/MC/X86/AlignedBundling/switch-section-locked-error.s b/llvm/test/MC/X86/AlignedBundling/switch-section-locked-error.s deleted file mode 100644 index 6ea3c36beb1cc..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/switch-section-locked-error.s +++ /dev/null @@ -1,16 +0,0 @@ -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s - -# This test invokes .bundle_lock and then switches to a different section -# w/o the appropriate unlock. - -# CHECK: ERROR: Unterminated .bundle_lock - - .bundle_align_mode 3 - .section text1, "x" - imull $17, %ebx, %ebp - .bundle_lock - imull $17, %ebx, %ebp - - .section text2, "x" - imull $17, %ebx, %ebp - diff --git a/llvm/test/MC/X86/AlignedBundling/unlock-without-lock-error.s b/llvm/test/MC/X86/AlignedBundling/unlock-without-lock-error.s deleted file mode 100644 index 811ef95a451d4..0000000000000 --- a/llvm/test/MC/X86/AlignedBundling/unlock-without-lock-error.s +++ /dev/null @@ -1,11 +0,0 @@ -# RUN: not --crash llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s - -# .bundle_unlock can't come without a .bundle_lock before it - -# CHECK: ERROR: .bundle_unlock without matching lock - - .bundle_align_mode 3 - imull $17, %ebx, %ebp - .bundle_unlock - - diff --git a/llvm/test/MC/X86/align-branch-bundle.s b/llvm/test/MC/X86/align-branch-bundle.s deleted file mode 100644 index aba90f02a8a69..0000000000000 --- a/llvm/test/MC/X86/align-branch-bundle.s +++ /dev/null @@ -1,21 +0,0 @@ -# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown --x86-align-branch-boundary=16 --x86-align-branch=fused+jcc --mc-relax-all %s | llvm-objdump --no-print-imm-hex -d --no-show-raw-insn - | FileCheck %s - -# Check using option --x86-align-branch-boundary=16 --x86-align-branch=fused+jcc --mc-relax-all with bundle won't make code crazy - -# CHECK: 0: pushq %rbp -# CHECK-NEXT: 1: testq $2, %rdx -# CHECK-NEXT: 8: jne -# CHECK-NEXT: e: nop -# CHECK-NEXT: 10: jle - - .text - .p2align 4 -foo: - push %rbp - # Will be bundle-aligning to 8 byte boundaries - .bundle_align_mode 3 - test $2, %rdx - jne foo -# This jle is 6 bytes long and should have started at 0xe, so two bytes -# of nop padding are inserted instead and it starts at 0x10 - jle foo