1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 22:12:57 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
whitequark 954b2ab4fd [SelectionDAG] Fix calling convention in expansion of ?MULO.
The SMULO/UMULO DAG nodes, when not directly supported by the target,
expand to a multiplication twice as wide. In case that the resulting
type is not legal, an __mul?i3 intrinsic is used. Since the type is
not legal, the legalizer cannot directly call the intrinsic with
the wide arguments; instead, it "pre-lowers" them by splitting them
in halves.

The "pre-lowering" code in essence made assumptions about
the calling convention, specifically that i(N*2) values will be
split into two iN values and passed in consecutive registers in
little-endian order. This, naturally, breaks on a big-endian system,
such as our OR1K out-of-tree backend.

Thanks to James Miller <james@aatch.net> for help in debugging.

Differential Revision: https://reviews.llvm.org/D25223

llvm-svn: 283203
2016-10-04 09:07:49 +00:00
..
CMakeLists.txt
DAGCombiner.cpp fix formatting; NFC 2016-10-03 15:18:36 +00:00
FastISel.cpp Make analyzeBranch family of instruction names consistent 2016-09-14 17:24:15 +00:00
FunctionLoweringInfo.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
InstrEmitter.cpp Remove unnecessary call to getAllocatableRegClass 2016-09-07 06:16:45 +00:00
InstrEmitter.h
LegalizeDAG.cpp [SelectionDAG] Fix calling convention in expansion of ?MULO. 2016-10-04 09:07:49 +00:00
LegalizeFloatTypes.cpp [CodeGen] Split out the notions of MI invariance and MI dereferenceability. 2016-09-11 01:38:58 +00:00
LegalizeIntegerTypes.cpp getVectorElementType().getSizeInBits() -> getScalarSizeInBits() ; NFCI 2016-09-14 16:37:15 +00:00
LegalizeTypes.cpp getValueType().getScalarSizeInBits() -> getScalarValueSizeInBits(), round 2 ; NFCI 2016-09-14 16:54:10 +00:00
LegalizeTypes.h fix documentation comments; NFC 2016-07-09 18:52:07 +00:00
LegalizeTypesGeneric.cpp getValueType().getSizeInBits() -> getValueSizeInBits() ; NFCI 2016-09-14 16:05:51 +00:00
LegalizeVectorOps.cpp getVectorElementType().getSizeInBits() -> getScalarSizeInBits() ; NFCI 2016-09-14 16:37:15 +00:00
LegalizeVectorTypes.cpp getVectorElementType().getSizeInBits() -> getScalarSizeInBits() ; NFCI 2016-09-14 16:37:15 +00:00
LLVMBuild.txt
ResourcePriorityQueue.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
ScheduleDAGFast.cpp
ScheduleDAGRRList.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
ScheduleDAGSDNodes.cpp SelectionDAG: Avoid implicit iterator conversions in ScheduleDAGSDNodes, NFC 2016-07-08 19:07:09 +00:00
ScheduleDAGSDNodes.h
ScheduleDAGVLIW.cpp
SDNodeDbgValue.h
SelectionDAG.cpp [X86][avx512] Fix bug in masked compress store. 2016-09-26 06:22:08 +00:00
SelectionDAGBuilder.cpp Add support to optionally limit the size of jump tables. 2016-09-26 15:32:33 +00:00
SelectionDAGBuilder.h [SelectionDAGBuilder] Add const to relevant places 2016-09-01 23:35:26 +00:00
SelectionDAGDumper.cpp Add ISD::EH_DWARF_CFA, simplify @llvm.eh.dwarf.cfa on Mips, fix on PowerPC 2016-09-01 10:28:47 +00:00
SelectionDAGISel.cpp getValueType().getSizeInBits() -> getValueSizeInBits() ; NFCI 2016-09-14 16:05:51 +00:00
SelectionDAGPrinter.cpp
SelectionDAGTargetInfo.cpp
StatepointLowering.cpp getValueType().getSizeInBits() -> getValueSizeInBits() ; NFCI 2016-09-14 16:05:51 +00:00
StatepointLowering.h
TargetLowering.cpp getValueType().getSizeInBits() -> getValueSizeInBits() ; NFCI 2016-09-14 16:05:51 +00:00