mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-12 22:26:14 +00:00
Use COPY for fast-isel bitconvert, but don't create cross-class copies.
This doesn't change the behavior of SelectBitcast for X86. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108073 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cbeeae23c3
commit
e7917bb207
@ -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
Block a user