Tree @release_80 (Download .tar.gz)
- ..
- avx512-shuffles
- GC
- GlobalISel
- 2003-08-03-CallArgLiveRanges.ll
- 2003-08-23-DeadBlockTest.ll
- 2003-11-03-GlobalBool.ll
- 2004-02-13-FrameReturnAddress.ll
- 2004-02-14-InefficientStackPointer.ll
- 2004-02-22-Casts.ll
- 2004-03-30-Select-Max.ll
- 2004-04-13-FPCMOV-Crash.ll
- 2004-06-10-StackifierCrash.ll
- 2004-10-08-SelectSetCCFold.ll
- 2005-01-17-CycleInDAG.ll
- 2005-02-14-IllegalAssembler.ll
- 2005-05-08-FPStackifierPHI.ll
- 2006-01-19-ISelFoldingBug.ll
- 2006-03-01-InstrSchedBug.ll
- 2006-03-02-InstrSchedBug.ll
- 2006-04-04-CrossBlockCrash.ll
- 2006-04-27-ISelFoldingBug.ll
- 2006-05-01-SchedCausingSpills.ll
- 2006-05-02-InstrSched1.ll
- 2006-05-02-InstrSched2.ll
- 2006-05-08-CoalesceSubRegClass.ll
- 2006-05-08-InstrSched.ll
- 2006-05-11-InstrSched.ll
- 2006-05-17-VectorArg.ll
- 2006-05-22-FPSetEQ.ll
- 2006-05-25-CycleInDAG.ll
- 2006-07-10-InlineAsmAConstraint.ll
- 2006-07-12-InlineAsmQConstraint.ll
- 2006-07-20-InlineAsm.ll
- 2006-07-28-AsmPrint-Long-As-Pointer.ll
- 2006-07-31-SingleRegClass.ll
- 2006-08-07-CycleInDAG.ll
- 2006-08-16-CycleInDAG.ll
- 2006-08-21-ExtraMovInst.ll
- 2006-09-01-CycleInDAG.ll
- 2006-10-02-BoolRetCrash.ll
- 2006-10-09-CycleInDAG.ll
- 2006-10-10-FindModifiedNodeSlotBug.ll
- 2006-10-12-CycleInDAG.ll
- 2006-10-13-CycleInDAG.ll
- 2006-10-19-SwitchUnnecessaryBranching.ll
- 2006-11-12-CSRetCC.ll
- 2006-11-17-IllegalMove.ll
- 2006-11-27-SelectLegalize.ll
- 2006-12-16-InlineAsmCrash.ll
- 2006-12-19-IntelSyntax.ll
- 2007-01-08-InstrSched.ll
- 2007-01-08-X86-64-Pointer.ll
- 2007-01-13-StackPtrIndex.ll
- 2007-01-29-InlineAsm-ir.ll
- 2007-02-04-OrAddrMode.ll
- 2007-02-16-BranchFold.ll
- 2007-02-19-LiveIntervalAssert.ll
- 2007-02-23-DAGCombine-Miscompile.ll
- 2007-02-25-FastCCStack.ll
- 2007-03-01-SpillerCrash.ll
- 2007-03-15-GEP-Idx-Sink.ll
- 2007-03-16-InlineAsm.ll
- 2007-03-18-LiveIntervalAssert.ll
- 2007-03-24-InlineAsmMultiRegConstraint.ll
- 2007-03-24-InlineAsmPModifier.ll
- 2007-03-24-InlineAsmVectorOp.ll
- 2007-03-24-InlineAsmXConstraint.ll
- 2007-03-26-CoalescerBug.ll
- 2007-04-08-InlineAsmCrash.ll
- 2007-04-11-InlineAsmVectorResult.ll
- 2007-04-17-LiveIntervalAssert.ll
- 2007-04-24-Huge-Stack.ll
- 2007-04-24-VectorCrash.ll
- 2007-04-27-InlineAsm-IntMemInput.ll
- 2007-05-05-Personality.ll
- 2007-05-05-VecCastExpand.ll
- 2007-05-14-LiveIntervalAssert.ll
- 2007-05-15-maskmovq.ll
- 2007-05-17-ShuffleISelBug.ll
- 2007-06-04-X86-64-CtorAsmBugs.ll
- 2007-06-28-X86-64-isel.ll
- 2007-06-29-DAGCombinerBug.ll
- 2007-06-29-VecFPConstantCSEBug.ll
- 2007-07-03-GR64ToVR64.ll
- 2007-07-10-StackerAssert.ll
- 2007-07-18-Vector-Extract.ll
- 2007-08-01-LiveVariablesBug.ll
- 2007-08-09-IllegalX86-64Asm.ll
- 2007-08-10-SignExtSubreg.ll
- 2007-09-05-InvalidAsm.ll
- 2007-09-06-ExtWeakAliasee.ll
- 2007-09-27-LDIntrinsics.ll
- 2007-10-04-AvoidEFLAGSCopy.ll
- 2007-10-12-CoalesceExtSubReg.ll
- 2007-10-12-SpillerUnfold1.ll
- 2007-10-12-SpillerUnfold2.ll
- 2007-10-14-CoalescerCrash.ll
- 2007-10-15-CoalescerCrash.ll
- 2007-10-16-CoalescerCrash.ll
- 2007-10-19-SpillerUnfold.ll
- 2007-10-28-inlineasm-q-modifier.ll
- 2007-10-29-ExtendSetCC.ll
- 2007-10-30-LSRCrash.ll
- 2007-10-31-extractelement-i64.ll
- 2007-11-01-ISelCrash.ll
- 2007-11-03-x86-64-q-constraint.ll
- 2007-11-04-LiveIntervalCrash.ll
- 2007-11-04-LiveVariablesBug.ll
- 2007-11-04-rip-immediate-constant.ll
- 2007-11-06-InstrSched.ll
- 2007-11-07-MulBy4.ll
- 2007-11-30-LoadFolding-Bug.ll
- 2007-12-16-BURRSchedCrash.ll
- 2007-12-18-LoadCSEBug.ll
- 2008-01-08-IllegalCMP.ll
- 2008-01-08-SchedulerCrash.ll
- 2008-01-09-LongDoubleSin.ll
- 2008-01-16-FPStackifierAssert.ll
- 2008-01-16-InvalidDAGCombineXform.ll
- 2008-02-05-ISelCrash.ll
- 2008-02-06-LoadFoldingBug.ll
- 2008-02-14-BitMiscompile.ll
- 2008-02-18-TailMergingBug.ll
- 2008-02-20-InlineAsmClobber.ll
- 2008-02-22-LocalRegAllocBug.ll
- 2008-02-25-InlineAsmBug.ll
- 2008-02-25-X86-64-CoalescerBug.ll
- 2008-02-26-AsmDirectMemOp.ll
- 2008-02-27-DeadSlotElimBug.ll
- 2008-02-27-PEICrash.ll
- 2008-03-06-frem-fpstack.ll
- 2008-03-07-APIntBug.ll
- 2008-03-10-RegAllocInfLoop.ll
- 2008-03-12-ThreadLocalAlias.ll
- 2008-03-13-TwoAddrPassCrash.ll
- 2008-03-14-SpillerCrash.ll
- 2008-03-19-DAGCombinerBug.ll
- 2008-03-23-DarwinAsmComments.ll
- 2008-03-25-TwoAddrPassBug.ll
- 2008-03-31-SpillerFoldingBug.ll
- 2008-04-02-unnamedEH.ll
- 2008-04-08-CoalescerCrash.ll
- 2008-04-09-BranchFolding.ll
- 2008-04-15-LiveVariableBug.ll
- 2008-04-16-CoalescerBug.ll
- 2008-04-16-ReMatBug.ll
- 2008-04-17-CoalescerBug.ll
- 2008-04-24-MemCpyBug.ll
- 2008-04-24-pblendw-fold-crash.ll
- 2008-04-26-Asm-Optimize-Imm.ll
- 2008-04-28-CoalescerBug.ll
- 2008-04-28-CyclicSchedUnit.ll
- 2008-05-01-InvalidOrdCompare.ll
- 2008-05-09-PHIElimBug.ll
- 2008-05-09-ShuffleLoweringBug.ll
- 2008-05-12-tailmerge-5.ll
- 2008-05-21-CoalescerBug.ll
- 2008-05-22-FoldUnalignedLoad.ll
- 2008-05-28-CoalescerBug.ll
- 2008-05-28-LocalRegAllocBug.ll
- 2008-06-13-NotVolatileLoadStore.ll
- 2008-06-13-VolatileLoadStore.ll
- 2008-06-16-SubregsBug.ll
- 2008-06-25-VecISelBug.ll
- 2008-07-07-DanglingDeadInsts.ll
- 2008-07-09-ELFSectionAttributes.ll
- 2008-07-11-SHLBy1.ll
- 2008-07-16-CoalescerCrash.ll
- 2008-07-19-movups-spills.ll
- 2008-07-22-CombinerCrash.ll
- 2008-07-23-VSetCC.ll
- 2008-08-06-CmpStride.ll
- 2008-08-06-RewriterBug.ll
- 2008-08-17-UComiCodeGenBug.ll
- 2008-08-23-64Bit-maskmovq.ll
- 2008-08-31-EH_RETURN32.ll
- 2008-08-31-EH_RETURN64.ll
- 2008-09-05-sinttofp-2xi32.ll
- 2008-09-09-LinearScanBug.ll
- 2008-09-11-CoalescerBug.ll
- 2008-09-11-CoalescerBug2.ll
- 2008-09-17-inline-asm-1.ll
- 2008-09-18-inline-asm-2.ll
- 2008-09-19-RegAllocBug.ll
- 2008-09-25-sseregparm-1.ll
- 2008-09-26-FrameAddrBug.ll
- 2008-09-29-ReMatBug.ll
- 2008-09-29-VolatileBug.ll
- 2008-10-06-x87ld-nan-1.ll
- 2008-10-06-x87ld-nan-2.ll
- 2008-10-07-SSEISelBug.ll
- 2008-10-11-CallCrash.ll
- 2008-10-13-CoalescerBug.ll
- 2008-10-16-VecUnaryOp.ll
- 2008-10-17-Asm64bitRConstraint.ll
- 2008-10-20-AsmDoubleInI32.ll
- 2008-10-24-FlippedCompare.ll
- 2008-10-27-CoalescerBug.ll
- 2008-10-29-ExpandVAARG.ll
- 2008-11-03-F80VAARG.ll
- 2008-11-06-testb.ll
- 2008-11-13-inlineasm-3.ll
- 2008-11-29-ULT-Sign.ll
- 2008-12-01-loop-iv-used-outside-loop.ll
- 2008-12-01-SpillerAssert.ll
- 2008-12-02-dagcombine-1.ll
- 2008-12-02-dagcombine-2.ll
- 2008-12-02-dagcombine-3.ll
- 2008-12-02-IllegalResultType.ll
- 2008-12-16-dagcombine-4.ll
- 2008-12-19-EarlyClobberBug.ll
- 2008-12-22-dagcombine-5.ll
- 2008-12-23-crazy-address.ll
- 2008-12-23-dagcombine-6.ll
- 2009-01-13-DoubleUpdate.ll
- 2009-01-16-SchedulerBug.ll
- 2009-01-16-UIntToFP.ll
- 2009-01-18-ConstantExprCrash.ll
- 2009-01-25-NoSSE.ll
- 2009-01-26-WrongCheck.ll
- 2009-01-27-NullStrings.ll
- 2009-01-31-BigShift.ll
- 2009-01-31-BigShift2.ll
- 2009-01-31-BigShift3.ll
- 2009-02-01-LargeMask.ll
- 2009-02-03-AnalyzedTwice.ll
- 2009-02-04-sext-i64-gep.ll
- 2009-02-08-CoalescerBug.ll
- 2009-02-09-ivs-different-sizes.ll
- 2009-02-11-codegenprepare-reuse.ll
- 2009-02-12-DebugInfoVLA.ll
- 2009-02-12-InlineAsm-nieZ-constraints.ll
- 2009-02-12-SpillerBug.ll
- 2009-02-21-ExtWeakInitializer.ll
- 2009-02-25-CommuteBug.ll
- 2009-02-26-MachineLICMBug.ll
- 2009-03-03-BitcastLongDouble.ll
- 2009-03-03-BTHang.ll
- 2009-03-05-burr-list-crash.ll
- 2009-03-09-APIntCrash.ll
- 2009-03-09-SpillerBug.ll
- 2009-03-10-CoalescerBug.ll
- 2009-03-12-CPAlignBug.ll
- 2009-03-13-PHIElimBug.ll
- 2009-03-16-PHIElimInLPad.ll
- 2009-03-23-i80-fp80.ll
- 2009-03-23-LinearScanBug.ll
- 2009-03-23-MultiUseSched.ll
- 2009-03-25-TestBug.ll
- 2009-03-26-NoImplicitFPBug.ll
- 2009-04-12-FastIselOverflowCrash.ll
- 2009-04-12-picrel.ll
- 2009-04-13-2AddrAssert-2.ll
- 2009-04-13-2AddrAssert.ll
- 2009-04-14-IllegalRegs.ll
- 2009-04-16-SpillerUnfold.ll
- 2009-04-24.ll
- 2009-04-25-CoalescerBug.ll
- 2009-04-27-CoalescerAssert.ll
- 2009-04-27-LiveIntervalsAssert.ll
- 2009-04-27-LiveIntervalsAssert2.ll
- 2009-04-29-IndirectDestOperands.ll
- 2009-04-29-LinearScanBug.ll
- 2009-04-29-RegAllocAssert.ll
- 2009-04-scale.ll
- 2009-05-08-InlineAsmIOffset.ll
- 2009-05-11-tailmerge-crash.ll
- 2009-05-19-SingleElementExtractElement.ll
- 2009-05-23-available_externally.ll
- 2009-05-23-dagcombine-shifts.ll
- 2009-05-28-DAGCombineCrash.ll
- 2009-05-30-ISelBug.ll
- 2009-06-02-RewriterBug.ll
- 2009-06-03-Win64DisableRedZone.ll
- 2009-06-03-Win64SpillXMM.ll
- 2009-06-04-VirtualLiveIn.ll
- 2009-06-05-sitofpCrash.ll
- 2009-06-05-VariableIndexInsert.ll
- 2009-06-05-VZextByteShort.ll
- 2009-06-06-ConcatVectors.ll
- 2009-06-12-x86_64-tail-call-conv-out-of-sync-bug.ll
- 2009-06-15-not-a-tail-call.ll
- 2009-06-18-movlp-shuffle-register.ll
- 2009-07-06-TwoAddrAssert.ll
- 2009-07-07-SplitICmp.ll
- 2009-07-09-ExtractBoolFromVector.ll
- 2009-07-15-CoalescerBug.ll
- 2009-07-16-CoalescerBug.ll
- 2009-07-19-AsmExtraOperands.ll
- 2009-07-20-CoalescerBug.ll
- 2009-07-20-DAGCombineBug.ll
- 2009-08-06-branchfolder-crash.ll
- 2009-08-06-inlineasm.ll
- 2009-08-08-CastError.ll
- 2009-08-12-badswitch.ll
- 2009-08-14-Win64MemoryIndirectArg.ll
- 2009-08-19-LoadNarrowingMiscompile.ll
- 2009-08-23-SubRegReuseUndo.ll
- 2009-09-10-LoadFoldingBug.ll
- 2009-09-10-SpillComments.ll
- 2009-09-16-CoalescerBug.ll
- 2009-09-19-earlyclobber.ll
- 2009-09-21-NoSpillLoopCount.ll
- 2009-09-22-CoalescerBug.ll
- 2009-09-23-LiveVariablesBug.ll
- 2009-10-14-LiveVariablesBug.ll
- 2009-10-16-Scope.ll
- 2009-10-19-atomic-cmp-eflags.ll
- 2009-10-19-EmergencySpill.ll
- 2009-10-25-RewriterBug.ll
- 2009-11-04-SubregCoalescingBug.ll
- 2009-11-13-VirtRegRewriterBug.ll
- 2009-11-16-MachineLICM.ll
- 2009-11-16-UnfoldMemOpBug.ll
- 2009-11-17-UpdateTerminator.ll
- 2009-11-18-TwoAddrKill.ll
- 2009-11-25-ImpDefBug.ll
- 2009-12-01-EarlyClobberBug.ll
- 2009-12-11-TLSNoRedZone.ll
- 20090313-signext.ll
- 2010-01-05-ZExt-Shl.ll
- 2010-01-07-ISelBug.ll
- 2010-01-08-Atomic64Bug.ll
- 2010-01-11-ExtraPHIArg.ll
- 2010-01-13-OptExtBug.ll
- 2010-01-15-SelectionDAGCycle.ll
- 2010-01-18-DbgValue.ll
- 2010-01-19-OptExtBug.ll
- 2010-02-01-DbgValueCrash.ll
- 2010-02-01-TaillCallCrash.ll
- 2010-02-03-DualUndef.ll
- 2010-02-04-SchedulerBug.ll
- 2010-02-11-NonTemporal.ll
- 2010-02-12-CoalescerBug-Impdef.ll
- 2010-02-15-ImplicitDefBug.ll
- 2010-02-19-TailCallRetAddrBug.ll
- 2010-02-23-DAGCombineBug.ll
- 2010-02-23-DIV8rDefinesAX.ll
- 2010-02-23-RematImplicitSubreg.ll
- 2010-02-23-SingleDefPhiJoin.ll
- 2010-03-04-Mul8Bug.ll
- 2010-03-05-ConstantFoldCFG.ll
- 2010-03-05-EFLAGS-Redef.ll
- 2010-03-17-ISelBug.ll
- 2010-04-06-SSEDomainFixCrash.ll
- 2010-04-08-CoalescerBug.ll
- 2010-04-13-AnalyzeBranchCrash.ll
- 2010-04-21-CoalescerBug.ll
- 2010-04-29-CoalescerCrash.ll
- 2010-04-30-LocalAlloc-LandingPad.ll
- 2010-05-03-CoalescerSubRegClobber.ll
- 2010-05-05-LocalAllocEarlyClobber.ll
- 2010-05-06-LocalInlineAsmClobber.ll
- 2010-05-07-ldconvert.ll
- 2010-05-10-DAGCombinerBug.ll
- 2010-05-12-FastAllocKills.ll
- 2010-05-16-nosseconversion.ll
- 2010-05-25-DotDebugLoc.ll
- 2010-05-26-DotDebugLoc.ll
- 2010-05-26-FP_TO_INT-crash.ll
- 2010-05-28-Crash.ll
- 2010-06-01-DeadArg-DbgInfo.ll
- 2010-06-09-FastAllocRegisters.ll
- 2010-06-14-fast-isel-fs-load.ll
- 2010-06-15-FastAllocEarlyCLobber.ll
- 2010-06-24-g-constraint-crash.ll
- 2010-06-25-asm-RA-crash.ll
- 2010-06-25-CoalescerSubRegDefDead.ll
- 2010-06-28-FastAllocTiedOperand.ll
- 2010-06-28-matched-g-constraint.ll
- 2010-07-02-asm-alignstack.ll
- 2010-07-02-UnfoldBug.ll
- 2010-07-06-asm-RIP.ll
- 2010-07-06-DbgCrash.ll
- 2010-07-11-FPStackLoneUse.ll
- 2010-07-13-indirectXconstraint.ll
- 2010-07-15-Crash.ll
- 2010-07-29-SetccSimplify.ll
- 2010-08-04-MaskedSignedCompare.ll
- 2010-08-04-MingWCrash.ll
- 2010-08-04-StackVariable.ll
- 2010-09-01-RemoveCopyByCommutingDef.ll
- 2010-09-16-asmcrash.ll
- 2010-09-16-EmptyFilename.ll
- 2010-09-17-SideEffectsInChain.ll
- 2010-09-30-CMOV-JumpTable-PHI.ll
- 2010-10-08-cmpxchg8b.ll
- 2010-11-02-DbgParameter.ll
- 2010-11-09-MOVLPS.ll
- 2010-11-18-SelectOfExtload.ll
- 2011-01-07-LegalizeTypesCrash.ll
- 2011-01-10-DagCombineHang.ll
- 2011-01-24-DbgValue-Before-Use.ll
- 2011-02-04-FastRegallocNoFP.ll
- 2011-02-12-shuffle.ll
- 2011-02-21-VirtRegRewriter-KillSubReg.ll
- 2011-02-23-UnfoldBug.ll
- 2011-02-27-Fpextend.ll
- 2011-03-02-DAGCombiner.ll
- 2011-03-08-Sched-crash.ll
- 2011-03-09-Physreg-Coalescing.ll
- 2011-03-30-CreateFixedObjCrash.ll
- 2011-04-13-SchedCmpJmp.ll
- 2011-04-19-sclr-bb.ll
- 2011-05-09-loaduse.ll
- 2011-05-26-UnreachableBlockElim.ll
- 2011-05-27-CrossClassCoalescing.ll
- 2011-06-01-fildll.ll
- 2011-06-03-x87chain.ll
- 2011-06-06-fgetsign80bit.ll
- 2011-06-12-FastAllocSpill.ll
- 2011-06-14-mmx-inlineasm.ll
- 2011-06-14-PreschedRegalias.ll
- 2011-06-19-QuicksortCoalescerBug.ll
- 2011-07-13-BadFrameIndexDisplacement.ll
- 2011-08-23-PerformSubCombine128.ll
- 2011-08-23-Trampoline.ll
- 2011-08-29-BlockConstant.ll
- 2011-08-29-InitOrder.ll
- 2011-09-14-valcoalesce.ll
- 2011-09-18-sse2cmp.ll
- 2011-09-21-setcc-bug.ll
- 2011-10-11-SpillDead.ll
- 2011-10-11-srl.ll
- 2011-10-12-MachineCSE.ll
- 2011-10-18-FastISel-VectorParams.ll
- 2011-10-19-LegelizeLoad.ll
- 2011-10-19-widen_vselect.ll
- 2011-10-21-widen-cmp.ll
- 2011-10-27-tstore.ll
- 2011-10-30-padd.ll
- 2011-11-07-LegalizeBuildVector.ll
- 2011-11-22-AVX2-Domains.ll
- 2011-11-30-or.ll
- 2011-12-06-AVXVectorExtractCombine.ll
- 2011-12-06-BitcastVectorGlobal.ll
- 2011-12-08-AVXISelBugs.ll
- 2011-12-15-vec_shift.ll
- 2011-12-26-extractelement-duplicate-load.ll
- 2011-12-28-vselecti8.ll
- 2011-12-8-bitcastintprom.ll
- 2011-20-21-zext-ui2fp.ll
- 2012-01-10-UndefExceptionEdge.ll
- 2012-01-11-split-cv.ll
- 2012-01-12-extract-sv.ll
- 2012-01-16-mfence-nosse-flags.ll
- 2012-01-18-vbitcast.ll
- 2012-02-12-dagco.ll
- 2012-02-14-scalar.ll
- 2012-02-23-mmx-inlineasm.ll
- 2012-02-29-CoalescerBug.ll
- 2012-03-15-build_vector_wl.ll
- 2012-03-20-LargeConstantExpr.ll
- 2012-03-26-PostRALICMBug.ll
- 2012-04-09-TwoAddrPassBug.ll
- 2012-04-26-sdglue.ll
- 2012-05-17-TwoAddressBug.ll
- 2012-05-19-CoalescerCrash.ll
- 2012-07-10-extload64.ll
- 2012-07-10-shufnorm.ll
- 2012-07-15-broadcastfold.ll
- 2012-07-15-BuildVectorPromote.ll
- 2012-07-15-tconst_shl.ll
- 2012-07-15-vshl.ll
- 2012-07-16-fp2ui-i1.ll
- 2012-07-16-LeaUndef.ll
- 2012-07-17-vtrunc.ll
- 2012-07-23-select_cc.ll
- 2012-08-07-CmpISelBug.ll
- 2012-08-16-setcc.ll
- 2012-08-17-legalizer-crash.ll
- 2012-08-28-UnsafeMathCrash.ll
- 2012-09-13-dagco-fneg.ll
- 2012-09-28-CGPBug.ll
- 2012-1-10-buildvector.ll
- 2012-10-02-DAGCycle.ll
- 2012-10-03-DAGCycle.ll
- 2012-10-18-crash-dagco.ll
- 2012-11-28-merge-store-alias.ll
- 2012-12-1-merge-multiple.ll
- 2012-12-12-DAGCombineCrash.ll
- 2012-12-14-v8fp80-crash.ll
- 2012-12-19-NoImplicitFloat.ll
- 2013-01-09-DAGCombineBug.ll
- 2013-03-13-VEX-DestReg.ll
- 2013-05-06-ConactVectorCrash.ll
- 2013-10-14-FastISel-incorrect-vreg.ll
- 2014-05-29-factorial.ll
- 2014-08-29-CompactUnwind.ll
- 3addr-16bit.ll
- 3addr-or.ll
- 3dnow-intrinsics.ll
- 3dnow-schedule.ll
- 4char-promote.ll
- 9601.ll
- abi-isel.ll
- absolute-bit-mask-fastisel.ll
- absolute-bit-mask.ll
- absolute-bt.ll
- absolute-cmp.ll
- absolute-constant.ll
- absolute-rotate.ll
- add-ext.ll
- add-i64.ll
- add-of-carry.ll
- add-sub-nsw-nuw.ll
- add.ll
- add32ri8.ll
- add_shl_constant.ll
- addcarry.ll
- addcarry2.ll
- addr-label-difference.ll
- addr-mode-matcher.ll
- addr-of-ret-addr.ll
- address-type-promotion-constantexpr.ll
- addrsig.ll
- adx-commute.mir
- adx-intrinsics-upgrade.ll
- adx-intrinsics.ll
- adx-schedule.ll
- aes-schedule.ll
- aes_intrinsics.ll
- alias-gep.ll
- alias-static-alloca.ll
- aliases.ll
- aligned-comm.ll
- aligned-variadic.ll
- alignment-2.ll
- alignment.ll
- all-ones-vector.ll
- alldiv-divdi3.ll
- alloca-align-rounding-32.ll
- alloca-align-rounding.ll
- allrem-moddi3.ll
- and-encoding.ll
- and-load-fold.ll
- and-or-fold.ll
- and-sink.ll
- and-su.ll
- andimm8.ll
- anyext.ll
- anyregcc-crash.ll
- anyregcc.ll
- apm.ll
- AppendingLinkage.ll
- arg-cast.ll
- arg-copy-elide.ll
- asm-block-labels.ll
- asm-global-imm.ll
- asm-indirect-mem.ll
- asm-invalid-register-class-crasher.ll
- asm-label.ll
- asm-label2.ll
- asm-mismatched-types.ll
- asm-modifier-P.ll
- asm-modifier.ll
- asm-reg-type-mismatch.ll
- asm-reject-reg-type-mismatch.ll
- asm-reject-rex.ll
- asm-reject-xmm16.ll
- atom-call-reg-indirect-foldedreload32.ll
- atom-call-reg-indirect-foldedreload64.ll
- atom-call-reg-indirect.ll
- atom-cmpb.ll
- atom-fixup-lea1.ll
- atom-fixup-lea2.ll
- atom-fixup-lea3.ll
- atom-fixup-lea4.ll
- atom-lea-addw-bug.ll
- atom-lea-sp.ll
- atom-pad-short-functions.ll
- atom-sched.ll
- atom-shuf.ll
- atomic-dagsched.ll
- atomic-eflags-reuse.ll
- atomic-flags.ll
- atomic-load-store-wide.ll
- atomic-load-store.ll
- atomic-minmax-i6432.ll
- atomic-non-integer.ll
- atomic-ops-ancient-64.ll
- atomic-or.ll
- atomic-pointer.ll
- atomic128.ll
- atomic16.ll
- atomic32.ll
- atomic64.ll
- atomic6432.ll
- atomic8.ll
- atomic_add.ll
- atomic_idempotent.ll
- atomic_mi.ll
- atomic_op.ll
- Atomics-64.ll
- attribute-sections.ll
- avg-mask.ll
- avg.ll
- avoid-lea-scale2.ll
- avoid-loop-align-2.ll
- avoid-loop-align.ll
- avoid-sfb-kill-flags.mir
- avoid-sfb-offset.mir
- avoid-sfb-overlaps.ll
- avoid-sfb.ll
- avoid_complex_am.ll
- avx-arith.ll
- avx-basic.ll
- avx-bitcast.ll
- avx-brcond.ll
- avx-cast.ll
- avx-cmp.ll
- avx-cvt-2.ll
- avx-cvt-3.ll
- avx-cvt.ll
- avx-cvttp2si.ll
- avx-fp2int.ll
- avx-gfni-intrinsics.ll
- avx-insertelt.ll
- avx-intel-ocl.ll
- avx-intrinsics-fast-isel.ll
- avx-intrinsics-x86-upgrade.ll
- avx-intrinsics-x86.ll
- avx-intrinsics-x86_64.ll
- avx-isa-check.ll
- avx-load-store.ll
- avx-logic.ll
- avx-minmax.ll
- avx-schedule.ll
- avx-select.ll
- avx-shift.ll
- avx-shuffle-x86_32.ll
- avx-splat.ll
- avx-trunc.ll
- avx-unpack.ll
- avx-varargs-x86_64.ll
- avx-vbroadcast.ll
- avx-vbroadcastf128.ll
- avx-vextractf128.ll
- avx-vinsertf128.ll
- avx-vpclmulqdq.ll
- avx-vperm2x128.ll
- avx-vzeroupper.ll
- avx-win64-args.ll
- avx-win64.ll
- avx.ll
- avx1-logical-load-folding.ll
- avx2-arith.ll
- avx2-cmp.ll
- avx2-conversions.ll
- avx2-fma-fneg-combine.ll
- avx2-gather.ll
- avx2-intrinsics-canonical.ll
- avx2-intrinsics-fast-isel.ll
- avx2-intrinsics-x86-upgrade.ll
- avx2-intrinsics-x86.ll
- avx2-logic.ll
- avx2-masked-gather.ll
- avx2-nontemporal.ll
- avx2-phaddsub.ll
- avx2-pmovxrm.ll
- avx2-schedule.ll
- avx2-shift.ll
- avx2-vbroadcast.ll
- avx2-vbroadcasti128.ll
- avx2-vector-shifts.ll
- avx2-vperm.ll
- avx512-adc-sbb.ll
- avx512-any_extend_load.ll
- avx512-arith.ll
- avx512-bugfix-23634.ll
- avx512-bugfix-25270.ll
- avx512-bugfix-26264.ll
- avx512-build-vector.ll
- avx512-calling-conv.ll
- avx512-cmp-kor-sequence.ll
- avx512-cmp.ll
- avx512-cvt-widen.ll
- avx512-cvt.ll
- avx512-cvttp2i.ll
- avx512-ext.ll
- avx512-extract-subvector-load-store.ll
- avx512-extract-subvector.ll
- avx512-fma-commute.ll
- avx512-fma-intrinsics-upgrade.ll
- avx512-fma-intrinsics.ll
- avx512-fma.ll
- avx512-fsel.ll
- avx512-gather-scatter-intrin-deprecated.ll
- avx512-gather-scatter-intrin.ll
- avx512-gfni-intrinsics.ll
- avx512-hadd-hsub.ll
- avx512-i1test.ll
- avx512-inc-dec.ll
- avx512-insert-extract.ll
- avx512-insert-extract_i1.ll
- avx512-intel-ocl.ll
- avx512-intrinsics-canonical.ll
- avx512-intrinsics-fast-isel.ll
- avx512-intrinsics-upgrade.ll
- avx512-intrinsics.ll
- avx512-load-store.ll
- avx512-load-trunc-store-i1.ll
- avx512-logic.ll
- avx512-mask-op.ll
- avx512-mask-spills.ll
- avx512-mask-zext-bugfix.ll
- avx512-masked-memop-64-32.ll
- avx512-masked_memop-16-8.ll
- avx512-memfold.ll
- avx512-mov.ll
- avx512-nontemporal.ll
- avx512-pmovxrm.ll
- avx512-regcall-Mask.ll
- avx512-regcall-NoMask.ll
- avx512-rndscale.ll
- avx512-rotate.ll
- avx512-scalar.ll
- avx512-scalar_mask.ll
- avx512-scalarIntrinsics.ll
- avx512-schedule.ll
- avx512-select.ll
- avx512-shift.ll
- avx512-shuffle-schedule.ll
- avx512-skx-insert-subvec.ll
- avx512-trunc-widen.ll
- avx512-trunc.ll
- avx512-unsafe-fp-math.ll
- avx512-vbroadcast.ll
- avx512-vbroadcasti128.ll
- avx512-vbroadcasti256.ll
- avx512-vec-cmp.ll
- avx512-vec3-crash.ll
- avx512-vpclmulqdq.ll
- avx512-vpermv3-commute.ll
- avx512-vpternlog-commute.ll
- avx512-vselect-crash.ll
- avx512-vselect.ll
- avx512bw-arith.ll
- avx512bw-intrinsics-canonical.ll
- avx512bw-intrinsics-fast-isel.ll
- avx512bw-intrinsics-upgrade.ll
- avx512bw-intrinsics.ll
- avx512bw-mask-op.ll
- avx512bw-mov.ll
- avx512bw-vec-cmp.ll
- avx512bw-vec-test-testn.ll
- avx512bwvl-arith.ll
- avx512bwvl-intrinsics-canonical.ll
- avx512bwvl-intrinsics-fast-isel.ll
- avx512bwvl-intrinsics-upgrade.ll
- avx512bwvl-intrinsics.ll
- avx512bwvl-mov.ll
- avx512bwvl-vec-cmp.ll
- avx512bwvl-vec-test-testn.ll
- avx512cd-intrinsics-fast-isel.ll
- avx512cd-intrinsics-upgrade.ll
- avx512cd-intrinsics.ll
- avx512cdvl-intrinsics-upgrade.ll
- avx512cdvl-intrinsics.ll
- avx512dq-intrinsics-fast-isel.ll
- avx512dq-intrinsics-upgrade.ll
- avx512dq-intrinsics.ll
- avx512dq-mask-op.ll
- avx512dqvl-intrinsics-fast-isel.ll
- avx512dqvl-intrinsics-upgrade.ll
- avx512dqvl-intrinsics.ll
- avx512er-intrinsics.ll
- avx512f-vec-test-testn.ll
- avx512ifma-intrinsics-fast-isel.ll
- avx512ifma-intrinsics-upgrade.ll
- avx512ifma-intrinsics.ll
- avx512ifmavl-intrinsics-fast-isel.ll
- avx512ifmavl-intrinsics-upgrade.ll
- avx512ifmavl-intrinsics.ll
- avx512vbmi-intrinsics-fast-isel.ll
- avx512vbmi-intrinsics-upgrade.ll
- avx512vbmi-intrinsics.ll
- avx512vbmi2-intrinsics-fast-isel.ll
- avx512vbmi2-intrinsics-upgrade.ll
- avx512vbmi2-intrinsics.ll
- avx512vbmi2vl-intrinsics-fast-isel.ll
- avx512vbmi2vl-intrinsics-upgrade.ll
- avx512vbmi2vl-intrinsics.ll
- avx512vbmivl-intrinsics-fast-isel.ll
- avx512vbmivl-intrinsics-upgrade.ll
- avx512vbmivl-intrinsics.ll
- avx512vl-arith.ll
- avx512vl-intrinsics-canonical.ll
- avx512vl-intrinsics-fast-isel.ll
- avx512vl-intrinsics-upgrade.ll
- avx512vl-intrinsics.ll
- avx512vl-logic.ll
- avx512vl-mov.ll
- avx512vl-nontemporal.ll
- avx512vl-vbroadcast.ll
- avx512vl-vec-cmp.ll
- avx512vl-vec-masked-cmp.ll
- avx512vl-vec-test-testn.ll
- avx512vl-vpclmulqdq.ll
- avx512vl_vnni-intrinsics-upgrade.ll
- avx512vl_vnni-intrinsics.ll
- avx512vlcd-intrinsics-fast-isel.ll
- avx512vnni-intrinsics-upgrade.ll
- avx512vnni-intrinsics.ll
- avx512vpopcntdq-intrinsics.ll
- avx512vpopcntdq-schedule.ll
- backpropmask.ll
- bad-tls-fold.mir
- barrier-sse.ll
- barrier.ll
- base-pointer-and-cmpxchg.ll
- basic-promote-integers.ll
- bc-extract.ll
- bigstructret.ll
- bigstructret2.ll
- bit-piece-comment.ll
- bit-test-shift.ll
- bitcast-and-setcc-128.ll
- bitcast-and-setcc-256.ll
- bitcast-and-setcc-512.ll
- bitcast-i256.ll
- bitcast-int-to-vector-bool-sext.ll
- bitcast-int-to-vector-bool-zext.ll
- bitcast-int-to-vector-bool.ll
- bitcast-int-to-vector.ll
- bitcast-mmx.ll
- bitcast-setcc-128.ll
- bitcast-setcc-256.ll
- bitcast-setcc-512.ll
- bitcast.ll
- bitcast2.ll
- bitcnt-false-dep.ll
- bitreverse.ll
- block-placement.ll
- block-placement.mir
- bmi-intrinsics-fast-isel-x86_64.ll
- bmi-intrinsics-fast-isel.ll
- bmi-schedule.ll
- bmi-x86_64.ll
- bmi.ll
- bmi2-schedule.ll
- bmi2-x86_64.ll
- bmi2.ll
- bool-ext-inc.ll
- bool-math.ll
- bool-simplify.ll
- bool-vector.ll
- bool-zext.ll
- br-fold.ll
- branchfolding-catchpads.ll
- branchfolding-debugloc.ll
- branchfolding-landingpads.ll
- branchfolding-undef.mir
- brcond.ll
- break-anti-dependencies.ll
- break-false-dep.ll
- broadcast-elm-cross-splat-vec.ll
- broadcastm-lowering.ll
- bss_pagealigned.ll
- bswap-inline-asm.ll
- bswap-rotate.ll
- bswap-vector.ll
- bswap-wide-int.ll
- bswap.ll
- bswap_tree.ll
- bswap_tree2.ll
- bt.ll
- btc_bts_btr.ll
- btq.ll
- bug26810.ll
- bug37521.ll
- build-vector-128.ll
- build-vector-256.ll
- build-vector-512.ll
- buildvec-extract.ll
- buildvec-insertvec.ll
- bypass-slow-division-32.ll
- bypass-slow-division-64.ll
- bypass-slow-division-tune.ll
- byval-align.ll
- byval-callee-cleanup.ll
- byval.ll
- byval2.ll
- byval3.ll
- byval4.ll
- byval5.ll
- byval6.ll
- byval7.ll
- cache-intrinsic.ll
- call-imm.ll
- call-push.ll
- cas.ll
- cast-vsel.ll
- catch.ll
- catchpad-dynamic-alloca.ll
- catchpad-lifetime.ll
- catchpad-realign-savexmm.ll
- catchpad-regmask.ll
- catchpad-reuse.ll
- catchpad-weight.ll
- catchret-empty-fallthrough.ll
- catchret-fallthrough.ll
- catchret-regmask.ll
- cfi-inserter-cfg-with-merge.mir
- cfi-inserter-check-order.ll
- cfi-inserter-noreturnblock.mir
- cfi-inserter-verify-inconsistent-offset.mir
- cfi-inserter-verify-inconsistent-register.mir
- cfi-xmm.ll
- cfi.ll
- cfstring.ll
- chain_order.ll
- change-compare-stride-1.ll
- change-compare-stride-trickiness-0.ll
- change-compare-stride-trickiness-1.ll
- change-compare-stride-trickiness-2.ll
- change-unsafe-fp-math.ll
- cldemote-intrinsic.ll
- cleanuppad-inalloca.ll
- cleanuppad-large-codemodel.ll
- cleanuppad-realign.ll
- clear-highbits.ll
- clear-lowbits.ll
- clear_upper_vector_element_bits.ll
- clflushopt-schedule.ll
- clflushopt.ll
- clwb-schedule.ll
- clwb.ll
- clz.ll
- clzero-schedule.ll
- clzero.ll
- cmov-double.ll
- cmov-fp.ll
- cmov-into-branch.ll
- cmov-promotion.ll
- cmov-schedule.ll
- cmov.ll
- cmovcmov.ll
- cmp-fast-isel.ll
- cmp.ll
- cmpxchg-clobber-flags.ll
- cmpxchg-i1.ll
- cmpxchg-i128-i1.ll
- cmpxchg16b.ll
- cmpxchg8b.ll
- cmpxchg8b_alloca_regalloc_handling.ll
- coal-sections.ll
- coalesce-dbg-value-subreg-rewrite.mir
- coalesce-dead-lanes.mir
- coalesce-esp.ll
- coalesce-implicitdef.ll
- coalesce_commute_movsd.ll
- coalesce_commute_subreg.ll
- coalescer-commute1.ll
- coalescer-commute2.ll
- coalescer-commute3.ll
- coalescer-commute4.ll
- coalescer-commute5.ll
- coalescer-cross.ll
- coalescer-dce.ll
- coalescer-dce2.ll
- coalescer-identity.ll
- coalescer-remat.ll
- coalescer-subreg.ll
- coalescer-win64.ll
- code-model-elf-memset.ll
- code-model-elf.ll
- code-model-kernel.ll
- code_placement.ll
- code_placement_align_all.ll
- code_placement_cold_loop_blocks.ll
- code_placement_eh.ll
- code_placement_ignore_succ_in_inner_loop.ll
- code_placement_loop_rotation.ll
- code_placement_loop_rotation2.ll
- code_placement_loop_rotation3.ll
- codegen-prepare-addrmode-sext.ll
- codegen-prepare-cast.ll
- codegen-prepare-crash.ll
- codegen-prepare-extload.ll
- codegen-prepare.ll
- codemodel.ll
- coff-comdat.ll
- coff-comdat2.ll
- coff-comdat3.ll
- coff-feat00.ll
- coff-no-dead-strip.ll
- coff-weak.ll
- coldcc64.ll
- combine-64bit-vec-binop.ll
- combine-abs.ll
- combine-add-ssat.ll
- combine-add-usat.ll
- combine-add.ll
- combine-and.ll
- combine-avx-intrinsics.ll
- combine-avx2-intrinsics.ll
- combine-bitselect.ll
- combine-concatvectors.ll
- combine-fabs.ll
- combine-fcopysign.ll
- combine-lds.ll
- combine-mul.ll
- combine-multiplies.ll
- combine-or.ll
- combine-pmuldq.ll
- combine-rotates.ll
- combine-sdiv.ll
- combine-select.ll
- combine-sext-in-reg.ll
- combine-shl.ll
- combine-smax.ll
- combine-smin.ll
- combine-sra.ll
- combine-srem.ll
- combine-srl.ll
- combine-sse41-intrinsics.ll
- combine-sub-ssat.ll
- combine-sub-usat.ll
- combine-sub.ll
- combine-testm-and.ll
- combine-udiv.ll
- combine-umax.ll
- combine-umin.ll
- combine-urem.ll
- commandline-metadata.ll
- commute-3dnow.ll
- commute-blend-avx2.ll
- commute-blend-sse41.ll
- commute-clmul.ll
- commute-fcmp.ll
- commute-intrinsic.ll
- commute-two-addr.ll
- commute-vpclmulqdq-avx.ll
- commute-vpclmulqdq-avx512.ll
- commute-xop.ll
- commuted-blend-mask.ll
- compact-unwind.ll
- compare-add.ll
- compare-global.ll
- compare-inf.ll
- compare_folding.ll
- compiler_used.ll
- complex-asm.ll
- complex-fastmath.ll
- complex-fca.ll
- compress_expand.ll
- computeKnownBits_urem.ll
- condbr_if.ll
- condbr_switch.ll
- conditional-indecrement.ll
- conditional-tailcall-samedest.mir
- conditional-tailcall.ll
- consecutive-load-shuffle.ll
- const-base-addr.ll
- constant-combines.ll
- constant-hoisting-and.ll
- constant-hoisting-bfi.ll
- constant-hoisting-cmp.ll
- constant-hoisting-optnone.ll
- constant-hoisting-shift-immediate.ll
- constant-pool-remat-0.ll
- constant-pool-sharing.ll
- constpool.ll
- constructor.ll
- convert-2-addr-3-addr-inc64.ll
- copy-eflags.ll
- copy-propagation.ll
- copysign-constant-magnitude.ll
- cpus-amd-no-x86_64.ll
- cpus-amd.ll
- cpus-intel-no-x86_64.ll
- cpus-intel.ll
- cpus-no-x86_64.ll
- cpus-other.ll
- crash-lre-eliminate-dead-def.ll
- crash-nosse.ll
- crash-O0.ll
- crash.ll
- critical-anti-dep-breaker.ll
- critical-edge-split-2.ll
- cse-add-with-overflow.ll
- cstring.ll
- ctor-priority-coff.ll
- ctpop-combine.ll
- cvt16.ll
- cvtv2f32.ll
- cxx_tlscc64.ll
- dag-fmf-cse.ll
- dag-merge-fast-accesses.ll
- dag-optnone.ll
- dag-rauw-cse.ll
- dag-update-nodetomatch.ll
- dagcombine-and-setcc.ll
- dagcombine-buildvector.ll
- dagcombine-cse.ll
- dagcombine-select.ll
- dagcombine-shifts.ll
- dagcombine-unsafe-math.ll
- darwin-bzero.ll
- darwin-no-dead-strip.ll
- darwin-preemption.ll
- darwin-quote.ll
- darwin-tls.ll
- dbg-baseptr.ll
- dbg-changes-codegen-branch-folding.ll
- dbg-changes-codegen-branch-folding2.mir
- dbg-changes-codegen.ll
- dbg-combine.ll
- dbg-line-0-no-discriminator.ll
- dbg-value-superreg-copy.mir
- DbgValueOtherTargets.test
- debug-loclists.ll
- debug-nodebug-crash.ll
- debuginfo-locations-dce.ll
- debugloc-argsize.ll
- debugloc-no-line-0.ll
- deopt-bundles.ll
- deopt-intrinsic-cconv.ll
- deopt-intrinsic.ll
- disable-tail-calls.ll
- discontiguous-loops.ll
- discriminate-mem-ops.ll
- div-rem-simplify.ll
- div8.ll
- divide-by-constant.ll
- divide-windows-itanium.ll
- divrem.ll
- divrem8_ext.ll
- dllexport-x86_64.ll
- dllexport.ll
- dllimport-x86_64.ll
- dllimport.ll
- dollar-name.ll
- domain-reassignment-implicit-def.ll
- domain-reassignment-test.ll
- domain-reassignment.mir
- dont-trunc-store-double-to-float.ll
- dropped_constructor.ll
- dwarf-comp-dir.ll
- dwarf-eh-prepare.ll
- dwarf-headers.ll
- dwarf-split-line-1.ll
- dwarf-split-line-2.ll
- dyn-stackalloc.ll
- dyn_alloca_aligned.ll
- dynamic-alloca-in-entry.ll
- dynamic-alloca-lifetime.ll
- dynamic-allocas-VLAs.ll
- dynamic-regmask.ll
- DynamicCalleeSavedRegisters.ll
- early-cfi-sections.ll
- early-ifcvt-crash.ll
- early-ifcvt.ll
- eh-frame-unreachable.ll
- eh-label.ll
- eh-nolandingpads.ll
- eh-null-personality.ll
- eh-unknown.ll
- eh_frame.ll
- eip-addressing-i386.ll
- element-wise-atomic-memory-intrinsics.ll
- elf-associated.ll
- elf-comdat.ll
- elf-comdat2.ll
- emit-big-cst.ll
- empty-function.ll
- empty-functions.ll
- empty-struct-return-type.ll
- emutls-pic.ll
- emutls-pie.ll
- emutls.ll
- emutls_generic.ll
- epilogue-cfi-fp.ll
- epilogue-cfi-no-fp.ll
- epilogue.ll
- equiv_with_fndef.ll
- equiv_with_vardef.ll
- evex-to-vex-compress.mir
- exception-label.ll
- exedeps-movq.ll
- exedepsfix-broadcast.ll
- expand-opaque-const.ll
- expand-post-ra-pseudo.mir
- expand-vr64-gr64-copy.mir
- extend-set-cc-uses-dbg.ll
- extend.ll
- extended-fma-contraction.ll
- extern_weak.ll
- extmul128.ll
- extmul64.ll
- extract-bits.ll
- extract-combine.ll
- extract-concat.ll
- extract-extract.ll
- extract-fp.ll
- extract-insert.ll
- extract-lowbits.ll
- extract-store.ll
- extractelement-from-arg.ll
- extractelement-index.ll
- extractelement-legalization-cycle.ll
- extractelement-legalization-store-ordering.ll
- extractelement-load.ll
- extractelement-shuffle.ll
- extractps.ll
- f16c-intrinsics-fast-isel.ll
- f16c-intrinsics.ll
- f16c-schedule.ll
- fabs.ll
- fadd-combines.ll
- fast-cc-callee-pops.ll
- fast-cc-merge-stack-adj.ll
- fast-cc-pass-in-regs.ll
- fast-isel-abort-warm.ll
- fast-isel-agg-constant.ll
- fast-isel-args-fail.ll
- fast-isel-args-fail2.ll
- fast-isel-args.ll
- fast-isel-atomic.ll
- fast-isel-avoid-unnecessary-pic-base.ll
- fast-isel-bail.ll
- fast-isel-bc.ll
- fast-isel-bitcasts-avx.ll
- fast-isel-bitcasts-avx512.ll
- fast-isel-bitcasts.ll
- fast-isel-branch_weights.ll
- fast-isel-call-bool.ll
- fast-isel-call-cleanup.ll
- fast-isel-call.ll
- fast-isel-cmp-branch.ll
- fast-isel-cmp-branch2.ll
- fast-isel-cmp-branch3.ll
- fast-isel-cmp.ll
- fast-isel-constant.ll
- fast-isel-constpool.ll
- fast-isel-constrain-store-indexreg.ll
- fast-isel-deadcode.ll
- fast-isel-divrem-x86-64.ll
- fast-isel-divrem.ll
- fast-isel-double-half-convertion.ll
- fast-isel-emutls.ll
- fast-isel-expect.ll
- fast-isel-extract.ll
- fast-isel-float-half-convertion.ll
- fast-isel-fneg.ll
- fast-isel-fold-mem.ll
- fast-isel-fptrunc-fpext.ll
- fast-isel-gc-intrinsics.ll
- fast-isel-gep.ll
- fast-isel-gv.ll
- fast-isel-i1.ll
- fast-isel-int-float-conversion-x86-64.ll
- fast-isel-int-float-conversion.ll
- fast-isel-load-i1.ll
- fast-isel-mem.ll
- fast-isel-movsbl-indexreg.ll
- fast-isel-nontemporal.ll
- fast-isel-noplt-pic.ll
- fast-isel-ret-ext.ll
- fast-isel-select-cmov.ll
- fast-isel-select-cmov2.ll
- fast-isel-select-cmp.ll
- fast-isel-select-pseudo-cmov.ll
- fast-isel-select-sse.ll
- fast-isel-select.ll
- fast-isel-sext-zext.ll
- fast-isel-sext.ll
- fast-isel-shift.ll
- fast-isel-sse12-fptoint.ll
- fast-isel-stackcheck.ll
- fast-isel-store.ll
- fast-isel-tailcall.ll
- fast-isel-tls.ll
- fast-isel-trunc-kill-subreg.ll
- fast-isel-uint-float-conversion-x86-64.ll
- fast-isel-uint-float-conversion.ll
- fast-isel-vecload.ll
- fast-isel-x32.ll
- fast-isel-x86-64.ll
- fast-isel-x86.ll
- fast-isel.ll
- fastcall-correct-mangling.ll
- fastcc-2.ll
- fastcc-byval.ll
- fastcc-sret.ll
- fastcc.ll
- fastcc3struct.ll
- fastisel-gep-promote-before-add.ll
- fastisel-softfloat.ll
- fastmath-float-half-conversion.ll
- fcmove.ll
- fdiv-combine.ll
- fdiv.ll
- fentry-insertion.ll
- field-extract-use-trunc.ll
- fildll.ll
- file-directive.ll
- file-source-filename.ll
- finite-libcalls.ll
- fixed-stack-di-mir.ll
- fixup-bw-copy.ll
- fixup-bw-copy.mir
- fixup-bw-inst.ll
- fixup-bw-inst.mir
- fixup-lea.ll
- flags-copy-lowering.mir
- float-asmprint.ll
- float-conv-elim.ll
- floor-soft-float.ll
- fltused.ll
- fltused_function_pointer.ll
- fma-commute-x86.ll
- fma-do-not-commute.ll
- fma-fneg-combine.ll
- fma-intrinsics-canonical.ll
- fma-intrinsics-fast-isel.ll
- fma-intrinsics-phi-213-to-231.ll
- fma-intrinsics-x86-upgrade.ll
- fma-intrinsics-x86.ll
- fma-phi-213-to-231.ll
- fma-scalar-combine.ll
- fma-scalar-memfold.ll
- fma-schedule.ll
- fma.ll
- fma4-commute-x86.ll
- fma4-fneg-combine.ll
- fma4-intrinsics-x86-upgrade.ll
- fma4-intrinsics-x86.ll
- fma4-intrinsics-x86_64-folded-load.ll
- fma4-scalar-memfold.ll
- fma4-schedule.ll
- fma_patterns.ll
- fma_patterns_wide.ll
- fmaddsub-combine.ll
- fmaxnum.ll
- fmf-flags.ll
- fmf-propagation.ll
- fminnum.ll
- fmsubadd-combine.ll
- fmul-combines.ll
- fnabs.ll
- fold-add.ll
- fold-and-shift.ll
- fold-call-2.ll
- fold-call-3.ll
- fold-call-oper.ll
- fold-call.ll
- fold-imm.ll
- fold-load-binops.ll
- fold-load-unops.ll
- fold-load-vec.ll
- fold-load.ll
- fold-mul-lohi.ll
- fold-pcmpeqd-1.ll
- fold-pcmpeqd-2.ll
- fold-push.ll
- fold-rmw-ops.ll
- fold-sext-trunc.ll
- fold-tied-op.ll
- fold-vector-bv-crash.ll
- fold-vector-sext-crash.ll
- fold-vector-sext-crash2.ll
- fold-vector-sext-zext.ll
- fold-vector-shl-crash.ll
- fold-vector-shuffle-crash.ll
- fold-vector-trunc-sitofp.ll
- fold-vex.ll
- fold-xmm-zero.ll
- fold-zext-trunc.ll
- fops-windows-itanium.ll
- force-align-stack-alloca.ll
- force-align-stack.ll
- fp-arith.ll
- fp-cvt.ll
- fp-double-rounding.ll
- fp-elim-and-no-fp-elim.ll
- fp-elim.ll
- fp-fast.ll
- fp-fold.ll
- fp-immediate-shorten.ll
- fp-in-intregs.ll
- fp-intrinsics.ll
- fp-load-trunc.ll
- fp-logic-replace.ll
- fp-logic.ll
- fp-select-cmp-and.ll
- fp-stack-2results.ll
- fp-stack-compare-cmov.ll
- fp-stack-compare.ll
- fp-stack-direct-ret.ll
- fp-stack-O0-crash.ll
- fp-stack-O0.ll
- fp-stack-ret-conv.ll
- fp-stack-ret-store.ll
- fp-stack-ret.ll
- fp-stack-retcopy.ll
- fp-stack-set-st1.ll
- fp-stack.ll
- fp-trunc.ll
- fp-undef.ll
- fp-une-cmp.ll
- fp128-calling-conv.ll
- fp128-cast.ll
- fp128-compare.ll
- fp128-extract.ll
- fp128-g.ll
- fp128-i128.ll
- fp128-libcalls.ll
- fp128-load.ll
- fp128-select.ll
- fp128-store.ll
- fp2sint.ll
- fp_constant_op.ll
- fp_load_cast_fold.ll
- fp_load_fold.ll
- fpcmp-soft-fp.ll
- fpstack-debuginstr-kill.ll
- fptosi-constant.ll
- frame-base.ll
- frame-lowering-debug-intrinsic-2.ll
- frame-lowering-debug-intrinsic.ll
- frame-order.ll
- frameaddr.ll
- frameregister.ll
- frem-msvc32.ll
- fsgsbase-schedule.ll
- fsgsbase.ll
- fshl.ll
- fshr.ll
- fsxor-alignment.ll
- ftrunc.ll
- full-lsr.ll
- funclet-layout.ll
- function-alias.ll
- function-subtarget-features-2.ll
- function-subtarget-features.ll
- funnel-shift-rot.ll
- funnel-shift.ll
- ga-offset.ll
- ga-offset2.ll
- gather-addresses.ll
- gcc_except_table.ll
- gcc_except_table_functions.ll
- gep-expanded-vector.ll
- getelementptr.ll
- gfni-intrinsics.ll
- ghc-cc.ll
- ghc-cc64.ll
- global-access-pie-copyrelocs.ll
- global-access-pie.ll
- global-fill.ll
- global-sections-comdat.ll
- global-sections-tls.ll
- global-sections.ll
- gnu-seh-nolpads.ll
- gpr-to-mask.ll
- greedy_regalloc_bad_eviction_sequence.ll
- gs-fold.ll
- h-register-addressing-32.ll
- h-register-addressing-64.ll
- h-register-store.ll
- h-registers-0.ll
- h-registers-1.ll
- h-registers-2.ll
- h-registers-3.ll
- haddsub-2.ll
- haddsub-3.ll
- haddsub-shuf.ll
- haddsub-undef.ll
- haddsub.ll
- half.ll
- handle-move.ll
- hhvm-cc.ll
- hidden-vis-2.ll
- hidden-vis-3.ll
- hidden-vis-4.ll
- hidden-vis-pic.ll
- hidden-vis.ll
- hipe-cc.ll
- hipe-cc64.ll
- hipe-prologue.ll
- hoist-common.ll
- hoist-invariant-load.ll
- hoist-spill-lpad.ll
- hoist-spill.ll
- horizontal-reduce-smax.ll
- horizontal-reduce-smin.ll
- horizontal-reduce-umax.ll
- horizontal-reduce-umin.ll
- horizontal-shuffle.ll
- huge-stack-offset.ll
- huge-stack-offset2.ll
- i128-and-beyond.ll
- i128-immediate.ll
- i128-mul.ll
- i128-ret.ll
- i128-sdiv.ll
- i16lshr8pat.ll
- i1narrowfail.ll
- i256-add.ll
- i2k.ll
- i386-setjmp-pic.ll
- i386-shrink-wrapping.ll
- i386-tlscall-fastregalloc.ll
- i486-fence-loop.ll
- i64-mem-copy.ll
- i64-to-float.ll
- i686-win-shrink-wrapping.ll
- iabs.ll
- icall-branch-funnel.ll
- icmp-opt.ll
- ident-metadata.ll
- ifunc-asm.ll
- illegal-bitfield-loadstore.ll
- illegal-insert.ll
- illegal-vector-args-return.ll
- immediate_merging.ll
- immediate_merging64.ll
- implicit-null-check-negative.ll
- implicit-null-check.ll
- implicit-null-checks.mir
- implicit-null-chk-reg-rewrite.mir
- implicit-use-spill.mir
- imul-lea-2.ll
- imul-lea.ll
- imul.ll
- inalloca-ctor.ll
- inalloca-invoke.ll
- inalloca-regparm.ll
- inalloca-stdcall.ll
- inalloca.ll
- inconsistent_landingpad.ll
- indirect-branch-tracking.ll
- indirect-hidden.ll
- init-priority.ll
- inline-0bh.ll
- inline-asm-2addr.ll
- inline-asm-A-constraint.ll
- inline-asm-avx-v-constraint-32bit.ll
- inline-asm-avx-v-constraint.ll
- inline-asm-avx512f-v-constraint.ll
- inline-asm-avx512vl-v-constraint-32bit.ll
- inline-asm-avx512vl-v-constraint.ll
- inline-asm-bad-constraint-n.ll
- inline-asm-bad-modifier.ll
- inline-asm-default-clobbers.ll
- inline-asm-duplicated-constraint.ll
- inline-asm-error.ll
- inline-asm-flag-clobber.ll
- inline-asm-fpstack.ll
- inline-asm-h.ll
- inline-asm-modifier-n.ll
- inline-asm-modifier-q.ll
- inline-asm-modifier-V.ll
- inline-asm-mrv.ll
- inline-asm-out-regs.ll
- inline-asm-pic.ll
- inline-asm-ptr-cast.ll
- inline-asm-q-regs.ll
- inline-asm-R-constraint.ll
- inline-asm-sp-clobber-memcpy.ll
- inline-asm-stack-realign.ll
- inline-asm-stack-realign2.ll
- inline-asm-stack-realign3.ll
- inline-asm-tied.ll
- inline-asm-x-scalar.ll
- inline-asm.ll
- inline-sse.ll
- inlineasm-sched-bug.ll
- inreg.ll
- ins_split_regalloc.ll
- ins_subreg_coalesce-1.ll
- ins_subreg_coalesce-2.ll
- ins_subreg_coalesce-3.ll
- insert-into-constant-vector.ll
- insert-loaded-scalar.ll
- insert-positions.ll
- insert-prefetch-inline.afdo
- insert-prefetch-inline.ll
- insert-prefetch-invalid-instr.afdo
- insert-prefetch-invalid-instr.ll
- insert-prefetch-other.afdo
- insert-prefetch.afdo
- insert-prefetch.ll
- insertelement-copytoregs.ll
- insertelement-duplicates.ll
- insertelement-legalize.ll
- insertelement-ones.ll
- insertelement-shuffle.ll
- insertelement-var-index.ll
- insertelement-zero.ll
- insertps-combine.ll
- insertps-from-constantpool.ll
- insertps-O0-bug.ll
- insertps-unfold-load-bug.ll
- instr-symbols.mir
- int-intrinsic.ll
- intersect-fma-fmf.ll
- interval-update-remat.ll
- invalid-liveness.mir
- invalid-shift-immediate.ll
- invpcid-intrinsic.ll
- ipra-inline-asm.ll
- ipra-local-linkage.ll
- ipra-reg-alias.ll
- ipra-reg-usage.ll
- ipra-transform.ll
- is-constant.ll
- isel-optnone.ll
- isel-sink.ll
- isel-sink2.ll
- isel-sink3.ll
- isint.ll
- isnan.ll
- isnan2.ll
- ispositive.ll
- jump_sign.ll
- known-bits-vector.ll
- known-bits.ll
- known-signbits-vector.ll
- kshift.ll
- label-annotation.ll
- label-redefinition.ll
- lack-of-signed-truncation-check.ll
- lakemont.ll
- large-code-model-isel.ll
- large-constants.ll
- large-gep-chain.ll
- large-gep-scale.ll
- large-global.ll
- large-pic-string.ll
- late-address-taken.ll
- late-remat-update-2.mir
- late-remat-update.mir
- ldzero.ll
- lea-2.ll
- lea-3.ll
- lea-4.ll
- lea-5.ll
- lea-opt-cse1.ll
- lea-opt-cse2.ll
- lea-opt-cse3.ll
- lea-opt-cse4.ll
- lea-opt-memop-check-1.ll
- lea-opt-memop-check-2.ll
- lea-opt-with-debug.mir
- lea-opt.ll
- lea-recursion.ll
- lea.ll
- lea32-schedule.ll
- lea64-schedule.ll
- leaf-fp-elim.ll
- leaFixup32.mir
- leaFixup64.mir
- legalize-fmp-oeq-vector-select.ll
- legalize-libcalls.ll
- legalize-shift-64.ll
- legalize-shift.ll
- legalize-shl-vec.ll
- legalize-sub-zero-2.ll
- legalize-sub-zero.ll
- legalize-types-remapid.ll
- legalizedag_vec.ll
- libcall-sret.ll
- licm-dominance.ll
- licm-nested.ll
- licm-regpressure.ll
- licm-symbol.ll
- limit-split-cost.mir
- limited-prec.ll
- linux-preemption.ll
- lit.local.cfg
- live-out-reg-info.ll
- live-range-nosubreg.ll
- liveness-local-regalloc.ll
- llc-override-mcpu-mattr.ll
- llc-print-machineinstrs.mir
- llc-start-stop-instance.ll
- load-combine-dbg.ll
- load-combine.ll
- load-scalar-as-vector.ll
- load-slice.ll
- loadStore_vectorizer.ll
- loc-remat.ll
- local_stack_symbol_ordering.ll
- localescape.ll
- log2_not_readnone.ll
- logical-load-fold.ll
- long-setcc.ll
- longlong-deadload.ll
- loop-blocks.ll
- loop-hoist.ll
- loop-search.ll
- loop-strength-reduce-2.ll
- loop-strength-reduce-3.ll
- loop-strength-reduce-crash.ll
- loop-strength-reduce.ll
- loop-strength-reduce2.ll
- loop-strength-reduce4.ll
- loop-strength-reduce5.ll
- loop-strength-reduce6.ll
- loop-strength-reduce7.ll
- loop-strength-reduce8.ll
- lower-bitcast.ll
- lower-vec-shift-2.ll
- lower-vec-shift.ll
- lower-vec-shuffle-bug.ll
- lrshrink.ll
- lsr-crash-empty-uses.ll
- lsr-delayed-fold.ll
- lsr-i386.ll
- lsr-interesting-step.ll
- lsr-loop-exit-cond.ll
- lsr-negative-stride.ll
- lsr-nonaffine.ll
- lsr-normalization.ll
- lsr-overflow.ll
- lsr-quadratic-expand.ll
- lsr-redundant-addressing.ll
- lsr-reuse-trunc.ll
- lsr-reuse.ll
- lsr-sort.ll
- lsr-static-addr.ll
- lsr-wrap.ll
- lwp-intrinsics-x86_64.ll
- lwp-intrinsics.ll
- lwp-schedule.ll
- lzcnt-schedule.ll
- lzcnt-tzcnt.ll
- lzcnt-zext-cmp.ll
- lzcnt.ll
- machine-combiner-int-vec.ll
- machine-combiner-int.ll
- machine-combiner.ll
- machine-copy-prop.mir
- machine-cp-debug.mir
- machine-cp.ll
- machine-cse.ll
- machine-outliner-debuginfo.ll
- machine-outliner-disubprogram.ll
- machine-outliner-noredzone.ll
- machine-outliner-tailcalls.ll
- machine-outliner.ll
- machine-region-info.mir
- machine-sink-and-implicit-null-checks.ll
- machine-sink.ll
- machine-trace-metrics-crash.ll
- MachineBranchProb.ll
- MachineSink-CritEdge.ll
- MachineSink-DbgValue.ll
- MachineSink-eflags.ll
- machinesink-merge-debuginfo.ll
- machinesink-null-debuginfo.ll
- MachineSink-PHIUse.ll
- MachineSink-SubReg.ll
- macho-comdat.ll
- macho-trap.ll
- madd.ll
- mangle-question-mark.ll
- mask-negated-bool.ll
- masked-iv-safe.ll
- masked-iv-unsafe.ll
- masked_gather.ll
- masked_gather_scatter.ll
- masked_gather_scatter_widen.ll
- masked_load.ll
- masked_store.ll
- maskmovdqu.ll
- materialize.ll
- mature-mc-support.ll
- mbp-false-cfg-break.ll
- mcinst-avx-lowering.ll
- mcinst-lowering.ll
- mcu-abi.ll
- mem-intrin-base-reg.ll
- mem-promote-integers.ll
- membarrier.ll
- memcmp-mergeexpand.ll
- memcmp-minsize.ll
- memcmp-optsize.ll
- memcmp.ll
- memcpy-2.ll
- memcpy-from-string.ll
- memcpy-struct-by-value.ll
- memcpy.ll
- mempcpy-32.ll
- mempcpy.ll
- memset-2.ll
- memset-3.ll
- memset-nonzero.ll
- memset-sse-stack-realignment.ll
- memset-zero.ll
- memset.ll
- memset64-on-x86-32.ll
- merge-consecutive-loads-128.ll
- merge-consecutive-loads-256.ll
- merge-consecutive-loads-512.ll
- merge-consecutive-stores-i1.ll
- merge-consecutive-stores.ll
- merge-sp-update-lea.ll
- merge-sp-updates-cfi.ll
- merge-store-constants.ll
- merge-store-partially-alias-loads.ll
- merge-vector-stores-scale-idx-crash.ll
- merge_store.ll
- merge_store_duplicated_loads.ll
- MergeConsecutiveStores.ll
- mfence.ll
- min-legal-vector-width.ll
- mingw-alloca.ll
- mingw-comdats-xdata.ll
- mingw-comdats.ll
- mingw-refptr.ll
- misaligned-memset.ll
- misched-aa-colored.ll
- misched-aa-mmos.ll
- misched-balance.ll
- misched-code-difference-with-debug.ll
- misched-copy.ll
- misched-crash.ll
- misched-fusion.ll
- misched-ilp.ll
- misched-matmul.ll
- misched-matrix.ll
- misched-new.ll
- misched_phys_reg_assign_order.ll
- mmx-arg-passing-x86-64.ll
- mmx-arg-passing.ll
- mmx-arith.ll
- mmx-bitcast-fold.ll
- mmx-bitcast.ll
- mmx-build-vector.ll
- mmx-coalescing.ll
- mmx-copy-gprs.ll
- mmx-cvt.ll
- mmx-fold-load.ll
- mmx-fold-zero.ll
- mmx-intrinsics.ll
- mmx-only.ll
- mmx-schedule.ll
- mod128.ll
- movbe-schedule.ll
- movbe.ll
- movddup-load-fold.ll
- movdir-intrinsic-x86.ll
- movdir-intrinsic-x86_64.ll
- movfs.ll
- movgs.ll
- movmsk-cmp.ll
- movmsk.ll
- movntdq-no-avx.ll
- movpc32-check.ll
- movtopush.ll
- movtopush.mir
- movtopush64.ll
- ms-inline-asm-avx512.ll
- ms-inline-asm-redundant-clobber.ll
- ms-inline-asm.ll
- mul-constant-i16.ll
- mul-constant-i32.ll
- mul-constant-i64.ll
- mul-constant-i8.ll
- mul-constant-result.ll
- mul-i1024.ll
- mul-i256.ll
- mul-i512.ll
- mul-legalize.ll
- mul-remat.ll
- mul-shift-reassoc.ll
- mul128.ll
- mul128_sext_loop.ll
- mul64.ll
- muloti.ll
- mult-alt-generic-i686.ll
- mult-alt-generic-x86_64.ll
- mult-alt-x86.ll
- multiple-loop-post-inc.ll
- multiple-return-values-cross-block.ll
- mulvi32.ll
- mulx32.ll
- mulx64.ll
- musttail-fastcall.ll
- musttail-indirect.ll
- musttail-thiscall.ll
- musttail-varargs.ll
- musttail.ll
- mwaitx-schedule.ll
- mwaitx.ll
- named-reg-alloc.ll
- named-reg-notareg.ll
- nancvt.ll
- narrow-shl-cst.ll
- narrow-shl-load.ll
- narrow_op-1.ll
- neg-shl-add.ll
- neg_cmp.ll
- neg_fp.ll
- negate-add-zero.ll
- negate-i1.ll
- negate-shift.ll
- negate.ll
- negative-offset.ll
- negative-sin.ll
- negative-stride-fptosi-user.ll
- negative-subscript.ll
- negative_zero.ll
- new-remat.ll
- newline-and-quote.ll
- no-and8ri8.ll
- no-cmov.ll
- no-plt-libcalls.ll
- no-plt.ll
- no-prolog-kill.ll
- no-sse2-avg.ll
- no-stack-arg-probe.ll
- nobt.ll
- nocf_check.ll
- nocx16.ll
- non-lazy-bind.ll
- non-unique-sections.ll
- non-value-mem-operand.mir
- nonconst-static-ev.ll
- nonconst-static-iv.ll
- nontemporal-2.ll
- nontemporal-loads.ll
- nontemporal.ll
- noreturn-call.ll
- norex-subreg.ll
- nosse-error1.ll
- nosse-error2.ll
- nosse-varargs.ll
- nosse-vector.ll
- not-and-simplify.ll
- note-cet-property.ll
- note-sections.ll
- null-streamer.ll
- O0-pipeline.ll
- O3-pipeline.ll
- objc-gc-module-flags.ll
- object-size.ll
- oddshuffles.ll
- opaque-constant-asm.ll
- opt-ext-uses.ll
- opt-shuff-tstore.ll
- opt_phis.mir
- opt_phis2.mir
- optimize-max-0.ll
- optimize-max-1.ll
- optimize-max-2.ll
- optimize-max-3.ll
- or-address.ll
- or-branch.ll
- or-lea.ll
- osx-private-labels.ll
- overflow-intrinsic-setcc-fold.ll
- overflow.ll
- overlap-shift.ll
- packed_struct.ll
- packss.ll
- paddus.ll
- palignr.ll
- parity.ll
- partial-fold32.ll
- partial-fold64.ll
- pass-three.ll
- patchable-prologue.ll
- patchpoint-invoke.ll
- patchpoint-verifiable.mir
- patchpoint-webkit_jscc.ll
- patchpoint.ll
- pause.ll
- peep-setb.ll
- peep-test-0.ll
- peep-test-1.ll
- peep-test-2.ll
- peep-test-3.ll
- peep-test-4.ll
- peephole-cvt-sse.ll
- peephole-fold-movsd.ll
- peephole-multiple-folds.ll
- peephole-na-phys-copy-folding.ll
- peephole-recurrence.mir
- peephole.mir
- personality.ll
- personality_size.ll
- phaddsub-extract.ll
- phaddsub-undef.ll
- phaddsub.ll
- phi-bit-propagation.ll
- phi-immediate-factoring.ll
- phielim-split.ll
- phys-reg-local-regalloc.ll
- phys_subreg_coalesce-2.ll
- phys_subreg_coalesce-3.ll
- phys_subreg_coalesce.ll
- physreg-pairs-error.ll
- physreg-pairs.ll
- pic-load-remat.ll
- pic.ll
- pic_jumptable.ll
- pie.ll
- pku.ll
- pmaddubsw.ll
- pmovext.ll
- pmovsx-inreg.ll
- pmul.ll
- pmulh.ll
- pmulld.ll
- pointer-vector.ll
- pop-stack-cleanup-msvc.ll
- pop-stack-cleanup.ll
- popcnt-schedule.ll
- popcnt.ll
- post-ra-sched-with-debug.mir
- post-ra-sched.ll
- postalloc-coalescing.ll
- postra-ignore-dbg-instrs.mir
- postra-licm.ll
- pow.ll
- powi.ll
- pr10068.ll
- pr10475.ll
- pr10499.ll
- pr10523.ll
- pr10524.ll
- pr10525.ll
- pr10526.ll
- pr11202.ll
- pr11334.ll
- pr11415.ll
- pr11468.ll
- pr11985.ll
- pr11998.ll
- pr12360.ll
- pr12889.ll
- pr13209.ll
- pr13220.ll
- pr13458.ll
- pr13577.ll
- pr13859.ll
- pr13899.ll
- pr14088.ll
- pr14098.ll
- pr14161.ll
- pr14204.ll
- pr14314.ll
- pr14333.ll
- pr14562.ll
- pr1462.ll
- pr1489.ll
- pr1505.ll
- pr1505b.ll
- pr15267.ll
- pr15296.ll
- pr15309.ll
- pr15705.ll
- pr15981.ll
- pr16031.ll
- pr16360.ll
- pr16807.ll
- pr17546.ll
- pr17631.ll
- pr17764.ll
- pr18014.ll
- pr18054.ll
- pr18162.ll
- pr18344.ll
- pr18846.ll
- pr19049.ll
- pr20011.ll
- pr20012.ll
- pr20020.ll
- pr20088.ll
- pr21099.ll
- pr2177.ll
- pr21792.ll
- pr2182.ll
- pr22019.ll
- pr22103.ll
- pr22338.ll
- pr22774.ll
- pr22970.ll
- pr23103.ll
- pr23246.ll
- pr2326.ll
- pr23273.ll
- pr23603.ll
- pr23664.ll
- pr24139.ll
- pr24374.ll
- pr24602.ll
- pr25828.ll
- pr2585.ll
- pr26350.ll
- pr2656.ll
- pr2659.ll
- pr26625.ll
- pr26652.ll
- pr26757.ll
- pr26835.ll
- pr26870.ll
- pr27071.ll
- pr27501.ll
- pr27591.ll
- pr27681.mir
- pr28129.ll
- pr28173.ll
- pr28444.ll
- pr28472.ll
- pr28489.ll
- pr2849.ll
- pr28504.ll
- pr28515.ll
- pr28560.ll
- pr28824.ll
- pr29010.ll
- pr29022.ll
- pr29061.ll
- pr29112.ll
- pr29170.ll
- pr29222.ll
- pr2924.ll
- pr2982.ll
- pr30284.ll
- pr30290.ll
- pr30430.ll
- pr30511.ll
- pr30562.ll
- pr30813.ll
- pr30821.mir
- pr31045.ll
- pr31088.ll
- pr31143.ll
- pr31242.ll
- pr31271.ll
- pr31323.ll
- pr3154.ll
- pr31593.ll
- pr31773.ll
- pr31956.ll
- pr32108.ll
- pr3216.ll
- pr32241.ll
- pr32256.ll
- pr32278.ll
- pr32282.ll
- pr32284.ll
- pr32329.ll
- pr32340.ll
- pr32345.ll
- pr32368.ll
- pr3241.ll
- pr32420.ll
- pr3243.ll
- pr3244.ll
- pr32451.ll
- pr32484.ll
- pr3250.ll
- pr32515.ll
- pr32588.ll
- pr32610.ll
- pr32659.ll
- pr32907.ll
- pr3317.ll
- pr33290.ll
- pr33349.ll
- pr33396.ll
- pr3366.ll
- pr33715.ll
- pr33747.ll
- pr33772.ll
- pr33828.ll
- pr33844.ll
- pr33954.ll
- pr33960.ll
- pr34080-2.ll
- pr34080.ll
- pr34088.ll
- pr34137.ll
- pr34139.ll
- pr34149.ll
- pr34177.ll
- pr34271-1.ll
- pr34271.ll
- pr34381.ll
- pr34397.ll
- pr34421.ll
- PR34565.ll
- pr3457.ll
- pr34592.ll
- pr34605.ll
- pr34629.ll
- pr34634.ll
- pr34653.ll
- pr34657.ll
- pr34855.ll
- pr3522.ll
- pr35272.ll
- pr35316.ll
- pr35399.ll
- pr35443.ll
- pr35636.ll
- pr35761.ll
- pr35763.ll
- pr35765.ll
- pr35918.ll
- pr35972.ll
- pr35982.ll
- pr36199.ll
- pr36274.ll
- pr36312.ll
- pr36553.ll
- pr36602.ll
- pr36865.ll
- pr37063.ll
- pr37264.ll
- PR37310.mir
- pr37359.ll
- pr37499.ll
- pr37820.ll
- pr37826.ll
- pr37879.ll
- pr37916.ll
- pr38038.ll
- pr38185.ll
- pr38217.ll
- pr38533.ll
- pr38539.ll
- pr38639.ll
- pr38738.ll
- pr38743.ll
- pr38762.ll
- pr38763.ll
- pr38795.ll
- pr38803.ll
- pr38819.ll
- pr38865-2.ll
- pr38865-3.ll
- pr38865.ll
- pr38952.mir
- pr39187-g.ll
- pr39243.ll
- pr39733.ll
- pr39896.ll
- pr39926.ll
- pr40090.ll
- pr40289-64bit.ll
- pr40289.ll
- PR40322.ll
- pr40529.ll
- pr40730.ll
- pr40891.ll
- pr5145.ll
- pr7882.ll
- pr9127.ll
- pr9517.ll
- pr9743.ll
- pre-coalesce-2.ll
- pre-coalesce.ll
- pre-coalesce.mir
- pre-ra-sched.ll
- prefer-avx256-lzcnt.ll
- prefer-avx256-mask-extend.ll
- prefer-avx256-mask-shuffle.ll
- prefer-avx256-popcnt.ll
- prefer-avx256-shift.ll
- prefer-avx256-trunc.ll
- prefer-avx256-wide-mul.ll
- prefetch.ll
- prefixdata.ll
- preserve_allcc64.ll
- preserve_mostcc64.ll
- private-2.ll
- private.ll
- prolog-push-seq.ll
- prologue-epilogue-remarks.mir
- prologuedata.ll
- promote-assert-zext.ll
- promote-i16.ll
- promote-trunc.ll
- promote-vec3.ll
- promote.ll
- ps4-noreturn.ll
- pseudo_cmov_lower.ll
- pseudo_cmov_lower1.ll
- pseudo_cmov_lower2.ll
- pshufb-mask-comments.ll
- pshufd-combine-crash.ll
- psubus.ll
- ptest.ll
- ptr-rotate.ll
- ptrtoint-constexpr.ll
- ptwrite32-intrinsic.ll
- ptwrite64-intrinsic.ll
- push-cfi-debug.ll
- push-cfi-obj.ll
- push-cfi.ll
- ragreedy-bug.ll
- ragreedy-hoist-spill.ll
- ragreedy-last-chance-recoloring.ll
- rd-mod-wr-eflags.ll
- rdpid-schedule.ll
- rdpid.ll
- rdpmc.ll
- rdrand-schedule.ll
- rdrand-x86_64.ll
- rdrand.ll
- rdseed-schedule.ll
- rdseed-x86_64.ll
- rdseed.ll
- rdtsc-upgrade.ll
- rdtsc.ll
- read-fp-no-frame-pointer.ll
- recip-fastmath.ll
- recip-fastmath2.ll
- recip-pic.ll
- red-zone.ll
- red-zone2.ll
- reduce-trunc-shl.ll
- regalloc-advanced-split-cost.ll
- regalloc-copy-hints.mir
- regalloc-reconcile-broken-hints.ll
- regalloc-spill-at-ehpad.ll
- regcall-no-plt.ll
- reghinting.ll
- regparm.ll
- regpressure.ll
- rem.ll
- rem_crash.ll
- remat-constant.ll
- remat-fold-load.ll
- remat-mov-0.ll
- remat-phys-dead.ll
- remat-scalar-zero.ll
- replace-load-and-with-bzhi.ll
- replace_unsupported_masked_mem_intrin.ll
- ret-addr.ll
- ret-i64-0.ll
- ret-mmx.ll
- retpoline-external.ll
- retpoline-regparm.ll
- retpoline.ll
- return-ext.ll
- return_zeroext_i2.ll
- returned-trunc-tail-calls.ll
- reverse_branches.ll
- rip-rel-address.ll
- rip-rel-lea.ll
- rodata-relocs.ll
- rot16.ll
- rot32.ll
- rot64.ll
- rotate-extract-vector.ll
- rotate-extract.ll
- rotate.ll
- rotate2.ll
- rotate4.ll
- rotate_vec.ll
- rounding-ops.ll
- rrlist-livereg-corrutpion.ll
- rtm-schedule.ll
- rtm.ll
- sad.ll
- sad_variations.ll
- sadd_sat.ll
- sadd_sat_vec.ll
- saddo-redundant-add.ll
- safestack.ll
- safestack_inline.ll
- safestack_ssp.ll
- sandybridge-loads.ll
- sar_fold.ll
- sar_fold64.ll
- sat-add.ll
- sbb.ll
- scalar-extract.ll
- scalar-fp-to-i64.ll
- scalar-int-to-fp.ll
- scalar-min-max-fill-operand.ll
- scalar_sse_minmax.ll
- scalar_widen_div.ll
- scalarize-bitcast.ll
- scalarize-fp.ll
- scatter-schedule.ll
- scavenger.mir
- scev-interchange.ll
- schedule-x86-64-shld.ll
- schedule-x86_32.ll
- schedule-x86_64.ll
- scheduler-backtracking.ll
- sdiv-exact.ll
- sdiv-pow2.ll
- section_mergeable_size.ll
- segmented-stacks-dynamic.ll
- segmented-stacks-standalone.ll
- segmented-stacks.ll
- seh-catch-all-win32.ll
- seh-catch-all.ll
- seh-catchpad.ll
- seh-except-finally.ll
- seh-exception-code.ll
- seh-filter-no-personality.ll
- seh-finally.ll
- seh-no-invokes.ll
- seh-safe-div-win32.ll
- seh-safe-div.ll
- seh-stack-realign.ll
- select-1-or-neg1.ll
- select-mmx.ll
- select-of-fp-constants.ll
- select-with-and-or.ll
- select.ll
- select_const.ll
- select_meta.ll
- selectcc-to-shiftand.ll
- selectiondag-crash.ll
- selectiondag-cse.ll
- selectiondag-debug-loc.ll
- selectiondag-dominator.ll
- selectiondag-order.ll
- setcc-combine.ll
- setcc-logic.ll
- setcc-lowering.ll
- setcc-narrowing.ll
- setcc-wide-types.ll
- setcc.ll
- setjmp-spills.ll
- setoeq.ll
- setuge.ll
- sext-i1.ll
- sext-load.ll
- sext-ret-val.ll
- sext-setcc-self.ll
- sext-subreg.ll
- sext-trunc.ll
- sha-schedule.ll
- sha.ll
- shadow-call-stack.mir
- shadow-stack.ll
- shift-and.ll
- shift-avx2-crash.ll
- shift-bmi2.ll
- shift-coalesce.ll
- shift-codegen.ll
- shift-combine-crash.ll
- shift-combine.ll
- shift-double-x86_64.ll
- shift-double.ll
- shift-folding.ll
- shift-i128.ll
- shift-i256.ll
- shift-one.ll
- shift-pair.ll
- shift-parts.ll
- shift-pcmp.ll
- shl-anyext.ll
- shl-crash-on-legalize.ll
- shl-i64.ll
- shl_elim.ll
- shl_undef.ll
- shrink-compare.ll
- shrink-fp-const1.ll
- shrink-fp-const2.ll
- shrink-wrap-chkstk-x86_64.ll
- shrink-wrap-chkstk.ll
- shrink-wrapping-vla.ll
- shrink_vmul-widen.ll
- shrink_vmul.ll
- shrink_vmul_sse.ll
- shrink_wrap_dbg_value.mir
- shrinkwrap-hang.ll
- shuffle-combine-crash-2.ll
- shuffle-combine-crash.ll
- shuffle-of-insert.ll
- shuffle-of-splat-multiuses.ll
- shuffle-strided-with-offset-128.ll
- shuffle-strided-with-offset-256.ll
- shuffle-strided-with-offset-512.ll
- shuffle-vs-trunc-128-widen.ll
- shuffle-vs-trunc-128.ll
- shuffle-vs-trunc-256-widen.ll
- shuffle-vs-trunc-256.ll
- shuffle-vs-trunc-512-widen.ll
- shuffle-vs-trunc-512.ll
- sibcall-2.ll
- sibcall-3.ll
- sibcall-4.ll
- sibcall-5.ll
- sibcall-6.ll
- sibcall-byval.ll
- sibcall-win64.ll
- sibcall.ll
- signbit-shift.ll
- signed-truncation-check.ll
- simple-register-allocation-read-undef.mir
- simple-zext.ll
- sincos-opt.ll
- sincos.ll
- sink-blockfreq.ll
- sink-cheap-instructions.ll
- sink-gep-before-mem-inst.ll
- sink-hoist.ll
- sink-local-value.ll
- sink-out-of-loop.ll
- sitofp.ll
- sjlj-baseptr.ll
- sjlj-eh.ll
- sjlj-shadow-stack-liveness.mir
- sjlj.ll
- slow-incdec.ll
- slow-pmulld.ll
- slow-unaligned-mem.ll
- small-byval-memcpy.ll
- smul-with-overflow.ll
- smul_fix.ll
- soft-fp-legal-in-HW-reg.ll
- soft-fp.ll
- soft-sitofp.ll
- speculative-load-hardening-call-and-ret.ll
- speculative-load-hardening-gather.ll
- speculative-load-hardening-indirect.ll
- speculative-load-hardening.ll
- splat-const.ll
- splat-for-size.ll
- split-eh-lpad-edges.ll
- split-extend-vector-inreg.ll
- split-store.ll
- split-vector-bitcast.ll
- split-vector-rem.ll
- sqrt-fastmath-mir.ll
- sqrt-fastmath-tune.ll
- sqrt-fastmath.ll
- sqrt-partial.ll
- sqrt.ll
- sret-implicit.ll
- sse-align-0.ll
- sse-align-1.ll
- sse-align-10.ll
- sse-align-11.ll
- sse-align-12.ll
- sse-align-2.ll
- sse-align-3.ll
- sse-align-4.ll
- sse-align-5.ll
- sse-align-6.ll
- sse-align-7.ll
- sse-align-8.ll
- sse-align-9.ll
- sse-commute.ll
- sse-cvttp2si.ll
- sse-domains.ll
- sse-fcopysign.ll
- sse-fsignum.ll
- sse-intel-ocl.ll
- sse-intrinsics-fast-isel-x86_64.ll
- sse-intrinsics-fast-isel.ll
- sse-intrinsics-x86-upgrade.ll
- sse-intrinsics-x86.ll
- sse-intrinsics-x86_64-upgrade.ll
- sse-intrinsics-x86_64.ll
- sse-load-ret.ll
- sse-minmax.ll
- sse-only.ll
- sse-regcall.ll
- sse-scalar-fp-arith-unary.ll
- sse-scalar-fp-arith.ll
- sse-schedule.ll
- sse-unaligned-mem-feature.ll
- sse-varargs.ll
- sse1-fcopysign.ll
- sse1.ll
- sse2-intrinsics-canonical.ll
- sse2-intrinsics-fast-isel-x86_64.ll
- sse2-intrinsics-fast-isel.ll
- sse2-intrinsics-x86-upgrade.ll
- sse2-intrinsics-x86.ll
- sse2-intrinsics-x86_64-upgrade.ll
- sse2-intrinsics-x86_64.ll
- sse2-schedule.ll
- sse2-vector-shifts.ll
- sse2.ll
- sse3-avx-addsub-2.ll
- sse3-avx-addsub.ll
- sse3-intrinsics-fast-isel.ll
- sse3-intrinsics-x86.ll
- sse3-schedule.ll
- sse3.ll
- sse41-intrinsics-fast-isel.ll
- sse41-intrinsics-x86-upgrade.ll
- sse41-intrinsics-x86.ll
- sse41-pmovxrm.ll
- sse41-schedule.ll
- sse41.ll
- sse42-intrinsics-fast-isel-x86_64.ll
- sse42-intrinsics-fast-isel.ll
- sse42-intrinsics-x86.ll
- sse42-intrinsics-x86_64.ll
- sse42-schedule.ll
- sse4a-intrinsics-fast-isel.ll
- sse4a-schedule.ll
- sse4a-upgrade.ll
- sse4a.ll
- sse_partial_update.ll
- sse_reload_fold.ll
- ssp-data-layout.ll
- ssp-guard-spill.ll
- ssse3-intrinsics-fast-isel.ll
- ssse3-intrinsics-x86.ll
- ssse3-schedule.ll
- ssub_sat.ll
- ssub_sat_vec.ll
- stack-align-memcpy.ll
- stack-align.ll
- stack-align2.ll
- stack-folding-3dnow.ll
- stack-folding-adx-x86_64.ll
- stack-folding-adx.mir
- stack-folding-bmi.ll
- stack-folding-bmi2.ll
- stack-folding-bmi2.mir
- stack-folding-fp-avx1.ll
- stack-folding-fp-avx512.ll
- stack-folding-fp-avx512vl.ll
- stack-folding-fp-sse42.ll
- stack-folding-int-avx1.ll
- stack-folding-int-avx2.ll
- stack-folding-int-avx512.ll
- stack-folding-int-avx512vl.ll
- stack-folding-int-sse42.ll
- stack-folding-lwp.ll
- stack-folding-mmx.ll
- stack-folding-sha.ll
- stack-folding-tbm.ll
- stack-folding-x86_64.ll
- stack-folding-xop.ll
- stack-probe-red-zone.ll
- stack-probe-size.ll
- stack-probes.ll
- stack-protector-dbginfo.ll
- stack-protector-msvc.ll
- stack-protector-remarks.ll
- stack-protector-target.ll
- stack-protector-vreg-to-vreg-copy.ll
- stack-protector-weight.ll
- stack-protector.ll
- stack-size-section-function-sections.ll
- stack-size-section.ll
- stack-update-frame-opcode.ll
- stack_guard_remat.ll
- StackColoring-dbg.ll
- StackColoring.ll
- stackguard-internal.ll
- stackmap-fast-isel.ll
- stackmap-frame-setup.ll
- stackmap-large-constants.ll
- stackmap-large-location-size.ll
- stackmap-liveness.ll
- stackmap-nops.ll
- stackmap-shadow-optimization.ll
- stackmap.ll
- stackpointer.ll
- statepoint-allocas.ll
- statepoint-call-lowering.ll
- statepoint-far-call.ll
- statepoint-forward.ll
- statepoint-gctransition-call-lowering.ll
- statepoint-invoke.ll
- statepoint-live-in.ll
- statepoint-stack-usage.ll
- statepoint-stackmap-format.ll
- statepoint-uniqueing.ll
- statepoint-vector-bad-spill.ll
- statepoint-vector.ll
- stdarg.ll
- stdcall-notailcall.ll
- stdcall.ll
- store-empty-member.ll
- store-fp-constant.ll
- store-global-address.ll
- store-narrow.ll
- store-zero-and-minus-one.ll
- store_op_load_fold.ll
- store_op_load_fold2.ll
- stores-merging.ll
- storetrunc-fp.ll
- stride-nine-with-base-reg.ll
- stride-reuse.ll
- sttni.ll
- sub-with-overflow.ll
- sub.ll
- subcarry.ll
- subreg-to-reg-0.ll
- subreg-to-reg-1.ll
- subreg-to-reg-2.ll
- subreg-to-reg-3.ll
- subreg-to-reg-4.ll
- subreg-to-reg-6.ll
- subvector-broadcast.ll
- sunkaddr-ext.ll
- swift-error.ll
- swift-return.ll
- swiftcc.ll
- swifterror.ll
- swiftself.ll
- switch-bt.ll
- switch-crit-edge-constant.ll
- switch-default-only.ll
- switch-density.ll
- switch-edge-weight.ll
- switch-jump-table.ll
- switch-lower-peel-top-case.ll
- switch-or.ll
- switch-order-weight.ll
- switch-zextload.ll
- switch.ll
- SwitchLowering.ll
- swizzle-2.ll
- swizzle-avx2.ll
- SwizzleShuff.ll
- system-intrinsics-64-xsave.ll
- system-intrinsics-64-xsavec.ll
- system-intrinsics-64-xsaveopt.ll
- system-intrinsics-64-xsaves.ll
- system-intrinsics-64.ll
- system-intrinsics-xgetbv.ll
- system-intrinsics-xsave.ll
- system-intrinsics-xsavec.ll
- system-intrinsics-xsaveopt.ll
- system-intrinsics-xsaves.ll
- system-intrinsics-xsetbv.ll
- system-intrinsics.ll
- tail-call-attrs.ll
- tail-call-casts.ll
- tail-call-conditional.mir
- tail-call-got.ll
- tail-call-legality.ll
- tail-call-mutable-memarg.ll
- tail-call-parameter-attrs-mismatch.ll
- tail-call-win64.ll
- tail-dup-addr.ll
- tail-dup-catchret.ll
- tail-dup-debugloc.ll
- tail-dup-merge-loop-headers.ll
- tail-dup-no-other-successor.ll
- tail-dup-repeat.ll
- tail-merge-after-mbp.mir
- tail-merge-debugloc.ll
- tail-merge-identical.ll
- tail-merge-unreachable.ll
- tail-merge-wineh.ll
- tail-opts.ll
- tail-threshold.ll
- tailcall-64.ll
- tailcall-calleesave.ll
- tailcall-cgp-dup.ll
- tailcall-disable.ll
- tailcall-fastisel.ll
- tailcall-largecode.ll
- tailcall-lifetime-end.ll
- tailcall-mem-intrinsics.ll
- tailcall-msvc-conventions.ll
- tailcall-multiret.ll
- tailcall-readnone.ll
- tailcall-returndup-void.ll
- tailcall-ri64.ll
- tailcall-stackalign.ll
- tailcall-structret.ll
- tailcall.ll
- tailcallbyval.ll
- tailcallbyval64.ll
- tailcallfp.ll
- tailcallfp2.ll
- tailcallpic1.ll
- tailcallpic2.ll
- tailcallpic3.ll
- tailcallstack64.ll
- taildup-crash.ll
- tailjmp_gotpcrel_relax_relocation.ll
- targetLoweringGeneric.ll
- tbm-intrinsics-fast-isel-x86_64.ll
- tbm-intrinsics-fast-isel.ll
- tbm-intrinsics-x86_64.ll
- tbm-intrinsics.ll
- tbm-schedule.ll
- tbm_patterns.ll
- test-nofold.ll
- test-shrink-bug.ll
- test-shrink.ll
- test-vs-bittest.ll
- test_x86condbr_globaladdr.mir
- testb-je-fusion.ll
- testl-commute.ll
- this-return-64.ll
- throws-cfi-fp.ll
- throws-cfi-no-fp.ll
- tls-addr-non-leaf-function.ll
- tls-android-negative.ll
- tls-android.ll
- tls-local-dynamic.ll
- tls-models.ll
- tls-pic.ll
- tls-pie.ll
- tls-shrink-wrapping.ll
- tls-windows-itanium.ll
- tls.ll
- tlv-1.ll
- tlv-2.ll
- tlv-3.ll
- token_landingpad.ll
- trap.ll
- trunc-ext-ld-st.ll
- trunc-store.ll
- trunc-subvector.ll
- trunc-to-bool.ll
- TruncAssertSext.ll
- TruncAssertZext.ll
- twoaddr-coalesce-2.ll
- twoaddr-coalesce-3.ll
- twoaddr-coalesce.ll
- twoaddr-dbg-value.mir
- twoaddr-lea.ll
- twoaddr-pass-sink.ll
- twoaddr-sink-terminator.ll
- uadd_sat.ll
- uadd_sat_vec.ll
- uint64-to-float.ll
- uint_to_fp-2.ll
- uint_to_fp-3.ll
- uint_to_fp.ll
- umul-with-carry.ll
- umul-with-overflow.ll
- umulo-128-legalisation-lowering.ll
- umulo-64-legalisation-lowering.ll
- unaligned-32-byte-memops.ll
- unaligned-load.ll
- unaligned-spill-folding.ll
- undef-eflags.mir
- undef-globals-bss.ll
- undef-label.ll
- undef-ops.ll
- unfold-masked-merge-scalar-constmask-innerouter.ll
- unfold-masked-merge-scalar-constmask-interleavedbits.ll
- unfold-masked-merge-scalar-constmask-interleavedbytehalves.ll
- unfold-masked-merge-scalar-constmask-lowhigh.ll
- unfold-masked-merge-scalar-variablemask.ll
- unfold-masked-merge-vector-variablemask-const.ll
- unfold-masked-merge-vector-variablemask.ll
- unknown-location.ll
- unreachable-loop-sinking.ll
- unreachable-mbb-undef-phi.mir
- unreachable-trap.ll
- unreachableblockelim.ll
- unused_stackslots.ll
- unwind-init.ll
- unwindraise.ll
- update-terminator-debugloc.ll
- update-terminator.mir
- urem-i8-constant.ll
- urem-power-of-two.ll
- urem-seteq-optsize.ll
- urem-seteq-vec-nonsplat.ll
- urem-seteq-vec-splat.ll
- urem-seteq.ll
- use-add-flags.ll
- usub_sat.ll
- usub_sat_vec.ll
- utf16-cfstrings.ll
- utf8.ll
- uwtables.ll
- v2f32.ll
- v4f32-immediate.ll
- v4i32load-crash.ll
- v8i1-masks.ll
- vaargs.ll
- vaes-intrinsics-avx-x86.ll
- vaes-intrinsics-avx512-x86.ll
- vaes-intrinsics-avx512vl-x86.ll
- var-permute-128.ll
- var-permute-256.ll
- var-permute-512.ll
- vararg-callee-cleanup.ll
- vararg_no_start.ll
- vararg_tailcall.ll
- variable-sized-darwin-bzero.ll
- variadic-node-pic.ll
- vastart-defs-eflags.ll
- vbinop-simplify-bug.ll
- vec-copysign-avx512.ll
- vec-copysign.ll
- vec-libcalls.ll
- vec-loadsingles-alignment.ll
- vec-trunc-store.ll
- vec3.ll
- vec_add.ll
- vec_align.ll
- vec_align_i256.ll
- vec_anyext.ll
- vec_call.ll
- vec_cast.ll
- vec_cast2.ll
- vec_cast3.ll
- vec_cmp_sint-128.ll
- vec_cmp_uint-128.ll
- vec_compare-sse4.ll
- vec_compare.ll
- vec_ctbits.ll
- vec_ext_inreg.ll
- vec_extract-avx.ll
- vec_extract-mmx.ll
- vec_extract-sse4.ll
- vec_extract.ll
- vec_fabs.ll
- vec_floor.ll
- vec_fneg.ll
- vec_fp_to_int-widen.ll
- vec_fp_to_int.ll
- vec_fpext.ll
- vec_fptrunc.ll
- vec_i64.ll
- vec_ins_extract-1.ll
- vec_ins_extract.ll
- vec_insert-2.ll
- vec_insert-3.ll
- vec_insert-4.ll
- vec_insert-5.ll
- vec_insert-7.ll
- vec_insert-8.ll
- vec_insert-9.ll
- vec_insert-mmx.ll
- vec_int_to_fp-widen.ll
- vec_int_to_fp.ll
- vec_loadsingles.ll
- vec_logical.ll
- vec_minmax_match.ll
- vec_minmax_sint.ll
- vec_minmax_uint.ll
- vec_partial.ll
- vec_reassociate.ll
- vec_return.ll
- vec_round.ll
- vec_sdiv_to_shift.ll
- vec_set-2.ll
- vec_set-3.ll
- vec_set-4.ll
- vec_set-6.ll
- vec_set-7.ll
- vec_set-8.ll
- vec_set-A.ll
- vec_set-B.ll
- vec_set-C.ll
- vec_set-D.ll
- vec_set-F.ll
- vec_set-H.ll
- vec_set.ll
- vec_setcc-2.ll
- vec_setcc.ll
- vec_shift.ll
- vec_shift2.ll
- vec_shift3.ll
- vec_shift4.ll
- vec_shift5.ll
- vec_shift6.ll
- vec_shift7.ll
- vec_shuf-insert.ll
- vec_split.ll
- vec_ss_load_fold.ll
- vec_trunc_sext.ll
- vec_udiv_to_shift.ll
- vec_uint_to_fp-fastmath.ll
- vec_uint_to_fp.ll
- vec_unsafe-fp-math.ll
- vec_zero-2.ll
- vec_zero.ll
- vec_zero_cse.ll
- vector-bitreverse.ll
- vector-blend.ll
- vector-compare-all_of.ll
- vector-compare-any_of.ll
- vector-compare-combines.ll
- vector-compare-results.ll
- vector-compare-simplify.ll
- vector-constrained-fp-intrinsics-fma.ll
- vector-constrained-fp-intrinsics.ll
- vector-ext-logic.ll
- vector-extend-inreg.ll
- vector-fshl-128.ll
- vector-fshl-256.ll
- vector-fshl-512.ll
- vector-fshl-rot-128.ll
- vector-fshl-rot-256.ll
- vector-fshl-rot-512.ll
- vector-fshr-128.ll
- vector-fshr-256.ll
- vector-fshr-512.ll
- vector-fshr-rot-128.ll
- vector-fshr-rot-256.ll
- vector-fshr-rot-512.ll
- vector-gep.ll
- vector-half-conversions.ll
- vector-idiv-sdiv-128.ll
- vector-idiv-sdiv-256.ll
- vector-idiv-sdiv-512.ll
- vector-idiv-udiv-128.ll
- vector-idiv-udiv-256.ll
- vector-idiv-udiv-512.ll
- vector-idiv-v2i32.ll
- vector-idiv.ll
- vector-interleave.ll
- vector-intrinsics.ll
- vector-lzcnt-128.ll
- vector-lzcnt-256.ll
- vector-lzcnt-512.ll
- vector-merge-store-fp-constants.ll
- vector-mul.ll
- vector-narrow-binop.ll
- vector-pcmp.ll
- vector-popcnt-128.ll
- vector-popcnt-256.ll
- vector-popcnt-512.ll
- vector-reduce-add-widen.ll
- vector-reduce-add.ll
- vector-reduce-and-widen.ll
- vector-reduce-and.ll
- vector-reduce-fadd-fast.ll
- vector-reduce-fadd.ll
- vector-reduce-fmax-nnan.ll
- vector-reduce-fmax.ll
- vector-reduce-fmin-nnan.ll
- vector-reduce-fmin.ll
- vector-reduce-fmul-fast.ll
- vector-reduce-fmul.ll
- vector-reduce-mul-widen.ll
- vector-reduce-mul.ll
- vector-reduce-or-widen.ll
- vector-reduce-or.ll
- vector-reduce-smax-widen.ll
- vector-reduce-smax.ll
- vector-reduce-smin-widen.ll
- vector-reduce-smin.ll
- vector-reduce-umax-widen.ll
- vector-reduce-umax.ll
- vector-reduce-umin-widen.ll
- vector-reduce-umin.ll
- vector-reduce-xor-widen.ll
- vector-reduce-xor.ll
- vector-rem.ll
- vector-rotate-128.ll
- vector-rotate-256.ll
- vector-rotate-512.ll
- vector-sext-widen.ll
- vector-sext.ll
- vector-shift-ashr-128.ll
- vector-shift-ashr-256.ll
- vector-shift-ashr-512.ll
- vector-shift-ashr-sub128-widen.ll
- vector-shift-ashr-sub128.ll
- vector-shift-lshr-128.ll
- vector-shift-lshr-256.ll
- vector-shift-lshr-512.ll
- vector-shift-lshr-sub128-widen.ll
- vector-shift-lshr-sub128.ll
- vector-shift-shl-128.ll
- vector-shift-shl-256.ll
- vector-shift-shl-512.ll
- vector-shift-shl-sub128-widen.ll
- vector-shift-shl-sub128.ll
- vector-shuffle-128-v16.ll
- vector-shuffle-128-v2.ll
- vector-shuffle-128-v4.ll
- vector-shuffle-128-v8.ll
- vector-shuffle-256-v16.ll
- vector-shuffle-256-v32.ll
- vector-shuffle-256-v4.ll
- vector-shuffle-256-v8.ll
- vector-shuffle-512-v16.ll
- vector-shuffle-512-v32.ll
- vector-shuffle-512-v64.ll
- vector-shuffle-512-v8.ll
- vector-shuffle-avx512.ll
- vector-shuffle-combining-avx.ll
- vector-shuffle-combining-avx2.ll
- vector-shuffle-combining-avx512bw.ll
- vector-shuffle-combining-avx512bwvl.ll
- vector-shuffle-combining-avx512vbmi.ll
- vector-shuffle-combining-sse41.ll
- vector-shuffle-combining-sse4a.ll
- vector-shuffle-combining-ssse3.ll
- vector-shuffle-combining-xop.ll
- vector-shuffle-combining.ll
- vector-shuffle-masked.ll
- vector-shuffle-mmx.ll
- vector-shuffle-sse1.ll
- vector-shuffle-sse41.ll
- vector-shuffle-sse4a.ll
- vector-shuffle-v1.ll
- vector-shuffle-v48.ll
- vector-shuffle-variable-128.ll
- vector-shuffle-variable-256.ll
- vector-sqrt.ll
- vector-trunc-math-widen.ll
- vector-trunc-math.ll
- vector-trunc-packus-widen.ll
- vector-trunc-packus.ll
- vector-trunc-ssat-widen.ll
- vector-trunc-ssat.ll
- vector-trunc-usat-widen.ll
- vector-trunc-usat.ll
- vector-trunc-widen.ll
- vector-trunc.ll
- vector-truncate-combine.ll
- vector-tzcnt-128.ll
- vector-tzcnt-256.ll
- vector-tzcnt-512.ll
- vector-unsigned-cmp.ll
- vector-variable-idx.ll
- vector-variable-idx2.ll
- vector-zext-widen.ll
- vector-zext.ll
- vector-zmov.ll
- vector.ll
- vectorcall.ll
- verifier-generic-extend-truncate.mir
- verifier-generic-types-1.mir
- verifier-generic-types-2.mir
- verifier-phi-fail0.mir
- verifier-phi.mir
- version_directive.ll
- vfcmp.ll
- viabs.ll
- virtual-registers-cleared-in-machine-functions-liveins.ll
- visibility.ll
- visibility2.ll
- vmaskmov-offset.ll
- vmovq.ll
- volatile.ll
- vortex-bug.ll
- vpshufbitqbm-intrinsics-upgrade.ll
- vpshufbitqbm-intrinsics.ll
- vsel-cmp-load.ll
- vselect-2.ll
- vselect-avx.ll
- vselect-constants.ll
- vselect-minmax.ll
- vselect-packss.ll
- vselect-pcmp.ll
- vselect-zero.ll
- vselect.ll
- vshift-1.ll
- vshift-2.ll
- vshift-3.ll
- vshift-4.ll
- vshift-5.ll
- vshift-6.ll
- vshift_scalar.ll
- vshift_split.ll
- vshift_split2.ll
- vsplit-and.ll
- vzero-excess.ll
- waitpkg-intrinsics.ll
- warn-stack.ll
- wbinvd-intrinsic.ll
- wbnoinvd-intrinsic.ll
- weak-undef.ll
- weak.ll
- weak_def_can_be_hidden.ll
- webkit-jscc.ll
- wide-fma-contraction.ll
- wide-integer-cmp.ll
- wide-integer-fold.ll
- widen_arith-1.ll
- widen_arith-2.ll
- widen_arith-3.ll
- widen_arith-4.ll
- widen_arith-5.ll
- widen_arith-6.ll
- widen_bitops-0.ll
- widen_bitops-1.ll
- widen_cast-1.ll
- widen_cast-2.ll
- widen_cast-3.ll
- widen_cast-4.ll
- widen_cast-5.ll
- widen_cast-6.ll
- widen_compare-1.ll
- widen_conv-1.ll
- widen_conv-2.ll
- widen_conv-3.ll
- widen_conv-4.ll
- widen_conversions.ll
- widen_extract-1.ll
- widen_load-0.ll
- widen_load-1.ll
- widen_load-2.ll
- widen_load-3.ll
- widen_mul.ll
- widen_shuffle-1.ll
- WidenArith.ll
- widened-broadcast.ll
- win-alloca-expander.ll
- win-catchpad-csrs.ll
- win-catchpad-nested-cxx.ll
- win-catchpad-nested.ll
- win-catchpad-varargs.ll
- win-catchpad.ll
- win-cleanuppad.ll
- win-funclet-cfi.ll
- win-mixed-ehpersonality.ll
- win-smallparams.ll
- win32-bool.ll
- win32-eh-available-externally.ll
- win32-eh-states.ll
- win32-eh.ll
- win32-pic-jumptable.ll
- win32-preemption.ll
- win32-seh-catchpad-realign.ll
- win32-seh-catchpad.ll
- win32-seh-nested-finally.ll
- win32-spill-xmm.ll
- win32-ssp.ll
- win32_sret.ll
- win64-bool.ll
- win64-byval.ll
- win64-jumptable.ll
- win64-long-double.ll
- win64-nosse-csrs.ll
- win64_alloca_dynalloca.ll
- win64_call_epi.ll
- win64_eh.ll
- win64_eh_leaf.ll
- win64_eh_leaf2.ll
- win64_frame.ll
- win64_nonvol.ll
- win64_params.ll
- win64_sibcall.ll
- win64_vararg.ll
- win_chkstk.ll
- win_coreclr_chkstk.ll
- win_coreclr_chkstk_liveins.mir
- win_cst_pool.ll
- windows-itanium-alloca.ll
- wineh-coreclr.ll
- wineh-exceptionpointer.ll
- wineh-no-ehpads.ll
- x32-cet-intrinsics.ll
- x32-function_pointer-1.ll
- x32-function_pointer-2.ll
- x32-function_pointer-3.ll
- x32-indirectbr.ll
- x32-landingpad.ll
- x32-lea-1.ll
- x32-movtopush64.ll
- x32-va_start.ll
- x64-cet-intrinsics.ll
- x86-16.ll
- x86-32-intrcc.ll
- x86-32-vector-calling-conv.ll
- x86-64-and-mask.ll
- x86-64-arg.ll
- x86-64-asm.ll
- x86-64-baseptr.ll
- x86-64-bittest-logic.ll
- x86-64-call.ll
- x86-64-disp.ll
- x86-64-double-precision-shift-left.ll
- x86-64-double-precision-shift-right.ll
- x86-64-double-shifts-Oz-Os-O2.ll
- x86-64-double-shifts-var.ll
- x86-64-extend-shift.ll
- x86-64-flags-intrinsics.ll
- x86-64-gv-offset.ll
- x86-64-intrcc-nosse.ll
- x86-64-intrcc.ll
- x86-64-jumps.ll
- x86-64-mem.ll
- x86-64-ms_abi-vararg.ll
- x86-64-pic-1.ll
- x86-64-pic-10.ll
- x86-64-pic-11.ll
- x86-64-pic-12.ll
- x86-64-pic-2.ll
- x86-64-pic-3.ll
- x86-64-pic-4.ll
- x86-64-pic-5.ll
- x86-64-pic-6.ll
- x86-64-pic-7.ll
- x86-64-pic-8.ll
- x86-64-pic-9.ll
- x86-64-pic.ll
- x86-64-plt-relative-reloc.ll
- x86-64-psub.ll
- x86-64-ptr-arg-simple.ll
- x86-64-ret0.ll
- x86-64-shortint.ll
- x86-64-sret-return-2.ll
- x86-64-sret-return.ll
- x86-64-stack-and-frame-ptr.ll
- x86-64-static-relo-movl.ll
- x86-64-tls-1.ll
- x86-64-varargs.ll
- x86-big-ret.ll
- x86-cmov-converter.ll
- x86-flags-intrinsics.ll
- x86-fold-pshufb.ll
- x86-framelowering-trap.ll
- x86-inline-asm-validation.ll
- x86-interleaved-access.ll
- x86-interleaved-check.ll
- x86-interrupt_cc.ll
- x86-interrupt_cld.ll
- x86-interrupt_vzeroupper.ll
- x86-mixed-alignment-dagcombine.ll
- x86-no_caller_saved_registers-preserve.ll
- x86-no_caller_saved_registers.ll
- x86-plt-relative-reloc.ll
- x86-repmov-copy-eflags.ll
- x86-sanitizer-shrink-wrapping.ll
- x86-setcc-int-to-fp-combine.ll
- x86-shifts.ll
- x86-shrink-wrap-unwind.ll
- x86-shrink-wrapping.ll
- x86-store-gv-addr.ll
- x86-upgrade-avx-vbroadcast.ll
- x86-upgrade-avx2-vbroadcast.ll
- x86-win64-shrink-wrapping.ll
- x86_64-mul-by-const.ll
- x87-schedule.ll
- x87.ll
- xaluo.ll
- xchg-nofold.ll
- xmm-r64.ll
- xmulo.ll
- xop-ifma.ll
- xop-intrinsics-fast-isel.ll
- xop-intrinsics-x86_64-upgrade.ll
- xop-intrinsics-x86_64.ll
- xop-mask-comments.ll
- xop-pcmov.ll
- xop-schedule.ll
- xor-combine-debugloc.ll
- xor-icmp.ll
- xor-select-i1-combine.ll
- xor.ll
- xray-attribute-instrumentation.ll
- xray-custom-log.ll
- xray-empty-firstmbb.mir
- xray-empty-function.mir
- xray-log-args.ll
- xray-loop-detection.ll
- xray-multiplerets-in-blocks.mir
- xray-section-group.ll
- xray-selective-instrumentation-miss.ll
- xray-selective-instrumentation.ll
- xray-tail-call-sled.ll
- xray-typed-event-log.ll
- xtest.ll
- zero-remat.ll
- zext-demanded.ll
- zext-extract_subreg.ll
- zext-fold.ll
- zext-inreg-0.ll
- zext-inreg-1.ll
- zext-logicop-shift-load.ll
- zext-sext.ll
- zext-shl.ll
- zext-trunc.ll
- zlib-longest-match.ll
mul-constant-i32.ll @release_80 — raw · history · blame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s --check-prefix=X86
; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=haswell| FileCheck %s --check-prefix=X64-HSW
; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=btver2| FileCheck %s --check-prefix=X64-JAG
; RUN: llc < %s -mtriple=i686-unknown -mul-constant-optimization=false | FileCheck %s --check-prefix=X86-NOOPT
; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=haswell| FileCheck %s --check-prefix=HSW-NOOPT
; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=btver2| FileCheck %s --check-prefix=JAG-NOOPT
; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=slm| FileCheck %s --check-prefix=X64-SLM
; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=slm| FileCheck %s --check-prefix=SLM-NOOPT
define i32 @test_mul_by_1(i32 %x) {
; X86-LABEL: test_mul_by_1:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_1:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_1:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_1:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_1:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.25]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_1:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.50]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_1:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_1:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.50]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 1
ret i32 %mul
}
define i32 @test_mul_by_2(i32 %x) {
; X86-LABEL: test_mul_by_2:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: addl %eax, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_2:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_2:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi), %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_2:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: addl %eax, %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_2:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; HSW-NOOPT-NEXT: leal (%rdi,%rdi), %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_2:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; JAG-NOOPT-NEXT: leal (%rdi,%rdi), %eax # sched: [1:0.50]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_2:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (%rdi,%rdi), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_2:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; SLM-NOOPT-NEXT: leal (%rdi,%rdi), %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 2
ret i32 %mul
}
define i32 @test_mul_by_3(i32 %x) {
; X86-LABEL: test_mul_by_3:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_3:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_3:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_3:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $3, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_3:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; HSW-NOOPT-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_3:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; JAG-NOOPT-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_3:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_3:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; SLM-NOOPT-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 3
ret i32 %mul
}
define i32 @test_mul_by_4(i32 %x) {
; X86-LABEL: test_mul_by_4:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $2, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_4:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_4:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_4:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: shll $2, %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_4:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; HSW-NOOPT-NEXT: leal (,%rdi,4), %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_4:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; JAG-NOOPT-NEXT: leal (,%rdi,4), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_4:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_4:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; SLM-NOOPT-NEXT: leal (,%rdi,4), %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 4
ret i32 %mul
}
define i32 @test_mul_by_5(i32 %x) {
; X86-LABEL: test_mul_by_5:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_5:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_5:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_5:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $5, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_5:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; HSW-NOOPT-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_5:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; JAG-NOOPT-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_5:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_5:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; SLM-NOOPT-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 5
ret i32 %mul
}
define i32 @test_mul_by_6(i32 %x) {
; X86-LABEL: test_mul_by_6:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: addl %eax, %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_6:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: addl %edi, %edi # sched: [1:0.25]
; X64-HSW-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_6:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_6:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $6, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_6:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $6, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_6:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $6, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_6:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-SLM-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_6:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $6, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 6
ret i32 %mul
}
define i32 @test_mul_by_7(i32 %x) {
; X86-LABEL: test_mul_by_7:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: leal (,%ecx,8), %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_7:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_7:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_7:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $7, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_7:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $7, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_7:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $7, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_7:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (,%rdi,8), %eax # sched: [1:1.00]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_7:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $7, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 7
ret i32 %mul
}
define i32 @test_mul_by_8(i32 %x) {
; X86-LABEL: test_mul_by_8:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $3, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_8:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_8:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_8:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: shll $3, %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_8:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; HSW-NOOPT-NEXT: leal (,%rdi,8), %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_8:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; JAG-NOOPT-NEXT: leal (,%rdi,8), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_8:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (,%rdi,8), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_8:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; SLM-NOOPT-NEXT: leal (,%rdi,8), %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 8
ret i32 %mul
}
define i32 @test_mul_by_9(i32 %x) {
; X86-LABEL: test_mul_by_9:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,8), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_9:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_9:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_9:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $9, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_9:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; HSW-NOOPT-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_9:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; JAG-NOOPT-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_9:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_9:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; SLM-NOOPT-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 9
ret i32 %mul
}
define i32 @test_mul_by_10(i32 %x) {
; X86-LABEL: test_mul_by_10:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: addl %eax, %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_10:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: addl %edi, %edi # sched: [1:0.25]
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_10:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_10:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $10, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_10:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $10, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_10:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $10, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_10:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-SLM-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_10:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $10, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 10
ret i32 %mul
}
define i32 @test_mul_by_11(i32 %x) {
; X86-LABEL: test_mul_by_11:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,4), %ecx
; X86-NEXT: leal (%eax,%ecx,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_11:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_11:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_11:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $11, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_11:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $11, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_11:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $11, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_11:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $11, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_11:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $11, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 11
ret i32 %mul
}
define i32 @test_mul_by_12(i32 %x) {
; X86-LABEL: test_mul_by_12:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $2, %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_12:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: shll $2, %edi # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_12:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: shll $2, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_12:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $12, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_12:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $12, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_12:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $12, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_12:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: shll $2, %edi # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_12:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $12, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 12
ret i32 %mul
}
define i32 @test_mul_by_13(i32 %x) {
; X86-LABEL: test_mul_by_13:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,2), %ecx
; X86-NEXT: leal (%eax,%ecx,4), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_13:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_13:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_13:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $13, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_13:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $13, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_13:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $13, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_13:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $13, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_13:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $13, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 13
ret i32 %mul
}
define i32 @test_mul_by_14(i32 %x) {
; X86-LABEL: test_mul_by_14:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: movl %ecx, %eax
; X86-NEXT: shll $4, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_14:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $4, %eax # sched: [1:0.50]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_14:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $4, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_14:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $14, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_14:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $14, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_14:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $14, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_14:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $4, %eax # sched: [1:1.00]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_14:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $14, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 14
ret i32 %mul
}
define i32 @test_mul_by_15(i32 %x) {
; X86-LABEL: test_mul_by_15:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_15:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_15:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_15:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $15, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_15:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $15, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_15:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $15, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_15:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rax,%rax,2), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_15:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $15, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 15
ret i32 %mul
}
define i32 @test_mul_by_16(i32 %x) {
; X86-LABEL: test_mul_by_16:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $4, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_16:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $4, %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_16:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $4, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_16:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: shll $4, %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_16:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.25]
; HSW-NOOPT-NEXT: shll $4, %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_16:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.50]
; JAG-NOOPT-NEXT: shll $4, %eax # sched: [1:0.50]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_16:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $4, %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_16:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.50]
; SLM-NOOPT-NEXT: shll $4, %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 16
ret i32 %mul
}
define i32 @test_mul_by_17(i32 %x) {
; X86-LABEL: test_mul_by_17:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: movl %ecx, %eax
; X86-NEXT: shll $4, %eax
; X86-NEXT: addl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_17:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $4, %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rdi), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_17:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $4, %eax # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rax,%rdi), %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_17:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $17, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_17:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $17, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_17:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $17, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_17:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $4, %eax # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rax,%rdi), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_17:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $17, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 17
ret i32 %mul
}
define i32 @test_mul_by_18(i32 %x) {
; X86-LABEL: test_mul_by_18:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: addl %eax, %eax
; X86-NEXT: leal (%eax,%eax,8), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_18:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: addl %edi, %edi # sched: [1:0.25]
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_18:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_18:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $18, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_18:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $18, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_18:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $18, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_18:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-SLM-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_18:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $18, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 18
ret i32 %mul
}
define i32 @test_mul_by_19(i32 %x) {
; X86-LABEL: test_mul_by_19:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,8), %ecx
; X86-NEXT: leal (%eax,%ecx,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_19:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_19:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_19:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $19, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_19:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $19, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_19:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $19, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_19:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $19, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_19:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $19, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 19
ret i32 %mul
}
define i32 @test_mul_by_20(i32 %x) {
; X86-LABEL: test_mul_by_20:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $2, %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_20:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: shll $2, %edi # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_20:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: shll $2, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_20:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $20, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_20:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $20, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_20:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $20, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_20:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: shll $2, %edi # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_20:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $20, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 20
ret i32 %mul
}
define i32 @test_mul_by_21(i32 %x) {
; X86-LABEL: test_mul_by_21:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,4), %ecx
; X86-NEXT: leal (%eax,%ecx,4), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_21:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_21:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_21:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $21, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_21:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $21, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_21:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $21, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_21:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $21, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_21:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $21, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 21
ret i32 %mul
}
define i32 @test_mul_by_22(i32 %x) {
; X86-LABEL: test_mul_by_22:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: leal (%ecx,%ecx,4), %eax
; X86-NEXT: leal (%ecx,%eax,4), %eax
; X86-NEXT: addl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_22:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: addl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_22:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_22:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $22, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_22:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $22, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_22:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $22, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_22:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $22, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_22:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $22, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 22
ret i32 %mul
}
define i32 @test_mul_by_23(i32 %x) {
; X86-LABEL: test_mul_by_23:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: leal (%ecx,%ecx,2), %eax
; X86-NEXT: shll $3, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_23:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: shll $3, %eax # sched: [1:0.50]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_23:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: shll $3, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_23:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $23, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_23:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $23, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_23:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $23, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_23:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $23, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_23:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $23, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 23
ret i32 %mul
}
define i32 @test_mul_by_24(i32 %x) {
; X86-LABEL: test_mul_by_24:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $3, %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_24:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: shll $3, %edi # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_24:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: shll $3, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_24:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $24, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_24:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $24, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_24:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $24, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_24:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: shll $3, %edi # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_24:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $24, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 24
ret i32 %mul
}
define i32 @test_mul_by_25(i32 %x) {
; X86-LABEL: test_mul_by_25:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_25:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rax,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_25:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rax,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_25:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $25, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_25:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $25, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_25:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $25, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_25:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rax,%rax,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_25:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $25, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 25
ret i32 %mul
}
define i32 @test_mul_by_26(i32 %x) {
; X86-LABEL: test_mul_by_26:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: leal (%ecx,%ecx,4), %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: addl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_26:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rax,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: addl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_26:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rax,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_26:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $26, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_26:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $26, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_26:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $26, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_26:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $26, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_26:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $26, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 26
ret i32 %mul
}
define i32 @test_mul_by_27(i32 %x) {
; X86-LABEL: test_mul_by_27:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,8), %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_27:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_27:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_27:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $27, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_27:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $27, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_27:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $27, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_27:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rax,%rax,2), %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_27:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $27, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 27
ret i32 %mul
}
define i32 @test_mul_by_28(i32 %x) {
; X86-LABEL: test_mul_by_28:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: leal (%ecx,%ecx,8), %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: addl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_28:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: addl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_28:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_28:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $28, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_28:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $28, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_28:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $28, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_28:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $28, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_28:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $28, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 28
ret i32 %mul
}
define i32 @test_mul_by_29(i32 %x) {
; X86-LABEL: test_mul_by_29:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: leal (%ecx,%ecx,8), %eax
; X86-NEXT: leal (%eax,%eax,2), %eax
; X86-NEXT: addl %ecx, %eax
; X86-NEXT: addl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_29:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: addl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: addl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_29:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_29:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $29, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_29:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $29, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_29:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $29, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_29:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $29, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_29:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $29, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 29
ret i32 %mul
}
define i32 @test_mul_by_30(i32 %x) {
; X86-LABEL: test_mul_by_30:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: movl %ecx, %eax
; X86-NEXT: shll $5, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_30:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $5, %eax # sched: [1:0.50]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_30:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $5, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_30:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $30, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_30:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $30, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_30:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $30, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_30:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $5, %eax # sched: [1:1.00]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_30:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $30, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 30
ret i32 %mul
}
define i32 @test_mul_by_31(i32 %x) {
; X86-LABEL: test_mul_by_31:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: movl %ecx, %eax
; X86-NEXT: shll $5, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_31:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $5, %eax # sched: [1:0.50]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_31:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $5, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_31:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $31, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_31:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $31, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_31:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $31, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_31:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $5, %eax # sched: [1:1.00]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_31:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $31, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 31
ret i32 %mul
}
define i32 @test_mul_by_32(i32 %x) {
; X86-LABEL: test_mul_by_32:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $5, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_32:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $5, %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_32:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $5, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_32:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: shll $5, %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_32:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.25]
; HSW-NOOPT-NEXT: shll $5, %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_32:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.50]
; JAG-NOOPT-NEXT: shll $5, %eax # sched: [1:0.50]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_32:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $5, %eax # sched: [1:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_32:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: movl %edi, %eax # sched: [1:0.50]
; SLM-NOOPT-NEXT: shll $5, %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 32
ret i32 %mul
}
define i32 @test_mul_by_37(i32 %x) {
; X86-LABEL: test_mul_by_37:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,8), %ecx
; X86-NEXT: leal (%eax,%ecx,4), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_37:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_37:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_37:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $37, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_37:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $37, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_37:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $37, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_37:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $37, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_37:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $37, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 37
ret i32 %mul
}
define i32 @test_mul_by_41(i32 %x) {
; X86-LABEL: test_mul_by_41:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,4), %ecx
; X86-NEXT: leal (%eax,%ecx,8), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_41:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_41:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_41:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $41, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_41:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $41, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_41:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $41, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_41:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $41, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_41:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $41, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 41
ret i32 %mul
}
define i32 @test_mul_by_62(i32 %x) {
; X86-LABEL: test_mul_by_62:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: movl %ecx, %eax
; X86-NEXT: shll $6, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_62:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $6, %eax # sched: [1:0.50]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: subl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_62:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $6, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_62:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $62, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_62:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $62, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_62:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $62, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_62:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $6, %eax # sched: [1:1.00]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_62:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $62, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 62
ret i32 %mul
}
define i32 @test_mul_by_66(i32 %x) {
; X86-LABEL: test_mul_by_66:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: movl %eax, %ecx
; X86-NEXT: shll $6, %ecx
; X86-NEXT: leal (%ecx,%eax,2), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_66:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $6, %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rdi,2), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_66:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $6, %eax # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rax,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_66:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $66, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_66:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $66, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_66:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $66, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_66:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: shll $6, %eax # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rax,%rdi), %eax # sched: [1:1.00]
; X64-SLM-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_66:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $66, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 66
ret i32 %mul
}
define i32 @test_mul_by_73(i32 %x) {
; X86-LABEL: test_mul_by_73:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal (%eax,%eax,8), %ecx
; X86-NEXT: leal (%eax,%ecx,8), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_73:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rax,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_73:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: leal (%rdi,%rax,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_73:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $73, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_73:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $73, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_73:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $73, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_73:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $73, %edi, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_73:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $73, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 73
ret i32 %mul
}
define i32 @test_mul_by_520(i32 %x) {
; X86-LABEL: test_mul_by_520:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: movl %eax, %ecx
; X86-NEXT: shll $9, %ecx
; X86-NEXT: leal (%ecx,%eax,8), %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_520:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: movl %edi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: shll $9, %eax # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rax,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_520:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: movl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: shll $9, %eax # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rax,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_520:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $520, {{[0-9]+}}(%esp), %eax # imm = 0x208
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_520:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $520, %edi, %eax # imm = 0x208
; HSW-NOOPT-NEXT: # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_520:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $520, %edi, %eax # imm = 0x208
; JAG-NOOPT-NEXT: # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_520:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: imull $520, %edi, %eax # imm = 0x208
; X64-SLM-NEXT: # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_520:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $520, %edi, %eax # imm = 0x208
; SLM-NOOPT-NEXT: # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 520
ret i32 %mul
}
define i32 @test_mul_by_neg10(i32 %x) {
; X86-LABEL: test_mul_by_neg10:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: addl %eax, %eax
; X86-NEXT: leal (%eax,%eax,4), %eax
; X86-NEXT: negl %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_neg10:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: addl %edi, %edi # sched: [1:0.25]
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: negl %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_neg10:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: negl %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_neg10:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $-10, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_neg10:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $-10, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_neg10:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $-10, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_neg10:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: addl %edi, %edi # sched: [1:0.50]
; X64-SLM-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: negl %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_neg10:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $-10, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, -10
ret i32 %mul
}
define i32 @test_mul_by_neg36(i32 %x) {
; X86-LABEL: test_mul_by_neg36:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: shll $2, %eax
; X86-NEXT: leal (%eax,%eax,8), %eax
; X86-NEXT: negl %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_by_neg36:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: shll $2, %edi # sched: [1:0.50]
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
; X64-HSW-NEXT: negl %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_by_neg36:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: shll $2, %edi # sched: [1:0.50]
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: negl %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_neg36:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $-36, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_by_neg36:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $-36, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_by_neg36:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $-36, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_neg36:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: shll $2, %edi # sched: [1:1.00]
; X64-SLM-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
; X64-SLM-NEXT: negl %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_by_neg36:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $-36, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, -36
ret i32 %mul
}
; (x*9+42)*(x*5+2)
define i32 @test_mul_spec(i32 %x) nounwind {
; X86-LABEL: test_mul_spec:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: leal 42(%eax,%eax,8), %ecx
; X86-NEXT: leal 2(%eax,%eax,4), %eax
; X86-NEXT: imull %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: test_mul_spec:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %ecx # sched: [1:0.50]
; X64-HSW-NEXT: addl $42, %ecx # sched: [1:0.25]
; X64-HSW-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; X64-HSW-NEXT: addl $2, %eax # sched: [1:0.25]
; X64-HSW-NEXT: imull %ecx, %eax # sched: [3:1.00]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: test_mul_spec:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [2:1.00]
; X64-JAG-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: imull %ecx, %eax # sched: [3:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_spec:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: leal 42(%eax,%eax,8), %ecx
; X86-NOOPT-NEXT: leal 2(%eax,%eax,4), %eax
; X86-NOOPT-NEXT: imull %ecx, %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: test_mul_spec:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; HSW-NOOPT-NEXT: leal (%rdi,%rdi,8), %ecx # sched: [1:0.50]
; HSW-NOOPT-NEXT: addl $42, %ecx # sched: [1:0.25]
; HSW-NOOPT-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
; HSW-NOOPT-NEXT: addl $2, %eax # sched: [1:0.25]
; HSW-NOOPT-NEXT: imull %ecx, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: test_mul_spec:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; JAG-NOOPT-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [2:1.00]
; JAG-NOOPT-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: imull %ecx, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_spec:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [1:1.00]
; X64-SLM-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [1:1.00]
; X64-SLM-NEXT: imull %ecx, %eax # sched: [3:1.00]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: test_mul_spec:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
; SLM-NOOPT-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [1:1.00]
; SLM-NOOPT-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [1:1.00]
; SLM-NOOPT-NEXT: imull %ecx, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%mul = mul nsw i32 %x, 9
%add = add nsw i32 %mul, 42
%mul2 = mul nsw i32 %x, 5
%add2 = add nsw i32 %mul2, 2
%mul3 = mul nsw i32 %add, %add2
ret i32 %mul3
}
; This makes sure we are able to fold the negate generated by the mul expansion
; into the next instruction.
; FIXME: We make this work.
define i32 @mul_neg_fold(i32 %a, i32 %b) {
; X86-LABEL: mul_neg_fold:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
; X86-NEXT: leal (%ecx,%ecx,8), %ecx
; X86-NEXT: subl %ecx, %eax
; X86-NEXT: retl
;
; X64-HSW-LABEL: mul_neg_fold:
; X64-HSW: # %bb.0:
; X64-HSW-NEXT: movl %esi, %eax # sched: [1:0.25]
; X64-HSW-NEXT: # kill: def $edi killed $edi def $rdi
; X64-HSW-NEXT: leal (%rdi,%rdi,8), %ecx # sched: [1:0.50]
; X64-HSW-NEXT: subl %ecx, %eax # sched: [1:0.25]
; X64-HSW-NEXT: retq # sched: [7:1.00]
;
; X64-JAG-LABEL: mul_neg_fold:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: leal (%rdi,%rdi,8), %ecx # sched: [2:1.00]
; X64-JAG-NEXT: movl %esi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %ecx, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: mul_neg_fold:
; X86-NOOPT: # %bb.0:
; X86-NOOPT-NEXT: imull $-9, {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: addl {{[0-9]+}}(%esp), %eax
; X86-NOOPT-NEXT: retl
;
; HSW-NOOPT-LABEL: mul_neg_fold:
; HSW-NOOPT: # %bb.0:
; HSW-NOOPT-NEXT: imull $-9, %edi, %eax # sched: [3:1.00]
; HSW-NOOPT-NEXT: addl %esi, %eax # sched: [1:0.25]
; HSW-NOOPT-NEXT: retq # sched: [7:1.00]
;
; JAG-NOOPT-LABEL: mul_neg_fold:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: imull $-9, %edi, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: addl %esi, %eax # sched: [1:0.50]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: mul_neg_fold:
; X64-SLM: # %bb.0:
; X64-SLM-NEXT: # kill: def $edi killed $edi def $rdi
; X64-SLM-NEXT: movl %esi, %eax # sched: [1:0.50]
; X64-SLM-NEXT: leal (%rdi,%rdi,8), %ecx # sched: [1:1.00]
; X64-SLM-NEXT: subl %ecx, %eax # sched: [1:0.50]
; X64-SLM-NEXT: retq # sched: [4:1.00]
;
; SLM-NOOPT-LABEL: mul_neg_fold:
; SLM-NOOPT: # %bb.0:
; SLM-NOOPT-NEXT: imull $-9, %edi, %eax # sched: [3:1.00]
; SLM-NOOPT-NEXT: addl %esi, %eax # sched: [1:0.50]
; SLM-NOOPT-NEXT: retq # sched: [4:1.00]
%c = mul i32 %a, -9
%d = add i32 %b, %c
ret i32 %d
}
|