mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
Fix EXTRACT_ELEMENT, EXTRACT_SUBVECTOR, and EXTRACT_VECTOR_ELT to
use an intptr ValueType instead of i32 for the index operand in getCopyToParts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40987 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
594d37e21a
commit
25ac7e8364
@ -718,6 +718,8 @@ static void getCopyToParts(SelectionDAG &DAG,
|
||||
SDOperand *Parts,
|
||||
unsigned NumParts,
|
||||
MVT::ValueType PartVT) {
|
||||
TargetLowering &TLI = DAG.getTargetLoweringInfo();
|
||||
MVT::ValueType PtrVT = TLI.getPointerTy();
|
||||
MVT::ValueType ValueVT = Val.getValueType();
|
||||
|
||||
if (!MVT::isVector(ValueVT) || NumParts == 1) {
|
||||
@ -725,7 +727,7 @@ static void getCopyToParts(SelectionDAG &DAG,
|
||||
if (NumParts > 1) {
|
||||
for (unsigned i = 0; i != NumParts; ++i)
|
||||
Parts[i] = DAG.getNode(ISD::EXTRACT_ELEMENT, PartVT, Val,
|
||||
DAG.getConstant(i, MVT::i32));
|
||||
DAG.getConstant(i, PtrVT));
|
||||
if (!DAG.getTargetLoweringInfo().isLittleEndian())
|
||||
std::reverse(Parts, Parts + NumParts);
|
||||
return;
|
||||
@ -776,11 +778,11 @@ static void getCopyToParts(SelectionDAG &DAG,
|
||||
Ops[i] = DAG.getNode(ISD::EXTRACT_SUBVECTOR,
|
||||
IntermediateVT, Val,
|
||||
DAG.getConstant(i * (NumElements / NumIntermediates),
|
||||
MVT::i32));
|
||||
PtrVT));
|
||||
else
|
||||
Ops[i] = DAG.getNode(ISD::EXTRACT_VECTOR_ELT,
|
||||
IntermediateVT, Val,
|
||||
DAG.getConstant(i, MVT::i32));
|
||||
DAG.getConstant(i, PtrVT));
|
||||
|
||||
// Split the intermediate operands into legal parts.
|
||||
if (NumParts == NumIntermediates) {
|
||||
|
11
test/CodeGen/X86/insertelement-copytoregs.ll
Normal file
11
test/CodeGen/X86/insertelement-copytoregs.ll
Normal file
@ -0,0 +1,11 @@
|
||||
; RUN: llvm-as < %s | llc -march=x86-64 | grep -v IMPLICIT_DEF
|
||||
|
||||
define void @foo(<2 x float>* %p) {
|
||||
%t = insertelement <2 x float> undef, float 0.0, i32 0
|
||||
%v = insertelement <2 x float> %t, float 0.0, i32 1
|
||||
br label %bb8
|
||||
|
||||
bb8:
|
||||
store <2 x float> %v, <2 x float>* %p
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user