Tree @master (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
- 4char-promote.ll
- 8bit_cmov_of_trunc_promotion.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-2.ll
- addr-mode-matcher.ll
- addr-of-ret-addr.ll
- address-type-promotion-constantexpr.ll
- addrsig.ll
- addsub-constant-folding.ll
- adx-commute.mir
- adx-intrinsics-upgrade.ll
- adx-intrinsics.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
- alloca-overaligned.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-win64.ll
- arg-copy-elide.ll
- arg_returned_bitcast.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-avx512.ll
- asm-reg-type-mismatch.ll
- asm-reject-reg-type-mismatch.ll
- asm-reject-rex.ll
- asm-reject-vk32-vk64.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-add.ll
- atomic-dagsched.ll
- atomic-eflags-reuse.ll
- atomic-flags.ll
- atomic-fp.ll
- atomic-idempotent.ll
- atomic-load-store-wide.ll
- atomic-load-store.ll
- atomic-mi.ll
- atomic-minmax-i6432.ll
- atomic-monotonic.ll
- atomic-non-integer-fp128.ll
- atomic-non-integer.ll
- atomic-op.ll
- atomic-ops-ancient-64.ll
- atomic-or.ll
- atomic-pointer.ll
- atomic-unordered.ll
- atomic128.ll
- atomic16.ll
- atomic32.ll
- atomic64.ll
- atomic6432.ll
- atomic8.ll
- atomicf128.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-g-no-change.mir
- avoid-sfb-g-no-change2.mir
- avoid-sfb-g-no-change3.mir
- 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-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-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-broadcast-unfold.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-mask.ll
- avx512-cmp.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-x86_64.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-select.ll
- avx512-shift.ll
- avx512-skx-insert-subvec.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
- avx512bf16-intrinsics.ll
- avx512bf16-vl-intrinsics.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-256-set0.mir
- 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
- avx512vlvp2intersect-intrinsics.ll
- avx512vnni-intrinsics-upgrade.ll
- avx512vnni-intrinsics.ll
- avx512vnni.ll
- avx512vp2intersect-intrinsics.ll
- avx512vpopcntdq-intrinsics.ll
- backpropmask.ll
- bad-tls-fold.mir
- barrier-sse.ll
- barrier.ll
- base-pointer-and-cmpxchg.ll
- basic-promote-integers.ll
- bb_rotate.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-vector-bool.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-x86_64.ll
- bmi.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
- call-site-info-output.ll
- callbr-asm-bb-exports.ll
- callbr-asm-blockplacement.ll
- callbr-asm-branch-folding.ll
- callbr-asm-destinations.ll
- callbr-asm-errors.ll
- callbr-asm-label-addr.ll
- callbr-asm-obj-file.ll
- callbr-asm-outputs.ll
- callbr-asm.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
- cgp-usubo.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.ll
- clwb.ll
- clz.ll
- clzero.ll
- cmov-double.ll
- cmov-fp.ll
- cmov-into-branch.ll
- cmov-promotion.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
- code_placement_no_header_change.ll
- codegen-prepare-addrmode-sext.ll
- codegen-prepare-cast.ll
- codegen-prepare-crash.ll
- codegen-prepare-extload.ll
- codegen-prepare-replacephi.mir
- codegen-prepare-replacephi2.mir
- codegen-prepare-uaddo.ll
- codegen-prepare.ll
- codemodel.ll
- coff-comdat.ll
- coff-comdat2.ll
- coff-comdat3.ll
- coff-feat00.ll
- coff-fp-section-name.ll
- coff-no-dead-strip.ll
- coff-weak.ll
- coldcc64.ll
- combine-64bit-vec-binop.ll
- combine-abs.ll
- combine-adc.ll
- combine-add-ssat.ll
- combine-add-usat.ll
- combine-add.ll
- combine-addo.ll
- combine-adx.ll
- combine-and.ll
- combine-avx-intrinsics.ll
- combine-avx2-intrinsics.ll
- combine-bitreverse.ll
- combine-bitselect.ll
- combine-bswap.ll
- combine-concatvectors.ll
- combine-fabs.ll
- combine-fcopysign.ll
- combine-lds.ll
- combine-mul.ll
- combine-mulo.ll
- combine-multiplies.ll
- combine-or.ll
- combine-pmuldq.ll
- combine-rotates.ll
- combine-sbb.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-subo.ll
- combine-testm-and.ll
- combine-udiv.ll
- combine-umax.ll
- combine-umin.ll
- combine-urem.ll
- combineIncDecVector-crash.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
- 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
- const-shift-of-constmasked.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
- constrained-fp80-trunc-ext.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
- csr-split.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-tokenfactor-limit-crash.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-missing-info.ll
- discriminate-mem-ops-skip-pfetch.ll
- discriminate-mem-ops.ll
- div-rem-pair-recomposition-signed.ll
- div-rem-pair-recomposition-unsigned.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
- dtor-priority-coff.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
- enqcmd-intrinsics.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-integer-x86_64-intrinsic-error.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-fp.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
- 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-kill.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
- fcmp-constant.ll
- fdiv-combine-vec.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
- fltused_math.ll
- fma-commute-x86.ll
- fma-do-not-commute.ll
- fma-fneg-combine-2.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.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
- 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-x86_64.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.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-broadcast.ll
- haddsub-shuf-undef-operand.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-and-by-const-from-lshr-in-eqcmp-zero.ll
- hoist-and-by-const-from-shl-in-eqcmp-zero.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-demanded.ll
- horizontal-shuffle.ll
- huge-stack-offset.ll
- huge-stack-offset2.ll
- i128-add.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-faultmap.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
- inc-of-add.ll
- inconsistent_landingpad.ll
- indirect-branch-tracking-r2.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-avx512f-x-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-e-constraint.ll
- inline-asm-error.ll
- inline-asm-flag-clobber.ll
- inline-asm-flag-output.ll
- inline-asm-fpstack.ll
- inline-asm-h.ll
- inline-asm-i-constraint-i1.ll
- inline-asm-imm-out-of-range.ll
- inline-asm-modifier-c.ll
- inline-asm-modifier-n.ll
- inline-asm-modifier-q.ll
- inline-asm-modifier-V.ll
- inline-asm-mrv.ll
- inline-asm-multilevel-gep.ll
- inline-asm-n-constraint.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
- isel-blendi-gettargetconstant.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-heapallocsite.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-dagdag.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
- 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
- legalize-vaarg.ll
- legalizedag_vec.ll
- libcall-sret.ll
- licm-dominance.ll
- licm-nested.ll
- licm-regpressure.ll
- licm-symbol.ll
- lifetime-alias.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
- llrint-conv-i32.ll
- llrint-conv.ll
- llround-conv-i32.ll
- llround-conv.ll
- load-combine-dbg.ll
- load-combine.ll
- load-local-v3i1.ll
- load-partial.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-rotate.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-ptrmask.ll
- lower-vec-shift-2.ll
- lower-vec-shift.ll
- lower-vec-shuffle-bug.ll
- lrint-conv-i32.ll
- lrint-conv.ll
- lround-conv-i32.ll
- lround-conv.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
- lzcnt-tzcnt.ll
- lzcnt-zext-cmp.ll
- lzcnt.ll
- macCatalyst.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_compressstore.ll
- masked_expandload.ll
- masked_gather.ll
- masked_gather_scatter.ll
- masked_gather_scatter_widen.ll
- masked_load.ll
- masked_store.ll
- masked_store_trunc.ll
- masked_store_trunc_ssat.ll
- masked_store_trunc_usat.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-nt.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
- midpoint-int-vec-128.ll
- midpoint-int-vec-256.ll
- midpoint-int-vec-512.ll
- midpoint-int.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
- mod128.ll
- movbe.ll
- movddup-load-fold.ll
- movdir-intrinsic-x86.ll
- movdir-intrinsic-x86_64.ll
- move_latch_to_loop_top.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
- mulfix_combine.ll
- mulo-pow2.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-tailcc.ll
- musttail-thiscall.ll
- musttail-varargs.ll
- musttail.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-of-3ops-lea.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
- nomovtopush.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-3.ll
- nontemporal-loads-2.ll
- nontemporal-loads.ll
- nontemporal.ll
- noreturn-call-linux.ll
- noreturn-call-win64.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
- oddshuffles.ll
- oddsubvector.ll
- omit-urem-of-power-of-two-or-zero-when-comparing-with-zero.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
- partition.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-fold-testrr.mir
- 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.ll
- post-ra-sched-with-debug.mir
- post-ra-sched.ll
- postalloc-coalescing.ll
- postra-ignore-dbg-instrs.mir
- postra-licm.ll
- pow.75.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
- pr22473.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
- pr27202.ll
- pr27501.ll
- pr27591.ll
- pr27681.mir
- pr28129.ll
- pr28173.ll
- pr28444.ll
- pr28472.ll
- pr28489.ll
- pr2849.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
- pr33010.ll
- pr3317.ll
- pr33290.ll
- pr33349.ll
- pr33396.ll
- pr3366.ll
- pr33715.ll
- pr33747.ll
- pr33828.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
- pr34292.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
- pr39098.ll
- pr39187-g.ll
- pr39243.ll
- pr39666.ll
- pr39733.ll
- pr39896.ll
- pr39926.ll
- pr40090.ll
- pr40289-64bit.ll
- pr40289.ll
- PR40322.ll
- pr40529.ll
- pr40539.ll
- pr40631_deadstore_elision.ll
- pr40730.ll
- pr40737.ll
- pr40811.ll
- pr40891.ll
- pr40994.ll
- pr41619.ll
- pr41678.ll
- pr41748.ll
- pr42452.ll
- pr42565.ll
- pr42616.ll
- pr42727.ll
- pr42870.ll
- pr42905.ll
- pr42909.ll
- pr42992.ll
- pr42998.ll
- pr43157.ll
- pr43507.ll
- pr43509.ll
- pr43529.ll
- pr43575.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
- probe-stack-x32.ll
- prolog-push-seq.ll
- prologepilog_deref_size.mir
- prologue-epilogue-remarks.mir
- prologuedata.ll
- promote-assert-zext.ll
- promote-i16.ll
- promote-trunc.ll
- promote-vec3.ll
- promote.ll
- ps4-noreturn.ll
- ps4-ssp-nop.ll
- psadbw.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
- ptrtoint-narrow.ll
- ptwrite32-intrinsic.ll
- ptwrite64-intrinsic.ll
- pull-binop-through-shift.ll
- pull-conditional-binop-through-shift.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.ll
- rdpmc.ll
- rdrand-x86_64.ll
- rdrand.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-fast-missing-live-out-spill.mir
- regalloc-reconcile-broken-hints.ll
- regalloc-spill-at-ehpad.ll
- regcall-no-plt.ll
- reghinting.ll
- regparm.ll
- regpressure.ll
- relptr-rodata.ll
- rem.ll
- rem_crash.ll
- remarks-section.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-multi.ll
- rotate.ll
- rotate2.ll
- rotate4.ll
- rotate_vec.ll
- rounding-ops.ll
- rrlist-livereg-corrutpion.ll
- rtm.ll
- sad.ll
- sad_variations.ll
- sadd_sat.ll
- sadd_sat_plus.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-i32.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
- 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-localaddress.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-sra.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.ll
- shadow-stack.ll
- shift-amount-mod.ll
- shift-and-x86_64.ll
- shift-and.ll
- shift-avx2-crash.ll
- shift-bmi2.ll
- shift-by-signext.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-logic.ll
- shift-mask.ll
- shift-one.ll
- shift-pair.ll
- shift-parts.ll
- shift-pcmp.ll
- shift_minsize.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.ll
- shrink_vmul_sse.ll
- shrink_wrap_dbg_value.mir
- shrinkwrap-hang.ll
- shuffle-combine-crash-2.ll
- shuffle-combine-crash.ll
- shuffle-extract-subvector.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.ll
- shuffle-vs-trunc-256.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-addsub-of-const.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
- smul_fix_sat.ll
- smul_fix_sat_constants.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
- srem-lkk.ll
- srem-seteq-optsize.ll
- srem-seteq-vec-nonsplat.ll
- srem-seteq-vec-splat.ll
- srem-seteq.ll
- srem-vector-lkk.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-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-vector-shifts.ll
- sse2.ll
- sse3-avx-addsub-2.ll
- sse3-avx-addsub.ll
- sse3-intrinsics-fast-isel.ll
- sse3-intrinsics-x86.ll
- sse3.ll
- sse41-intrinsics-fast-isel.ll
- sse41-intrinsics-x86-upgrade.ll
- sse41-intrinsics-x86.ll
- sse41-pmovxrm.ll
- sse41.ll
- sse42-intrinsics-fast-isel-x86_64.ll
- sse42-intrinsics-fast-isel.ll
- sse42-intrinsics-x86.ll
- sse42-intrinsics-x86_64.ll
- sse4a-intrinsics-fast-isel.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
- ssub_sat.ll
- ssub_sat_plus.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-avx512bf16.ll
- stack-folding-avx512vp2intersect.ll
- 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-avx512vnni.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-2.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-no-realign-stack.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-of-not.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
- swap.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-assume.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-pseudo-64.mir
- tailcall-pseudo.mir
- tailcall-readnone.ll
- tailcall-returndup-void.ll
- tailcall-ri64.ll
- tailcall-stackalign.ll
- tailcall-structret.ll
- tailcall-tailcc.ll
- tailcall.ll
- tailcallbyval.ll
- tailcallbyval64.ll
- tailcallfp.ll
- tailcallfp2.ll
- tailcallpic1.ll
- tailcallpic2.ll
- tailcallpic3.ll
- tailcallstack64.ll
- tailcc-calleesave.ll
- tailcc-disable-tail-calls.ll
- tailcc-fastcc.ll
- tailcc-fastisel.ll
- tailcc-largecode.ll
- tailcc-stackalign.ll
- tailcc-structret.ll
- tailccbyval.ll
- tailccbyval64.ll
- tailccfp.ll
- tailccfp2.ll
- tailccpic1.ll
- tailccpic2.ll
- tailccstack64.ll
- taildup-crash.ll
- taildup-heapallocsite.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_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-no-plt.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
- tree_way_unsigned_cmp.ll
- trunc-and.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
- typeid-alias.ll
- uadd_sat.ll
- uadd_sat_plus.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
- umul_fix.ll
- umul_fix_sat.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-lkk.ll
- urem-power-of-two.ll
- urem-seteq-optsize.ll
- urem-seteq-vec-nonsplat.ll
- urem-seteq-vec-splat.ll
- urem-seteq.ll
- urem-vector-lkk.ll
- use-add-flags.ll
- use-cr-result-of-dom-icmp-st.ll
- usub_sat.ll
- usub_sat_plus.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_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.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.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_saddo.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_smulo.ll
- vec_split.ll
- vec_ss_load_fold.ll
- vec_ssubo.ll
- vec_trunc_sext.ll
- vec_uaddo.ll
- vec_udiv_to_shift.ll
- vec_uint_to_fp-fastmath.ll
- vec_uint_to_fp.ll
- vec_umulo.ll
- vec_unsafe-fp-math.ll
- vec_usubo.ll
- vec_zero-2.ll
- vec_zero.ll
- vec_zero_cse.ll
- vecloadextract.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-lzcnt-sub128.ll
- vector-merge-store-fp-constants.ll
- vector-mul.ll
- vector-mulfix-legalize.ll
- vector-narrow-binop.ll
- vector-partial-undef.ll
- vector-pcmp.ll
- vector-popcnt-128.ll
- vector-popcnt-256.ll
- vector-popcnt-512.ll
- vector-reduce-add.ll
- vector-reduce-and-bool.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.ll
- vector-reduce-or-bool.ll
- vector-reduce-or.ll
- vector-reduce-smax.ll
- vector-reduce-smin.ll
- vector-reduce-umax.ll
- vector-reduce-umin.ll
- vector-reduce-xor-bool.ll
- vector-reduce-xor.ll
- vector-rem.ll
- vector-rotate-128.ll
- vector-rotate-256.ll
- vector-rotate-512.ll
- vector-sext.ll
- vector-shift-ashr-128.ll
- vector-shift-ashr-256.ll
- vector-shift-ashr-512.ll
- vector-shift-ashr-sub128.ll
- vector-shift-by-select-loop.ll
- vector-shift-lshr-128.ll
- vector-shift-lshr-256.ll
- vector-shift-lshr-512.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.ll
- vector-shuffle-128-unpck.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.ll
- vector-trunc-packus.ll
- vector-trunc-ssat.ll
- vector-trunc-usat.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-width-store-merge.ll
- vector-zext.ll
- vector-zmov.ll
- vector.ll
- vector_splat-const-shift-of-constmasked.ll
- vectorcall.ll
- version_directive.ll
- vfcmp.ll
- viabs.ll
- virtreg-physreg-def-regallocfast.mir
- virtual-registers-cleared-in-machine-functions-liveins.ll
- visibility.ll
- visibility2.ll
- vmaskmov-offset.ll
- vmovq.ll
- volatile-memstores-nooverlapping-load-stores.ll
- volatile.ll
- vortex-bug.ll
- vp2intersect_multiple_pairs.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
- vshli-simplify-demanded-bits.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-eh-empty-block.ll
- win64-funclet-savexmm.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-64-veccallcc.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.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
- 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
vector-fshl-rot-512.ll @master — 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 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX512,AVX512BW
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VLBW
declare <8 x i64> @llvm.fshl.v8i64(<8 x i64>, <8 x i64>, <8 x i64>)
declare <16 x i32> @llvm.fshl.v16i32(<16 x i32>, <16 x i32>, <16 x i32>)
declare <32 x i16> @llvm.fshl.v32i16(<32 x i16>, <32 x i16>, <32 x i16>)
declare <64 x i8> @llvm.fshl.v64i8(<64 x i8>, <64 x i8>, <64 x i8>)
;
; Variable Shifts
;
define <8 x i64> @var_funnnel_v8i64(<8 x i64> %x, <8 x i64> %amt) nounwind {
; AVX512-LABEL: var_funnnel_v8i64:
; AVX512: # %bb.0:
; AVX512-NEXT: vprolvq %zmm1, %zmm0, %zmm0
; AVX512-NEXT: retq
%res = call <8 x i64> @llvm.fshl.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> %amt)
ret <8 x i64> %res
}
define <16 x i32> @var_funnnel_v16i32(<16 x i32> %x, <16 x i32> %amt) nounwind {
; AVX512-LABEL: var_funnnel_v16i32:
; AVX512: # %bb.0:
; AVX512-NEXT: vprolvd %zmm1, %zmm0, %zmm0
; AVX512-NEXT: retq
%res = call <16 x i32> @llvm.fshl.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> %amt)
ret <16 x i32> %res
}
define <32 x i16> @var_funnnel_v32i16(<32 x i16> %x, <32 x i16> %amt) nounwind {
; AVX512F-LABEL: var_funnnel_v32i16:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm2
; AVX512F-NEXT: vextracti64x4 $1, %zmm1, %ymm3
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm4 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; AVX512F-NEXT: vpand %ymm4, %ymm3, %ymm3
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm5 = ymm3[0],zero,ymm3[1],zero,ymm3[2],zero,ymm3[3],zero,ymm3[4],zero,ymm3[5],zero,ymm3[6],zero,ymm3[7],zero,ymm3[8],zero,ymm3[9],zero,ymm3[10],zero,ymm3[11],zero,ymm3[12],zero,ymm3[13],zero,ymm3[14],zero,ymm3[15],zero
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm2 = ymm2[0],zero,ymm2[1],zero,ymm2[2],zero,ymm2[3],zero,ymm2[4],zero,ymm2[5],zero,ymm2[6],zero,ymm2[7],zero,ymm2[8],zero,ymm2[9],zero,ymm2[10],zero,ymm2[11],zero,ymm2[12],zero,ymm2[13],zero,ymm2[14],zero,ymm2[15],zero
; AVX512F-NEXT: vpsllvd %zmm5, %zmm2, %zmm5
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm6 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]
; AVX512F-NEXT: vpsubw %ymm3, %ymm6, %ymm3
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm3 = ymm3[0],zero,ymm3[1],zero,ymm3[2],zero,ymm3[3],zero,ymm3[4],zero,ymm3[5],zero,ymm3[6],zero,ymm3[7],zero,ymm3[8],zero,ymm3[9],zero,ymm3[10],zero,ymm3[11],zero,ymm3[12],zero,ymm3[13],zero,ymm3[14],zero,ymm3[15],zero
; AVX512F-NEXT: vpsrlvd %zmm3, %zmm2, %zmm2
; AVX512F-NEXT: vpord %zmm2, %zmm5, %zmm2
; AVX512F-NEXT: vpmovdw %zmm2, %ymm2
; AVX512F-NEXT: vpand %ymm4, %ymm1, %ymm1
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm3 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero
; AVX512F-NEXT: vpsllvd %zmm3, %zmm0, %zmm3
; AVX512F-NEXT: vpsubw %ymm1, %ymm6, %ymm1
; AVX512F-NEXT: vpmovzxwd {{.*#+}} zmm1 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
; AVX512F-NEXT: vpsrlvd %zmm1, %zmm0, %zmm0
; AVX512F-NEXT: vpord %zmm0, %zmm3, %zmm0
; AVX512F-NEXT: vpmovdw %zmm0, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: var_funnnel_v32i16:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm2
; AVX512VL-NEXT: vextracti64x4 $1, %zmm1, %ymm3
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm4 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; AVX512VL-NEXT: vpand %ymm4, %ymm3, %ymm3
; AVX512VL-NEXT: vpmovzxwd {{.*#+}} zmm5 = ymm3[0],zero,ymm3[1],zero,ymm3[2],zero,ymm3[3],zero,ymm3[4],zero,ymm3[5],zero,ymm3[6],zero,ymm3[7],zero,ymm3[8],zero,ymm3[9],zero,ymm3[10],zero,ymm3[11],zero,ymm3[12],zero,ymm3[13],zero,ymm3[14],zero,ymm3[15],zero
; AVX512VL-NEXT: vpmovzxwd {{.*#+}} zmm2 = ymm2[0],zero,ymm2[1],zero,ymm2[2],zero,ymm2[3],zero,ymm2[4],zero,ymm2[5],zero,ymm2[6],zero,ymm2[7],zero,ymm2[8],zero,ymm2[9],zero,ymm2[10],zero,ymm2[11],zero,ymm2[12],zero,ymm2[13],zero,ymm2[14],zero,ymm2[15],zero
; AVX512VL-NEXT: vpsllvd %zmm5, %zmm2, %zmm5
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm6 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]
; AVX512VL-NEXT: vpsubw %ymm3, %ymm6, %ymm3
; AVX512VL-NEXT: vpmovzxwd {{.*#+}} zmm3 = ymm3[0],zero,ymm3[1],zero,ymm3[2],zero,ymm3[3],zero,ymm3[4],zero,ymm3[5],zero,ymm3[6],zero,ymm3[7],zero,ymm3[8],zero,ymm3[9],zero,ymm3[10],zero,ymm3[11],zero,ymm3[12],zero,ymm3[13],zero,ymm3[14],zero,ymm3[15],zero
; AVX512VL-NEXT: vpsrlvd %zmm3, %zmm2, %zmm2
; AVX512VL-NEXT: vpord %zmm2, %zmm5, %zmm2
; AVX512VL-NEXT: vpmovdw %zmm2, %ymm2
; AVX512VL-NEXT: vpand %ymm4, %ymm1, %ymm1
; AVX512VL-NEXT: vpmovzxwd {{.*#+}} zmm3 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
; AVX512VL-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero
; AVX512VL-NEXT: vpsllvd %zmm3, %zmm0, %zmm3
; AVX512VL-NEXT: vpsubw %ymm1, %ymm6, %ymm1
; AVX512VL-NEXT: vpmovzxwd {{.*#+}} zmm1 = ymm1[0],zero,ymm1[1],zero,ymm1[2],zero,ymm1[3],zero,ymm1[4],zero,ymm1[5],zero,ymm1[6],zero,ymm1[7],zero,ymm1[8],zero,ymm1[9],zero,ymm1[10],zero,ymm1[11],zero,ymm1[12],zero,ymm1[13],zero,ymm1[14],zero,ymm1[15],zero
; AVX512VL-NEXT: vpsrlvd %zmm1, %zmm0, %zmm0
; AVX512VL-NEXT: vpord %zmm0, %zmm3, %zmm0
; AVX512VL-NEXT: vpmovdw %zmm0, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: var_funnnel_v32i16:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; AVX512BW-NEXT: vpandq %zmm2, %zmm1, %zmm3
; AVX512BW-NEXT: vpsllvw %zmm3, %zmm0, %zmm3
; AVX512BW-NEXT: vpxor %xmm4, %xmm4, %xmm4
; AVX512BW-NEXT: vpsubw %zmm1, %zmm4, %zmm1
; AVX512BW-NEXT: vpandq %zmm2, %zmm1, %zmm1
; AVX512BW-NEXT: vpsrlvw %zmm1, %zmm0, %zmm0
; AVX512BW-NEXT: vporq %zmm0, %zmm3, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: var_funnnel_v32i16:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vmovdqa64 {{.*#+}} zmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; AVX512VLBW-NEXT: vpandq %zmm2, %zmm1, %zmm3
; AVX512VLBW-NEXT: vpsllvw %zmm3, %zmm0, %zmm3
; AVX512VLBW-NEXT: vpxor %xmm4, %xmm4, %xmm4
; AVX512VLBW-NEXT: vpsubw %zmm1, %zmm4, %zmm1
; AVX512VLBW-NEXT: vpandq %zmm2, %zmm1, %zmm1
; AVX512VLBW-NEXT: vpsrlvw %zmm1, %zmm0, %zmm0
; AVX512VLBW-NEXT: vporq %zmm0, %zmm3, %zmm0
; AVX512VLBW-NEXT: retq
%res = call <32 x i16> @llvm.fshl.v32i16(<32 x i16> %x, <32 x i16> %x, <32 x i16> %amt)
ret <32 x i16> %res
}
define <64 x i8> @var_funnnel_v64i8(<64 x i8> %x, <64 x i8> %amt) nounwind {
; AVX512F-LABEL: var_funnnel_v64i8:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm1, %ymm2
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm3
; AVX512F-NEXT: vpsrlw $4, %ymm3, %ymm4
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm5 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
; AVX512F-NEXT: vpandn %ymm4, %ymm5, %ymm4
; AVX512F-NEXT: vpsllw $4, %ymm3, %ymm6
; AVX512F-NEXT: vpand %ymm5, %ymm6, %ymm6
; AVX512F-NEXT: vpor %ymm4, %ymm6, %ymm4
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm6 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
; AVX512F-NEXT: vpand %ymm6, %ymm2, %ymm2
; AVX512F-NEXT: vpsllw $5, %ymm2, %ymm2
; AVX512F-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm3
; AVX512F-NEXT: vpsrlw $6, %ymm3, %ymm4
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm7 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
; AVX512F-NEXT: vpandn %ymm4, %ymm7, %ymm4
; AVX512F-NEXT: vpsllw $2, %ymm3, %ymm8
; AVX512F-NEXT: vpand %ymm7, %ymm8, %ymm8
; AVX512F-NEXT: vpor %ymm4, %ymm8, %ymm4
; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm2
; AVX512F-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm3
; AVX512F-NEXT: vpsrlw $7, %ymm3, %ymm4
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm8 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
; AVX512F-NEXT: vpand %ymm8, %ymm4, %ymm4
; AVX512F-NEXT: vpaddb %ymm3, %ymm3, %ymm9
; AVX512F-NEXT: vpor %ymm4, %ymm9, %ymm4
; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm2
; AVX512F-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm2
; AVX512F-NEXT: vpsrlw $4, %ymm0, %ymm3
; AVX512F-NEXT: vpandn %ymm3, %ymm5, %ymm3
; AVX512F-NEXT: vpsllw $4, %ymm0, %ymm4
; AVX512F-NEXT: vpand %ymm5, %ymm4, %ymm4
; AVX512F-NEXT: vpor %ymm3, %ymm4, %ymm3
; AVX512F-NEXT: vpand %ymm6, %ymm1, %ymm1
; AVX512F-NEXT: vpsllw $5, %ymm1, %ymm1
; AVX512F-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
; AVX512F-NEXT: vpsrlw $6, %ymm0, %ymm3
; AVX512F-NEXT: vpandn %ymm3, %ymm7, %ymm3
; AVX512F-NEXT: vpsllw $2, %ymm0, %ymm4
; AVX512F-NEXT: vpand %ymm7, %ymm4, %ymm4
; AVX512F-NEXT: vpor %ymm3, %ymm4, %ymm3
; AVX512F-NEXT: vpaddb %ymm1, %ymm1, %ymm1
; AVX512F-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
; AVX512F-NEXT: vpsrlw $7, %ymm0, %ymm3
; AVX512F-NEXT: vpand %ymm8, %ymm3, %ymm3
; AVX512F-NEXT: vpaddb %ymm0, %ymm0, %ymm4
; AVX512F-NEXT: vpor %ymm3, %ymm4, %ymm3
; AVX512F-NEXT: vpaddb %ymm1, %ymm1, %ymm1
; AVX512F-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: var_funnnel_v64i8:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm1, %ymm2
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm3
; AVX512VL-NEXT: vpsrlw $4, %ymm3, %ymm4
; AVX512VL-NEXT: vpsllw $4, %ymm3, %ymm5
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm6 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
; AVX512VL-NEXT: vpternlogq $226, %ymm4, %ymm6, %ymm5
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm4 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
; AVX512VL-NEXT: vpand %ymm4, %ymm2, %ymm2
; AVX512VL-NEXT: vpsllw $5, %ymm2, %ymm2
; AVX512VL-NEXT: vpblendvb %ymm2, %ymm5, %ymm3, %ymm3
; AVX512VL-NEXT: vpsrlw $6, %ymm3, %ymm5
; AVX512VL-NEXT: vpsllw $2, %ymm3, %ymm7
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm8 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
; AVX512VL-NEXT: vpternlogq $226, %ymm5, %ymm8, %ymm7
; AVX512VL-NEXT: vpaddb %ymm2, %ymm2, %ymm2
; AVX512VL-NEXT: vpblendvb %ymm2, %ymm7, %ymm3, %ymm3
; AVX512VL-NEXT: vpsrlw $7, %ymm3, %ymm5
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm7 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
; AVX512VL-NEXT: vpand %ymm7, %ymm5, %ymm5
; AVX512VL-NEXT: vpaddb %ymm3, %ymm3, %ymm9
; AVX512VL-NEXT: vpor %ymm5, %ymm9, %ymm5
; AVX512VL-NEXT: vpaddb %ymm2, %ymm2, %ymm2
; AVX512VL-NEXT: vpblendvb %ymm2, %ymm5, %ymm3, %ymm2
; AVX512VL-NEXT: vpsrlw $4, %ymm0, %ymm3
; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm5
; AVX512VL-NEXT: vpternlogq $226, %ymm3, %ymm6, %ymm5
; AVX512VL-NEXT: vpand %ymm4, %ymm1, %ymm1
; AVX512VL-NEXT: vpsllw $5, %ymm1, %ymm1
; AVX512VL-NEXT: vpblendvb %ymm1, %ymm5, %ymm0, %ymm0
; AVX512VL-NEXT: vpsrlw $6, %ymm0, %ymm3
; AVX512VL-NEXT: vpsllw $2, %ymm0, %ymm4
; AVX512VL-NEXT: vpternlogq $226, %ymm3, %ymm8, %ymm4
; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1
; AVX512VL-NEXT: vpblendvb %ymm1, %ymm4, %ymm0, %ymm0
; AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm3
; AVX512VL-NEXT: vpand %ymm7, %ymm3, %ymm3
; AVX512VL-NEXT: vpaddb %ymm0, %ymm0, %ymm4
; AVX512VL-NEXT: vpor %ymm3, %ymm4, %ymm3
; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1
; AVX512VL-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: var_funnnel_v64i8:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vpxor %xmm2, %xmm2, %xmm2
; AVX512BW-NEXT: vpsubb %zmm1, %zmm2, %zmm2
; AVX512BW-NEXT: vmovdqa64 {{.*#+}} zmm3 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
; AVX512BW-NEXT: vpandq %zmm3, %zmm2, %zmm2
; AVX512BW-NEXT: vpsllw $5, %zmm2, %zmm2
; AVX512BW-NEXT: vpaddb %zmm2, %zmm2, %zmm4
; AVX512BW-NEXT: vpmovb2m %zmm4, %k1
; AVX512BW-NEXT: vpmovb2m %zmm2, %k2
; AVX512BW-NEXT: vpsrlw $4, %zmm0, %zmm2
; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm2, %zmm2
; AVX512BW-NEXT: vpblendmb %zmm2, %zmm0, %zmm2 {%k2}
; AVX512BW-NEXT: vpsrlw $2, %zmm2, %zmm5
; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm5, %zmm5
; AVX512BW-NEXT: vmovdqu8 %zmm5, %zmm2 {%k1}
; AVX512BW-NEXT: vpsrlw $1, %zmm2, %zmm5
; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm5, %zmm5
; AVX512BW-NEXT: vpaddb %zmm4, %zmm4, %zmm4
; AVX512BW-NEXT: vpmovb2m %zmm4, %k1
; AVX512BW-NEXT: vmovdqu8 %zmm5, %zmm2 {%k1}
; AVX512BW-NEXT: vpandq %zmm3, %zmm1, %zmm1
; AVX512BW-NEXT: vpsllw $5, %zmm1, %zmm1
; AVX512BW-NEXT: vpaddb %zmm1, %zmm1, %zmm3
; AVX512BW-NEXT: vpmovb2m %zmm3, %k1
; AVX512BW-NEXT: vpmovb2m %zmm1, %k2
; AVX512BW-NEXT: vpsllw $4, %zmm0, %zmm1
; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm1, %zmm1
; AVX512BW-NEXT: vmovdqu8 %zmm1, %zmm0 {%k2}
; AVX512BW-NEXT: vpsllw $2, %zmm0, %zmm1
; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm1, %zmm1
; AVX512BW-NEXT: vmovdqu8 %zmm1, %zmm0 {%k1}
; AVX512BW-NEXT: vpaddb %zmm3, %zmm3, %zmm1
; AVX512BW-NEXT: vpmovb2m %zmm1, %k1
; AVX512BW-NEXT: vpaddb %zmm0, %zmm0, %zmm0 {%k1}
; AVX512BW-NEXT: vporq %zmm2, %zmm0, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: var_funnnel_v64i8:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vpxor %xmm2, %xmm2, %xmm2
; AVX512VLBW-NEXT: vpsubb %zmm1, %zmm2, %zmm2
; AVX512VLBW-NEXT: vmovdqa64 {{.*#+}} zmm3 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
; AVX512VLBW-NEXT: vpandq %zmm3, %zmm2, %zmm2
; AVX512VLBW-NEXT: vpsllw $5, %zmm2, %zmm2
; AVX512VLBW-NEXT: vpaddb %zmm2, %zmm2, %zmm4
; AVX512VLBW-NEXT: vpmovb2m %zmm4, %k1
; AVX512VLBW-NEXT: vpmovb2m %zmm2, %k2
; AVX512VLBW-NEXT: vpsrlw $4, %zmm0, %zmm2
; AVX512VLBW-NEXT: vpandq {{.*}}(%rip), %zmm2, %zmm2
; AVX512VLBW-NEXT: vpblendmb %zmm2, %zmm0, %zmm2 {%k2}
; AVX512VLBW-NEXT: vpsrlw $2, %zmm2, %zmm5
; AVX512VLBW-NEXT: vpandq {{.*}}(%rip), %zmm5, %zmm5
; AVX512VLBW-NEXT: vmovdqu8 %zmm5, %zmm2 {%k1}
; AVX512VLBW-NEXT: vpsrlw $1, %zmm2, %zmm5
; AVX512VLBW-NEXT: vpandq {{.*}}(%rip), %zmm5, %zmm5
; AVX512VLBW-NEXT: vpaddb %zmm4, %zmm4, %zmm4
; AVX512VLBW-NEXT: vpmovb2m %zmm4, %k1
; AVX512VLBW-NEXT: vmovdqu8 %zmm5, %zmm2 {%k1}
; AVX512VLBW-NEXT: vpandq %zmm3, %zmm1, %zmm1
; AVX512VLBW-NEXT: vpsllw $5, %zmm1, %zmm1
; AVX512VLBW-NEXT: vpaddb %zmm1, %zmm1, %zmm3
; AVX512VLBW-NEXT: vpmovb2m %zmm3, %k1
; AVX512VLBW-NEXT: vpmovb2m %zmm1, %k2
; AVX512VLBW-NEXT: vpsllw $4, %zmm0, %zmm1
; AVX512VLBW-NEXT: vpandq {{.*}}(%rip), %zmm1, %zmm1
; AVX512VLBW-NEXT: vmovdqu8 %zmm1, %zmm0 {%k2}
; AVX512VLBW-NEXT: vpsllw $2, %zmm0, %zmm1
; AVX512VLBW-NEXT: vpandq {{.*}}(%rip), %zmm1, %zmm1
; AVX512VLBW-NEXT: vmovdqu8 %zmm1, %zmm0 {%k1}
; AVX512VLBW-NEXT: vpaddb %zmm3, %zmm3, %zmm1
; AVX512VLBW-NEXT: vpmovb2m %zmm1, %k1
; AVX512VLBW-NEXT: vpaddb %zmm0, %zmm0, %zmm0 {%k1}
; AVX512VLBW-NEXT: vporq %zmm2, %zmm0, %zmm0
; AVX512VLBW-NEXT: retq
%res = call <64 x i8> @llvm.fshl.v64i8(<64 x i8> %x, <64 x i8> %x, <64 x i8> %amt)
ret <64 x i8> %res
}
;
; Uniform Variable Shifts
;
define <8 x i64> @splatvar_funnnel_v8i64(<8 x i64> %x, <8 x i64> %amt) nounwind {
; AVX512-LABEL: splatvar_funnnel_v8i64:
; AVX512: # %bb.0:
; AVX512-NEXT: vpbroadcastq %xmm1, %zmm1
; AVX512-NEXT: vprolvq %zmm1, %zmm0, %zmm0
; AVX512-NEXT: retq
%splat = shufflevector <8 x i64> %amt, <8 x i64> undef, <8 x i32> zeroinitializer
%res = call <8 x i64> @llvm.fshl.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> %splat)
ret <8 x i64> %res
}
define <16 x i32> @splatvar_funnnel_v16i32(<16 x i32> %x, <16 x i32> %amt) nounwind {
; AVX512-LABEL: splatvar_funnnel_v16i32:
; AVX512: # %bb.0:
; AVX512-NEXT: vpbroadcastd %xmm1, %zmm1
; AVX512-NEXT: vprolvd %zmm1, %zmm0, %zmm0
; AVX512-NEXT: retq
%splat = shufflevector <16 x i32> %amt, <16 x i32> undef, <16 x i32> zeroinitializer
%res = call <16 x i32> @llvm.fshl.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> %splat)
ret <16 x i32> %res
}
define <32 x i16> @splatvar_funnnel_v32i16(<32 x i16> %x, <32 x i16> %amt) nounwind {
; AVX512F-LABEL: splatvar_funnnel_v32i16:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm2
; AVX512F-NEXT: vpbroadcastw %xmm1, %xmm1
; AVX512F-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1
; AVX512F-NEXT: vpmovzxwq {{.*#+}} xmm3 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
; AVX512F-NEXT: vpsllw %xmm3, %ymm2, %ymm4
; AVX512F-NEXT: vmovdqa {{.*#+}} xmm5 = [16,16,16,16,16,16,16,16]
; AVX512F-NEXT: vpsubw %xmm1, %xmm5, %xmm1
; AVX512F-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
; AVX512F-NEXT: vpsrlw %xmm1, %ymm2, %ymm2
; AVX512F-NEXT: vpor %ymm2, %ymm4, %ymm2
; AVX512F-NEXT: vpsllw %xmm3, %ymm0, %ymm3
; AVX512F-NEXT: vpsrlw %xmm1, %ymm0, %ymm0
; AVX512F-NEXT: vpor %ymm0, %ymm3, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: splatvar_funnnel_v32i16:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm2
; AVX512VL-NEXT: vpbroadcastw %xmm1, %xmm1
; AVX512VL-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1
; AVX512VL-NEXT: vpmovzxwq {{.*#+}} xmm3 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
; AVX512VL-NEXT: vpsllw %xmm3, %ymm2, %ymm4
; AVX512VL-NEXT: vmovdqa {{.*#+}} xmm5 = [16,16,16,16,16,16,16,16]
; AVX512VL-NEXT: vpsubw %xmm1, %xmm5, %xmm1
; AVX512VL-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
; AVX512VL-NEXT: vpsrlw %xmm1, %ymm2, %ymm2
; AVX512VL-NEXT: vpor %ymm2, %ymm4, %ymm2
; AVX512VL-NEXT: vpsllw %xmm3, %ymm0, %ymm3
; AVX512VL-NEXT: vpsrlw %xmm1, %ymm0, %ymm0
; AVX512VL-NEXT: vpor %ymm0, %ymm3, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: splatvar_funnnel_v32i16:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vpbroadcastw %xmm1, %xmm1
; AVX512BW-NEXT: vmovdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15]
; AVX512BW-NEXT: vpand %xmm2, %xmm1, %xmm3
; AVX512BW-NEXT: vpmovzxwq {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero
; AVX512BW-NEXT: vpsllw %xmm3, %zmm0, %zmm3
; AVX512BW-NEXT: vpxor %xmm4, %xmm4, %xmm4
; AVX512BW-NEXT: vpsubw %xmm1, %xmm4, %xmm1
; AVX512BW-NEXT: vpand %xmm2, %xmm1, %xmm1
; AVX512BW-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
; AVX512BW-NEXT: vpsrlw %xmm1, %zmm0, %zmm0
; AVX512BW-NEXT: vporq %zmm0, %zmm3, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: splatvar_funnnel_v32i16:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vpbroadcastw %xmm1, %xmm1
; AVX512VLBW-NEXT: vmovdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15]
; AVX512VLBW-NEXT: vpand %xmm2, %xmm1, %xmm3
; AVX512VLBW-NEXT: vpmovzxwq {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero
; AVX512VLBW-NEXT: vpsllw %xmm3, %zmm0, %zmm3
; AVX512VLBW-NEXT: vpxor %xmm4, %xmm4, %xmm4
; AVX512VLBW-NEXT: vpsubw %xmm1, %xmm4, %xmm1
; AVX512VLBW-NEXT: vpand %xmm2, %xmm1, %xmm1
; AVX512VLBW-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
; AVX512VLBW-NEXT: vpsrlw %xmm1, %zmm0, %zmm0
; AVX512VLBW-NEXT: vporq %zmm0, %zmm3, %zmm0
; AVX512VLBW-NEXT: retq
%splat = shufflevector <32 x i16> %amt, <32 x i16> undef, <32 x i32> zeroinitializer
%res = call <32 x i16> @llvm.fshl.v32i16(<32 x i16> %x, <32 x i16> %x, <32 x i16> %splat)
ret <32 x i16> %res
}
define <64 x i8> @splatvar_funnnel_v64i8(<64 x i8> %x, <64 x i8> %amt) nounwind {
; AVX512F-LABEL: splatvar_funnnel_v64i8:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm2
; AVX512F-NEXT: vpbroadcastb %xmm1, %xmm1
; AVX512F-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1
; AVX512F-NEXT: vpmovzxbq {{.*#+}} xmm3 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
; AVX512F-NEXT: vpsllw %xmm3, %ymm2, %ymm4
; AVX512F-NEXT: vpcmpeqd %xmm5, %xmm5, %xmm5
; AVX512F-NEXT: vpsllw %xmm3, %xmm5, %xmm6
; AVX512F-NEXT: vpbroadcastb %xmm6, %ymm6
; AVX512F-NEXT: vpand %ymm6, %ymm4, %ymm4
; AVX512F-NEXT: vmovdqa {{.*#+}} xmm7 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]
; AVX512F-NEXT: vpsubb %xmm1, %xmm7, %xmm1
; AVX512F-NEXT: vpmovzxbq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
; AVX512F-NEXT: vpsrlw %xmm1, %ymm2, %ymm2
; AVX512F-NEXT: vpsrlw %xmm1, %xmm5, %xmm5
; AVX512F-NEXT: vpsrlw $8, %xmm5, %xmm5
; AVX512F-NEXT: vpbroadcastb %xmm5, %ymm5
; AVX512F-NEXT: vpand %ymm5, %ymm2, %ymm2
; AVX512F-NEXT: vpor %ymm2, %ymm4, %ymm2
; AVX512F-NEXT: vpsllw %xmm3, %ymm0, %ymm3
; AVX512F-NEXT: vpand %ymm6, %ymm3, %ymm3
; AVX512F-NEXT: vpsrlw %xmm1, %ymm0, %ymm0
; AVX512F-NEXT: vpand %ymm5, %ymm0, %ymm0
; AVX512F-NEXT: vpor %ymm0, %ymm3, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: splatvar_funnnel_v64i8:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm2
; AVX512VL-NEXT: vpbroadcastb %xmm1, %xmm1
; AVX512VL-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1
; AVX512VL-NEXT: vpmovzxbq {{.*#+}} xmm3 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
; AVX512VL-NEXT: vpsllw %xmm3, %ymm2, %ymm4
; AVX512VL-NEXT: vpcmpeqd %xmm5, %xmm5, %xmm5
; AVX512VL-NEXT: vpsllw %xmm3, %xmm5, %xmm6
; AVX512VL-NEXT: vpbroadcastb %xmm6, %ymm6
; AVX512VL-NEXT: vpand %ymm6, %ymm4, %ymm4
; AVX512VL-NEXT: vmovdqa {{.*#+}} xmm7 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]
; AVX512VL-NEXT: vpsubb %xmm1, %xmm7, %xmm1
; AVX512VL-NEXT: vpmovzxbq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
; AVX512VL-NEXT: vpsrlw %xmm1, %ymm2, %ymm2
; AVX512VL-NEXT: vpsrlw %xmm1, %xmm5, %xmm5
; AVX512VL-NEXT: vpsrlw $8, %xmm5, %xmm5
; AVX512VL-NEXT: vpbroadcastb %xmm5, %ymm5
; AVX512VL-NEXT: vpand %ymm5, %ymm2, %ymm2
; AVX512VL-NEXT: vpor %ymm2, %ymm4, %ymm2
; AVX512VL-NEXT: vpsllw %xmm3, %ymm0, %ymm3
; AVX512VL-NEXT: vpand %ymm6, %ymm3, %ymm3
; AVX512VL-NEXT: vpsrlw %xmm1, %ymm0, %ymm0
; AVX512VL-NEXT: vpand %ymm5, %ymm0, %ymm0
; AVX512VL-NEXT: vpor %ymm0, %ymm3, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm2, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: splatvar_funnnel_v64i8:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vpbroadcastb %xmm1, %xmm1
; AVX512BW-NEXT: vmovdqa {{.*#+}} xmm2 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
; AVX512BW-NEXT: vpand %xmm2, %xmm1, %xmm3
; AVX512BW-NEXT: vpmovzxbq {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,zero,zero,zero,zero,xmm3[1],zero,zero,zero,zero,zero,zero,zero
; AVX512BW-NEXT: vpsllw %xmm3, %zmm0, %zmm4
; AVX512BW-NEXT: vpcmpeqd %xmm5, %xmm5, %xmm5
; AVX512BW-NEXT: vpsllw %xmm3, %xmm5, %xmm3
; AVX512BW-NEXT: vpbroadcastb %xmm3, %zmm3
; AVX512BW-NEXT: vpandq %zmm3, %zmm4, %zmm3
; AVX512BW-NEXT: vpxor %xmm4, %xmm4, %xmm4
; AVX512BW-NEXT: vpsubb %xmm1, %xmm4, %xmm1
; AVX512BW-NEXT: vpand %xmm2, %xmm1, %xmm1
; AVX512BW-NEXT: vpmovzxbq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
; AVX512BW-NEXT: vpsrlw %xmm1, %zmm0, %zmm0
; AVX512BW-NEXT: vpsrlw %xmm1, %xmm5, %xmm1
; AVX512BW-NEXT: vpsrlw $8, %xmm1, %xmm1
; AVX512BW-NEXT: vpbroadcastb %xmm1, %zmm1
; AVX512BW-NEXT: vpandq %zmm1, %zmm0, %zmm0
; AVX512BW-NEXT: vporq %zmm0, %zmm3, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: splatvar_funnnel_v64i8:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vpbroadcastb %xmm1, %xmm1
; AVX512VLBW-NEXT: vmovdqa {{.*#+}} xmm2 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
; AVX512VLBW-NEXT: vpand %xmm2, %xmm1, %xmm3
; AVX512VLBW-NEXT: vpmovzxbq {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,zero,zero,zero,zero,xmm3[1],zero,zero,zero,zero,zero,zero,zero
; AVX512VLBW-NEXT: vpsllw %xmm3, %zmm0, %zmm4
; AVX512VLBW-NEXT: vpcmpeqd %xmm5, %xmm5, %xmm5
; AVX512VLBW-NEXT: vpsllw %xmm3, %xmm5, %xmm3
; AVX512VLBW-NEXT: vpbroadcastb %xmm3, %zmm3
; AVX512VLBW-NEXT: vpandq %zmm3, %zmm4, %zmm3
; AVX512VLBW-NEXT: vpxor %xmm4, %xmm4, %xmm4
; AVX512VLBW-NEXT: vpsubb %xmm1, %xmm4, %xmm1
; AVX512VLBW-NEXT: vpand %xmm2, %xmm1, %xmm1
; AVX512VLBW-NEXT: vpmovzxbq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,zero,zero,zero,zero,xmm1[1],zero,zero,zero,zero,zero,zero,zero
; AVX512VLBW-NEXT: vpsrlw %xmm1, %zmm0, %zmm0
; AVX512VLBW-NEXT: vpsrlw %xmm1, %xmm5, %xmm1
; AVX512VLBW-NEXT: vpsrlw $8, %xmm1, %xmm1
; AVX512VLBW-NEXT: vpbroadcastb %xmm1, %zmm1
; AVX512VLBW-NEXT: vpandq %zmm1, %zmm0, %zmm0
; AVX512VLBW-NEXT: vporq %zmm0, %zmm3, %zmm0
; AVX512VLBW-NEXT: retq
%splat = shufflevector <64 x i8> %amt, <64 x i8> undef, <64 x i32> zeroinitializer
%res = call <64 x i8> @llvm.fshl.v64i8(<64 x i8> %x, <64 x i8> %x, <64 x i8> %splat)
ret <64 x i8> %res
}
;
; Constant Shifts
;
define <8 x i64> @constant_funnnel_v8i64(<8 x i64> %x) nounwind {
; AVX512-LABEL: constant_funnnel_v8i64:
; AVX512: # %bb.0:
; AVX512-NEXT: vprolvq {{.*}}(%rip), %zmm0, %zmm0
; AVX512-NEXT: retq
%res = call <8 x i64> @llvm.fshl.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> <i64 4, i64 14, i64 50, i64 60, i64 4, i64 14, i64 50, i64 60>)
ret <8 x i64> %res
}
define <16 x i32> @constant_funnnel_v16i32(<16 x i32> %x) nounwind {
; AVX512-LABEL: constant_funnnel_v16i32:
; AVX512: # %bb.0:
; AVX512-NEXT: vprolvd {{.*}}(%rip), %zmm0, %zmm0
; AVX512-NEXT: retq
%res = call <16 x i32> @llvm.fshl.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11>)
ret <16 x i32> %res
}
define <32 x i16> @constant_funnnel_v32i16(<32 x i16> %x) nounwind {
; AVX512F-LABEL: constant_funnnel_v32i16:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm2 = <u,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768>
; AVX512F-NEXT: vpmulhuw %ymm2, %ymm1, %ymm3
; AVX512F-NEXT: vpblendw {{.*#+}} ymm4 = ymm1[0],ymm3[1,2,3,4,5,6,7],ymm1[8],ymm3[9,10,11,12,13,14,15]
; AVX512F-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm4 = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768]
; AVX512F-NEXT: vpmullw %ymm4, %ymm1, %ymm1
; AVX512F-NEXT: vpor %ymm3, %ymm1, %ymm1
; AVX512F-NEXT: vpmulhuw %ymm2, %ymm0, %ymm2
; AVX512F-NEXT: vpblendw {{.*#+}} ymm3 = ymm0[0],ymm2[1,2,3,4,5,6,7],ymm0[8],ymm2[9,10,11,12,13,14,15]
; AVX512F-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
; AVX512F-NEXT: vpmullw %ymm4, %ymm0, %ymm0
; AVX512F-NEXT: vpor %ymm2, %ymm0, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: constant_funnnel_v32i16:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm2 = <u,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768>
; AVX512VL-NEXT: vpmulhuw %ymm2, %ymm1, %ymm3
; AVX512VL-NEXT: vpblendw {{.*#+}} ymm4 = ymm1[0],ymm3[1,2,3,4,5,6,7],ymm1[8],ymm3[9,10,11,12,13,14,15]
; AVX512VL-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm4 = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768]
; AVX512VL-NEXT: vpmullw %ymm4, %ymm1, %ymm1
; AVX512VL-NEXT: vpor %ymm3, %ymm1, %ymm1
; AVX512VL-NEXT: vpmulhuw %ymm2, %ymm0, %ymm2
; AVX512VL-NEXT: vpblendw {{.*#+}} ymm3 = ymm0[0],ymm2[1,2,3,4,5,6,7],ymm0[8],ymm2[9,10,11,12,13,14,15]
; AVX512VL-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
; AVX512VL-NEXT: vpmullw %ymm4, %ymm0, %ymm0
; AVX512VL-NEXT: vpor %ymm2, %ymm0, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: constant_funnnel_v32i16:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vpsrlvw {{.*}}(%rip), %zmm0, %zmm1
; AVX512BW-NEXT: vpsllvw {{.*}}(%rip), %zmm0, %zmm0
; AVX512BW-NEXT: vporq %zmm1, %zmm0, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: constant_funnnel_v32i16:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vpsrlvw {{.*}}(%rip), %zmm0, %zmm1
; AVX512VLBW-NEXT: vpsllvw {{.*}}(%rip), %zmm0, %zmm0
; AVX512VLBW-NEXT: vporq %zmm1, %zmm0, %zmm0
; AVX512VLBW-NEXT: retq
%res = call <32 x i16> @llvm.fshl.v32i16(<32 x i16> %x, <32 x i16> %x, <32 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>)
ret <32 x i16> %res
}
define <64 x i8> @constant_funnnel_v64i8(<64 x i8> %x) nounwind {
; AVX512F-LABEL: constant_funnnel_v64i8:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512F-NEXT: vpsllw $4, %ymm1, %ymm2
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm3 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
; AVX512F-NEXT: vpand %ymm3, %ymm2, %ymm2
; AVX512F-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256]
; AVX512F-NEXT: # ymm4 = mem[0,1,0,1]
; AVX512F-NEXT: vpblendvb %ymm4, %ymm2, %ymm1, %ymm2
; AVX512F-NEXT: vpsllw $2, %ymm2, %ymm5
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm6 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
; AVX512F-NEXT: vpand %ymm6, %ymm5, %ymm5
; AVX512F-NEXT: vpaddb %ymm4, %ymm4, %ymm7
; AVX512F-NEXT: vpblendvb %ymm7, %ymm5, %ymm2, %ymm2
; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm5
; AVX512F-NEXT: vpaddb %ymm7, %ymm7, %ymm8
; AVX512F-NEXT: vpblendvb %ymm8, %ymm5, %ymm2, %ymm2
; AVX512F-NEXT: vpxor %xmm5, %xmm5, %xmm5
; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm9 = ymm1[8],ymm5[8],ymm1[9],ymm5[9],ymm1[10],ymm5[10],ymm1[11],ymm5[11],ymm1[12],ymm5[12],ymm1[13],ymm5[13],ymm1[14],ymm5[14],ymm1[15],ymm5[15],ymm1[24],ymm5[24],ymm1[25],ymm5[25],ymm1[26],ymm5[26],ymm1[27],ymm5[27],ymm1[28],ymm5[28],ymm1[29],ymm5[29],ymm1[30],ymm5[30],ymm1[31],ymm5[31]
; AVX512F-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [256,128,64,32,16,8,4,2,256,128,64,32,16,8,4,2]
; AVX512F-NEXT: # ymm10 = mem[0,1,0,1]
; AVX512F-NEXT: vpmullw %ymm10, %ymm9, %ymm9
; AVX512F-NEXT: vpsrlw $8, %ymm9, %ymm9
; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0],ymm5[0],ymm1[1],ymm5[1],ymm1[2],ymm5[2],ymm1[3],ymm5[3],ymm1[4],ymm5[4],ymm1[5],ymm5[5],ymm1[6],ymm5[6],ymm1[7],ymm5[7],ymm1[16],ymm5[16],ymm1[17],ymm5[17],ymm1[18],ymm5[18],ymm1[19],ymm5[19],ymm1[20],ymm5[20],ymm1[21],ymm5[21],ymm1[22],ymm5[22],ymm1[23],ymm5[23]
; AVX512F-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128]
; AVX512F-NEXT: # ymm11 = mem[0,1,0,1]
; AVX512F-NEXT: vpmullw %ymm11, %ymm1, %ymm1
; AVX512F-NEXT: vpsrlw $8, %ymm1, %ymm1
; AVX512F-NEXT: vpackuswb %ymm9, %ymm1, %ymm1
; AVX512F-NEXT: vpor %ymm1, %ymm2, %ymm1
; AVX512F-NEXT: vpsllw $4, %ymm0, %ymm2
; AVX512F-NEXT: vpand %ymm3, %ymm2, %ymm2
; AVX512F-NEXT: vpblendvb %ymm4, %ymm2, %ymm0, %ymm2
; AVX512F-NEXT: vpsllw $2, %ymm2, %ymm3
; AVX512F-NEXT: vpand %ymm6, %ymm3, %ymm3
; AVX512F-NEXT: vpblendvb %ymm7, %ymm3, %ymm2, %ymm2
; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm3
; AVX512F-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2
; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm5[8],ymm0[9],ymm5[9],ymm0[10],ymm5[10],ymm0[11],ymm5[11],ymm0[12],ymm5[12],ymm0[13],ymm5[13],ymm0[14],ymm5[14],ymm0[15],ymm5[15],ymm0[24],ymm5[24],ymm0[25],ymm5[25],ymm0[26],ymm5[26],ymm0[27],ymm5[27],ymm0[28],ymm5[28],ymm0[29],ymm5[29],ymm0[30],ymm5[30],ymm0[31],ymm5[31]
; AVX512F-NEXT: vpmullw %ymm10, %ymm3, %ymm3
; AVX512F-NEXT: vpsrlw $8, %ymm3, %ymm3
; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm5[0],ymm0[1],ymm5[1],ymm0[2],ymm5[2],ymm0[3],ymm5[3],ymm0[4],ymm5[4],ymm0[5],ymm5[5],ymm0[6],ymm5[6],ymm0[7],ymm5[7],ymm0[16],ymm5[16],ymm0[17],ymm5[17],ymm0[18],ymm5[18],ymm0[19],ymm5[19],ymm0[20],ymm5[20],ymm0[21],ymm5[21],ymm0[22],ymm5[22],ymm0[23],ymm5[23]
; AVX512F-NEXT: vpmullw %ymm11, %ymm0, %ymm0
; AVX512F-NEXT: vpsrlw $8, %ymm0, %ymm0
; AVX512F-NEXT: vpackuswb %ymm3, %ymm0, %ymm0
; AVX512F-NEXT: vpor %ymm0, %ymm2, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: constant_funnnel_v64i8:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512VL-NEXT: vpsllw $4, %ymm1, %ymm2
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm3 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
; AVX512VL-NEXT: vpand %ymm3, %ymm2, %ymm2
; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm4 = [8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256]
; AVX512VL-NEXT: # ymm4 = mem[0,1,0,1]
; AVX512VL-NEXT: vpblendvb %ymm4, %ymm2, %ymm1, %ymm2
; AVX512VL-NEXT: vpsllw $2, %ymm2, %ymm5
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm6 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
; AVX512VL-NEXT: vpand %ymm6, %ymm5, %ymm5
; AVX512VL-NEXT: vpaddb %ymm4, %ymm4, %ymm7
; AVX512VL-NEXT: vpblendvb %ymm7, %ymm5, %ymm2, %ymm2
; AVX512VL-NEXT: vpaddb %ymm2, %ymm2, %ymm5
; AVX512VL-NEXT: vpaddb %ymm7, %ymm7, %ymm8
; AVX512VL-NEXT: vpblendvb %ymm8, %ymm5, %ymm2, %ymm2
; AVX512VL-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31]
; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5
; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [256,128,64,32,16,8,4,2,256,128,64,32,16,8,4,2]
; AVX512VL-NEXT: # ymm9 = mem[0,1,0,1]
; AVX512VL-NEXT: vpmullw %ymm9, %ymm5, %ymm5
; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5
; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23]
; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1
; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128]
; AVX512VL-NEXT: # ymm10 = mem[0,1,0,1]
; AVX512VL-NEXT: vpmullw %ymm10, %ymm1, %ymm1
; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1
; AVX512VL-NEXT: vpackuswb %ymm5, %ymm1, %ymm1
; AVX512VL-NEXT: vpor %ymm1, %ymm2, %ymm1
; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm2
; AVX512VL-NEXT: vpand %ymm3, %ymm2, %ymm2
; AVX512VL-NEXT: vpblendvb %ymm4, %ymm2, %ymm0, %ymm2
; AVX512VL-NEXT: vpsllw $2, %ymm2, %ymm3
; AVX512VL-NEXT: vpand %ymm6, %ymm3, %ymm3
; AVX512VL-NEXT: vpblendvb %ymm7, %ymm3, %ymm2, %ymm2
; AVX512VL-NEXT: vpaddb %ymm2, %ymm2, %ymm3
; AVX512VL-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2
; AVX512VL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31]
; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3
; AVX512VL-NEXT: vpmullw %ymm9, %ymm3, %ymm3
; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3
; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23]
; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0
; AVX512VL-NEXT: vpmullw %ymm10, %ymm0, %ymm0
; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0
; AVX512VL-NEXT: vpackuswb %ymm3, %ymm0, %ymm0
; AVX512VL-NEXT: vpor %ymm0, %ymm2, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: constant_funnnel_v64i8:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vbroadcasti32x4 {{.*#+}} zmm1 = [8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256]
; AVX512BW-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
; AVX512BW-NEXT: vpmovb2m %zmm1, %k1
; AVX512BW-NEXT: vpsllw $4, %zmm0, %zmm2
; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm2, %zmm2
; AVX512BW-NEXT: vpblendmb %zmm2, %zmm0, %zmm2 {%k1}
; AVX512BW-NEXT: vpsllw $2, %zmm2, %zmm3
; AVX512BW-NEXT: vpandq {{.*}}(%rip), %zmm3, %zmm3
; AVX512BW-NEXT: vpaddb %zmm1, %zmm1, %zmm1
; AVX512BW-NEXT: vpmovb2m %zmm1, %k1
; AVX512BW-NEXT: vmovdqu8 %zmm3, %zmm2 {%k1}
; AVX512BW-NEXT: vpaddb %zmm1, %zmm1, %zmm1
; AVX512BW-NEXT: vpmovb2m %zmm1, %k1
; AVX512BW-NEXT: vpaddb %zmm2, %zmm2, %zmm2 {%k1}
; AVX512BW-NEXT: vpunpckhbw {{.*#+}} zmm1 = zmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,56,56,57,57,58,58,59,59,60,60,61,61,62,62,63,63]
; AVX512BW-NEXT: vpsrlw $8, %zmm1, %zmm1
; AVX512BW-NEXT: vpsllvw {{.*}}(%rip), %zmm1, %zmm1
; AVX512BW-NEXT: vpsrlw $8, %zmm1, %zmm1
; AVX512BW-NEXT: vpunpcklbw {{.*#+}} zmm0 = zmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,48,48,49,49,50,50,51,51,52,52,53,53,54,54,55,55]
; AVX512BW-NEXT: vpsrlw $8, %zmm0, %zmm0
; AVX512BW-NEXT: vpsllvw {{.*}}(%rip), %zmm0, %zmm0
; AVX512BW-NEXT: vpsrlw $8, %zmm0, %zmm0
; AVX512BW-NEXT: vpackuswb %zmm1, %zmm0, %zmm0
; AVX512BW-NEXT: vporq %zmm0, %zmm2, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: constant_funnnel_v64i8:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vbroadcasti32x4 {{.*#+}} zmm1 = [8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256,8192,24640,41088,57536,57344,41152,24704,8256]
; AVX512VLBW-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
; AVX512VLBW-NEXT: vpmovb2m %zmm1, %k1
; AVX512VLBW-NEXT: vpsllw $4, %zmm0, %zmm2
; AVX512VLBW-NEXT: vpandq {{.*}}(%rip), %zmm2, %zmm2
; AVX512VLBW-NEXT: vpblendmb %zmm2, %zmm0, %zmm2 {%k1}
; AVX512VLBW-NEXT: vpsllw $2, %zmm2, %zmm3
; AVX512VLBW-NEXT: vpandq {{.*}}(%rip), %zmm3, %zmm3
; AVX512VLBW-NEXT: vpaddb %zmm1, %zmm1, %zmm1
; AVX512VLBW-NEXT: vpmovb2m %zmm1, %k1
; AVX512VLBW-NEXT: vmovdqu8 %zmm3, %zmm2 {%k1}
; AVX512VLBW-NEXT: vpaddb %zmm1, %zmm1, %zmm1
; AVX512VLBW-NEXT: vpmovb2m %zmm1, %k1
; AVX512VLBW-NEXT: vpaddb %zmm2, %zmm2, %zmm2 {%k1}
; AVX512VLBW-NEXT: vpunpckhbw {{.*#+}} zmm1 = zmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,56,56,57,57,58,58,59,59,60,60,61,61,62,62,63,63]
; AVX512VLBW-NEXT: vpsrlw $8, %zmm1, %zmm1
; AVX512VLBW-NEXT: vpsllvw {{.*}}(%rip), %zmm1, %zmm1
; AVX512VLBW-NEXT: vpsrlw $8, %zmm1, %zmm1
; AVX512VLBW-NEXT: vpunpcklbw {{.*#+}} zmm0 = zmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,48,48,49,49,50,50,51,51,52,52,53,53,54,54,55,55]
; AVX512VLBW-NEXT: vpsrlw $8, %zmm0, %zmm0
; AVX512VLBW-NEXT: vpsllvw {{.*}}(%rip), %zmm0, %zmm0
; AVX512VLBW-NEXT: vpsrlw $8, %zmm0, %zmm0
; AVX512VLBW-NEXT: vpackuswb %zmm1, %zmm0, %zmm0
; AVX512VLBW-NEXT: vporq %zmm0, %zmm2, %zmm0
; AVX512VLBW-NEXT: retq
%res = call <64 x i8> @llvm.fshl.v64i8(<64 x i8> %x, <64 x i8> %x, <64 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1>)
ret <64 x i8> %res
}
;
; Uniform Constant Shifts
;
define <8 x i64> @splatconstant_funnnel_v8i64(<8 x i64> %x) nounwind {
; AVX512-LABEL: splatconstant_funnnel_v8i64:
; AVX512: # %bb.0:
; AVX512-NEXT: vprolq $14, %zmm0, %zmm0
; AVX512-NEXT: retq
%res = call <8 x i64> @llvm.fshl.v8i64(<8 x i64> %x, <8 x i64> %x, <8 x i64> <i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14, i64 14>)
ret <8 x i64> %res
}
define <16 x i32> @splatconstant_funnnel_v16i32(<16 x i32> %x) nounwind {
; AVX512-LABEL: splatconstant_funnnel_v16i32:
; AVX512: # %bb.0:
; AVX512-NEXT: vprold $4, %zmm0, %zmm0
; AVX512-NEXT: retq
%res = call <16 x i32> @llvm.fshl.v16i32(<16 x i32> %x, <16 x i32> %x, <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>)
ret <16 x i32> %res
}
define <32 x i16> @splatconstant_funnnel_v32i16(<32 x i16> %x) nounwind {
; AVX512F-LABEL: splatconstant_funnnel_v32i16:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512F-NEXT: vpsrlw $9, %ymm1, %ymm2
; AVX512F-NEXT: vpsllw $7, %ymm1, %ymm1
; AVX512F-NEXT: vpor %ymm2, %ymm1, %ymm1
; AVX512F-NEXT: vpsrlw $9, %ymm0, %ymm2
; AVX512F-NEXT: vpsllw $7, %ymm0, %ymm0
; AVX512F-NEXT: vpor %ymm2, %ymm0, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: splatconstant_funnnel_v32i16:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512VL-NEXT: vpsrlw $9, %ymm1, %ymm2
; AVX512VL-NEXT: vpsllw $7, %ymm1, %ymm1
; AVX512VL-NEXT: vpor %ymm2, %ymm1, %ymm1
; AVX512VL-NEXT: vpsrlw $9, %ymm0, %ymm2
; AVX512VL-NEXT: vpsllw $7, %ymm0, %ymm0
; AVX512VL-NEXT: vpor %ymm2, %ymm0, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: splatconstant_funnnel_v32i16:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vpsrlw $9, %zmm0, %zmm1
; AVX512BW-NEXT: vpsllw $7, %zmm0, %zmm0
; AVX512BW-NEXT: vporq %zmm1, %zmm0, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: splatconstant_funnnel_v32i16:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vpsrlw $9, %zmm0, %zmm1
; AVX512VLBW-NEXT: vpsllw $7, %zmm0, %zmm0
; AVX512VLBW-NEXT: vporq %zmm1, %zmm0, %zmm0
; AVX512VLBW-NEXT: retq
%res = call <32 x i16> @llvm.fshl.v32i16(<32 x i16> %x, <32 x i16> %x, <32 x i16> <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>)
ret <32 x i16> %res
}
define <64 x i8> @splatconstant_funnnel_v64i8(<64 x i8> %x) nounwind {
; AVX512F-LABEL: splatconstant_funnnel_v64i8:
; AVX512F: # %bb.0:
; AVX512F-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512F-NEXT: vpsrlw $4, %ymm1, %ymm2
; AVX512F-NEXT: vmovdqa {{.*#+}} ymm3 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
; AVX512F-NEXT: vpandn %ymm2, %ymm3, %ymm2
; AVX512F-NEXT: vpsllw $4, %ymm1, %ymm1
; AVX512F-NEXT: vpand %ymm3, %ymm1, %ymm1
; AVX512F-NEXT: vpor %ymm2, %ymm1, %ymm1
; AVX512F-NEXT: vpsrlw $4, %ymm0, %ymm2
; AVX512F-NEXT: vpandn %ymm2, %ymm3, %ymm2
; AVX512F-NEXT: vpsllw $4, %ymm0, %ymm0
; AVX512F-NEXT: vpand %ymm3, %ymm0, %ymm0
; AVX512F-NEXT: vpor %ymm2, %ymm0, %ymm0
; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512F-NEXT: retq
;
; AVX512VL-LABEL: splatconstant_funnnel_v64i8:
; AVX512VL: # %bb.0:
; AVX512VL-NEXT: vextracti64x4 $1, %zmm0, %ymm1
; AVX512VL-NEXT: vpsrlw $4, %ymm1, %ymm2
; AVX512VL-NEXT: vpsllw $4, %ymm1, %ymm1
; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm3 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240]
; AVX512VL-NEXT: vpternlogq $226, %ymm2, %ymm3, %ymm1
; AVX512VL-NEXT: vpsrlw $4, %ymm0, %ymm2
; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm0
; AVX512VL-NEXT: vpternlogq $226, %ymm2, %ymm3, %ymm0
; AVX512VL-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
; AVX512VL-NEXT: retq
;
; AVX512BW-LABEL: splatconstant_funnnel_v64i8:
; AVX512BW: # %bb.0:
; AVX512BW-NEXT: vpsllw $4, %zmm0, %zmm1
; AVX512BW-NEXT: vpsrlw $4, %zmm0, %zmm0
; AVX512BW-NEXT: vpternlogq $216, {{.*}}(%rip), %zmm1, %zmm0
; AVX512BW-NEXT: retq
;
; AVX512VLBW-LABEL: splatconstant_funnnel_v64i8:
; AVX512VLBW: # %bb.0:
; AVX512VLBW-NEXT: vpsllw $4, %zmm0, %zmm1
; AVX512VLBW-NEXT: vpsrlw $4, %zmm0, %zmm0
; AVX512VLBW-NEXT: vpternlogq $216, {{.*}}(%rip), %zmm1, %zmm0
; AVX512VLBW-NEXT: retq
%res = call <64 x i8> @llvm.fshl.v64i8(<64 x i8> %x, <64 x i8> %x, <64 x i8> <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>)
ret <64 x i8> %res
}
|