teak-llvm/llvm/lib/CodeGen/SelectionDAG
Sander de Smalen 67d4c9924c Add support for (expressing) vscale.
In LLVM IR, vscale can be represented with an intrinsic. For some targets,
this is equivalent to the constexpr:

  getelementptr <vscale x 1 x i8>, <vscale x 1 x i8>* null, i32 1

This can be used to propagate the value in CodeGenPrepare.

In ISel we add a node that can be legalized to one or more
instructions to materialize the runtime vector length.

This patch also adds SVE CodeGen support for VSCALE, which maps this
node to RDVL instructions (for scaled multiples of 16bytes) or CNT[HSD]
instructions (scaled multiples of 2, 4, or 8 bytes, respectively).

Reviewers: rengolin, cameron.mcinally, hfinkel, sebpop, SjoerdMeijer, efriedma, lattner

Reviewed by: efriedma

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68203
2020-01-22 10:09:27 +00:00
..
CMakeLists.txt [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
DAGCombiner.cpp [DAG] Fold extract_vector_elt (scalar_to_vector), K to undef (K != 0) 2020-01-21 10:58:30 +00:00
FastISel.cpp [FastISel] Lower llvm.dbg.value(undef, ... correctly. 2020-01-16 16:22:20 -08:00
FunctionLoweringInfo.cpp [AArch64][SVE] Allocate locals that are scalable vectors. 2019-11-13 09:45:24 +00:00
InstrEmitter.cpp [WebAssembly][InstrEmitter] Foundation for multivalue call lowering 2020-01-21 11:13:46 -08:00
InstrEmitter.h
LegalizeDAG.cpp [DAG] Add helper for creating constant vector index with correct type. NFC. 2020-01-18 01:23:36 -05:00
LegalizeFloatTypes.cpp [LegalizeTypes] Add SoftenFloatResult support for STRICT_SINT_TO_FP/STRICT_UINT_TO_FP 2020-01-14 01:01:56 +08:00
LegalizeIntegerTypes.cpp Add support for (expressing) vscale. 2020-01-22 10:09:27 +00:00
LegalizeTypes.cpp [LegalizeTypes] Remove manual worklist management from SoftenFloatRes_FP_EXTEND. 2019-12-10 22:33:31 -08:00
LegalizeTypes.h Add support for (expressing) vscale. 2020-01-22 10:09:27 +00:00
LegalizeTypesGeneric.cpp [DAG] Add helper for creating constant vector index with correct type. NFC. 2020-01-18 01:23:36 -05:00
LegalizeVectorOps.cpp [DAG] Add helper for creating constant vector index with correct type. NFC. 2020-01-18 01:23:36 -05:00
LegalizeVectorTypes.cpp [DAG] Add helper for creating constant vector index with correct type. NFC. 2020-01-18 01:23:36 -05:00
LLVMBuild.txt
ResourcePriorityQueue.cpp
ScheduleDAGFast.cpp Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 2019-08-01 23:27:28 +00:00
ScheduleDAGRRList.cpp [ScheduleDAG] When a node is cloned, add an edge between the nodes. 2019-10-04 19:51:40 +00:00
ScheduleDAGSDNodes.cpp Revert "[PHIEliminate] Move dbg values after phi and label" 2020-01-16 14:01:27 +00:00
ScheduleDAGSDNodes.h Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
ScheduleDAGVLIW.cpp Prune Analysis includes from SelectionDAG.h 2019-10-19 01:07:48 +00:00
SDNodeDbgValue.h
SelectionDAG.cpp Add support for (expressing) vscale. 2020-01-22 10:09:27 +00:00
SelectionDAGAddressAnalysis.cpp Prune a LegacyDivergenceAnalysis and MachineLoopInfo include each 2019-10-19 01:31:09 +00:00
SelectionDAGBuilder.cpp Add support for (expressing) vscale. 2020-01-22 10:09:27 +00:00
SelectionDAGBuilder.h [FPEnv] Fix chain handling regression after 04a8696 2020-01-14 14:10:57 +01:00
SelectionDAGDumper.cpp Add support for (expressing) vscale. 2020-01-22 10:09:27 +00:00
SelectionDAGISel.cpp DAG: Don't use unchecked dyn_cast 2020-01-09 17:37:52 -05:00
SelectionDAGPrinter.cpp
SelectionDAGTargetInfo.cpp
StatepointLowering.cpp [SVE][CodeGen] Scalable vector MVT size queries 2019-11-18 12:30:59 +00:00
StatepointLowering.h
TargetLowering.cpp [TargetLowering] SimplifyDemandedBits ISD::SRA multi-use handling 2020-01-21 15:12:07 +00:00