llvm-6502/lib
Ulrich Weigand 7bbb9c7b4a Fix big-endian codegen bug in DAGTypeLegalizer::ExpandRes_BITCAST
On PowerPC, a bitcast of <16 x i8> to i128 may run through a code
path in ExpandRes_BITCAST that attempts to do an intermediate
bitcast to a <4 x i32> vector, and then construct the Hi and Lo parts
of the resulting i128 by pairing up two of those i32 vector elements
each.  The code already recognizes that on a big-endian system, the
first two vector elements form the Hi part, and the final two vector
elements form the Lo part (vice-versa from the little-endian situation).

However, we also need to take endianness into account when forming each
of those separate pairs:  on a big-endian system, vector element 0 is
the *high* part of the pair making up the Hi part of the result, and
vector element 1 is the low part of the pair.  The code currently always
uses vector element 0 as the low part and vector element 1 as the high
part, as is appropriate for little-endian platforms only.

This patch fixes this by swapping the vector elements as they are
paired up as appropriate.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165802 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-12 15:42:58 +00:00
..
Analysis fix warning 2012-10-12 02:04:32 +00:00
Archive
AsmParser
Bitcode Remove unnecessary classof()'s 2012-10-11 23:30:49 +00:00
CodeGen Fix big-endian codegen bug in DAGTypeLegalizer::ExpandRes_BITCAST 2012-10-12 15:42:58 +00:00
DebugInfo
ExecutionEngine Indenting. 2012-10-12 02:04:47 +00:00
Linker
MC
Object
Support Add powerpc-ibm-aix to Triple. Patch by Kai. 2012-10-12 11:08:57 +00:00
TableGen
Target Div, Rem int/unsigned int 2012-10-12 02:01:09 +00:00
Transforms PGO: create metadata for switch only if it has more than one targets. 2012-10-11 22:28:34 +00:00
VMCore Add the LLVM context to this c'tor. It will be needed in the future. 2012-10-11 01:10:00 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile