forked from OSchip/llvm-project
Use COPY for fast-isel bitconvert, but don't create cross-class copies.
This doesn't change the behavior of SelectBitcast for X86. llvm-svn: 108073
This commit is contained in:
parent
a76eccf815
commit
51642aea77
|
@ -671,13 +671,12 @@ bool FastISel::SelectBitCast(const User *I) {
|
|||
if (SrcVT.getSimpleVT() == DstVT.getSimpleVT()) {
|
||||
TargetRegisterClass* SrcClass = TLI.getRegClassFor(SrcVT);
|
||||
TargetRegisterClass* DstClass = TLI.getRegClassFor(DstVT);
|
||||
ResultReg = createResultReg(DstClass);
|
||||
|
||||
bool InsertedCopy = TII.copyRegToReg(*FuncInfo.MBB, FuncInfo.InsertPt,
|
||||
ResultReg, Op0,
|
||||
DstClass, SrcClass, DL);
|
||||
if (!InsertedCopy)
|
||||
ResultReg = 0;
|
||||
// Don't attempt a cross-class copy. It will likely fail.
|
||||
if (SrcClass == DstClass) {
|
||||
ResultReg = createResultReg(DstClass);
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(TargetOpcode::COPY),
|
||||
ResultReg).addReg(Op0);
|
||||
}
|
||||
}
|
||||
|
||||
// If the reg-reg copy failed, select a BIT_CONVERT opcode.
|
||||
|
|
Loading…
Reference in New Issue