Deleted Added
full compact
LegalizeTypesGeneric.cpp (193323) LegalizeTypesGeneric.cpp (193724)
1//===-------- LegalizeTypesGeneric.cpp - Generic type legalization --------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 78 unchanged lines hidden (view full) ---

87 if (TLI.isBigEndian())
88 std::swap(Lo, Hi);
89 Lo = DAG.getNode(ISD::BIT_CONVERT, dl, NOutVT, Lo);
90 Hi = DAG.getNode(ISD::BIT_CONVERT, dl, NOutVT, Hi);
91 return;
92 }
93 }
94
1//===-------- LegalizeTypesGeneric.cpp - Generic type legalization --------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 78 unchanged lines hidden (view full) ---

87 if (TLI.isBigEndian())
88 std::swap(Lo, Hi);
89 Lo = DAG.getNode(ISD::BIT_CONVERT, dl, NOutVT, Lo);
90 Hi = DAG.getNode(ISD::BIT_CONVERT, dl, NOutVT, Hi);
91 return;
92 }
93 }
94
95 if (InVT.isVector() && OutVT.isInteger()) {
96 // Handle cases like i64 = BIT_CONVERT v1i64 on x86, where the operand
97 // is legal but the result is not.
98 MVT NVT = MVT::getVectorVT(TLI.getTypeToTransformTo(OutVT), 2);
99
100 if (isTypeLegal(NVT)) {
101 SDValue CastInOp = DAG.getNode(ISD::BIT_CONVERT, dl, NVT, InOp);
102 MVT EltNVT = NVT.getVectorElementType();
103 Lo = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, EltNVT, CastInOp,
104 DAG.getIntPtrConstant(0));
105 Hi = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, EltNVT, CastInOp,
106 DAG.getIntPtrConstant(1));
107
108 if (TLI.isBigEndian())
109 std::swap(Lo, Hi);
110
111 return;
112 }
113 }
114
95 // Lower the bit-convert to a store/load from the stack.
96 assert(NOutVT.isByteSized() && "Expanded type not byte sized!");
97
98 // Create the stack frame object. Make sure it is aligned for both
99 // the source and expanded destination types.
100 unsigned Alignment =
101 TLI.getTargetData()->getPrefTypeAlignment(NOutVT.getTypeForMVT());
102 SDValue StackPtr = DAG.CreateStackTemporary(InVT, Alignment);

--- 351 unchanged lines hidden ---
115 // Lower the bit-convert to a store/load from the stack.
116 assert(NOutVT.isByteSized() && "Expanded type not byte sized!");
117
118 // Create the stack frame object. Make sure it is aligned for both
119 // the source and expanded destination types.
120 unsigned Alignment =
121 TLI.getTargetData()->getPrefTypeAlignment(NOutVT.getTypeForMVT());
122 SDValue StackPtr = DAG.CreateStackTemporary(InVT, Alignment);

--- 351 unchanged lines hidden ---