llvm-project/llvm/lib/IR
Craig Topper 39e63bd2d8 [IR][CostModel] A scalable vector shuffle can't be an identity or reverse shuffle.
Even if the minimum number of elements is 1 and the length doesn't change,
we don't know what vscale is so we can't classify it as identity mask. Instead it
is a zero element splat.

For reverse, we shouldn't classify it as a reverse unless there are at least 2 elements
in the mask. This applies to both fixed and scalable vectors. For fixed vectors, a single
element would be an identity shuffle. For scalable vector it's a zero elt splat.

Reviewed By: sdesmalen, liaolucy

Differential Revision: https://reviews.llvm.org/D124655
2022-05-09 21:37:25 -07:00
..
AbstractCallSite.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
AsmWriter.cpp Add PointerType analysis for DirectX backend 2022-04-25 17:49:43 -05:00
Assumptions.cpp [Attributor][OpenMP] Add assumption for non-call assembly instructions 2022-03-28 20:57:52 -05:00
AttributeImpl.h Extend the `uwtable` attribute with unwind table kind 2022-02-14 14:35:02 +00:00
Attributes.cpp [ArgPromotion][Attributor] Update min-legal-vector-width when do promotion 2022-05-02 14:13:05 +08:00
AutoUpgrade.cpp [AutoUpgrade] Don't lose attributes when upgrading mem intrinsics 2022-04-13 09:30:10 +00:00
BasicBlock.cpp Move BasicBlock::getTerminator definition to the header 2022-04-05 13:11:38 -07:00
BuiltinGCs.cpp [llvm] Use = default (NFC) 2022-02-06 22:18:35 -08:00
CMakeLists.txt [VP] Introducing VectorBuilder, the VP intrinsic builder 2022-03-07 10:02:07 +01:00
Comdat.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
ConstantFold.cpp [ConstantFold] Use getFltSemantics instead of manually checking the type 2022-05-05 15:52:19 +02:00
ConstantFold.h [ConstantFolding] Use ICmpInst::Predicate instead of plain integer 2021-12-30 14:31:44 +07:00
ConstantRange.cpp [ConstantRange] Add exact union/intersect (NFC) 2021-11-07 21:46:06 +01:00
Constants.cpp [IR] Simplify code. NFCI. 2022-05-05 16:06:59 +02:00
ConstantsContext.h
Core.cpp [CAPI] Expose CastInst::getCastOpcode in C API 2022-04-30 18:40:04 -04:00
DIBuilder.cpp [DebugInfo] Add a TargetFuncName field in DISubprogram for 2022-04-15 16:38:23 -04:00
DataLayout.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
DebugInfo.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
DebugInfoMetadata.cpp [DebugInfo] Add a TargetFuncName field in DISubprogram for 2022-04-15 16:38:23 -04:00
DebugLoc.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
DiagnosticHandler.cpp
DiagnosticInfo.cpp [misexpect] Re-implement MisExpect Diagnostics 2022-04-19 21:23:48 +00:00
DiagnosticPrinter.cpp [IR] Fix a few incorrect paths in file header comments. NFC 2021-10-15 09:18:57 -07:00
Dominators.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
FPEnv.cpp [iwyu] Fix some header include regression 2022-04-05 15:02:03 +02:00
Function.cpp [IR] Require intrinsic struct return type to be anonymous 2022-03-30 09:51:24 +02:00
GCStrategy.cpp
GVMaterializer.cpp [llvm] Use = default (NFC) 2022-02-06 22:18:35 -08:00
Globals.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
IRBuilder.cpp [llvm] Use = default (NFC) 2022-02-06 22:18:35 -08:00
IRPrintingPasses.cpp
InlineAsm.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
Instruction.cpp [SCCP][IR] Landing pads are not safe to remove 2022-03-14 14:59:32 +01:00
Instructions.cpp [IR][CostModel] A scalable vector shuffle can't be an identity or reverse shuffle. 2022-05-09 21:37:25 -07:00
IntrinsicInst.cpp [VP] Add more cast VPintrinsic and docs. 2022-04-01 09:16:10 +08:00
LLVMContext.cpp Add PointerType analysis for DirectX backend 2022-04-25 17:49:43 -05:00
LLVMContextImpl.cpp [LLVMContext] Replace enableOpaquePointers() with setOpaquePointers() 2022-04-05 12:02:48 +02:00
LLVMContextImpl.h Add PointerType analysis for DirectX backend 2022-04-25 17:49:43 -05:00
LLVMRemarkStreamer.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
LegacyPassManager.cpp [LegacyPassManager] Move structural hashing into Pass classes. NFC. 2022-03-17 09:51:12 +00:00
MDBuilder.cpp
Mangler.cpp [Mangler] Mangle aliases to fastcall/vectorcall functions correctly 2022-02-25 22:06:47 +00:00
Metadata.cpp Don't replace Undef with null value for Constants Differential Revision:https://reviews.llvm.org/D124098 2022-04-25 20:50:00 -04:00
MetadataImpl.h
Module.cpp Apply clang-tidy fixes for readability-redundant-member-init in Module.cpp (NFC) 2022-03-28 09:18:27 -07:00
ModuleSummaryIndex.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
Operator.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
OptBisect.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
Pass.cpp [LegacyPassManager] Move structural hashing into Pass classes. NFC. 2022-03-17 09:51:12 +00:00
PassInstrumentation.cpp
PassManager.cpp Revert "[PassManager] Add pretty stack entries before P->run() call." 2022-03-09 18:46:32 +00:00
PassRegistry.cpp
PassTimingInfo.cpp [LLVM][NFC]Inclusive language: remove occurances of sanity check/test from llvm 2021-11-24 17:29:55 -05:00
PrintPasses.cpp
ProfileSummary.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
PseudoProbe.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
ReplaceConstant.cpp [NFC] Remove unnecessary "#include"s from header files 2022-02-23 01:20:48 -08:00
SSAContext.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
SafepointIRVerifier.cpp [Safepoint Verifier] Add a missed comment to previous commit. 2022-02-15 12:21:33 +07:00
Statepoint.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
StructuralHash.cpp
SymbolTableListTraitsImpl.h
Type.cpp Cleanup header dependencies in LLVMCore 2022-02-02 06:54:20 +01:00
TypeFinder.cpp [IR] Support ifuncs in opaque pointer mode 2022-01-27 13:01:33 +01:00
Use.cpp [IR] Remove unused forward declarations (NFC) 2022-04-03 12:54:54 -07:00
User.cpp [CSSPGO] Unblock optimizations with pseudo probe instrumentation part 3. 2021-10-12 09:44:12 -07:00
Value.cpp Value::isTransitiveUsedByMetadataOnly: Don't repeatedly add an element to the worklist. NFC 2022-04-11 13:35:25 -07:00
ValueSymbolTable.cpp
VectorBuilder.cpp [VP] Introducing VectorBuilder, the VP intrinsic builder 2022-03-07 10:02:07 +01:00
Verifier.cpp Revert "[asan] Emit .size directive for global object size before redzone" 2022-04-21 16:21:17 -07:00