From: Vincent Lejeune Date: Thu, 6 Jun 2013 23:08:32 +0000 (+0000) Subject: R600: Rewrite an awkward loop in R600MachineScheduler X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=81c5d11c25690cdb6282eb0ceb79f487325ce1e6;p=oota-llvm.git R600: Rewrite an awkward loop in R600MachineScheduler git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183458 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/R600/R600OptimizeVectorRegisters.cpp b/lib/Target/R600/R600OptimizeVectorRegisters.cpp index 7c4aee76dda..b122baef124 100644 --- a/lib/Target/R600/R600OptimizeVectorRegisters.cpp +++ b/lib/Target/R600/R600OptimizeVectorRegisters.cpp @@ -159,6 +159,19 @@ bool R600VectorRegMerger::tryMergeVector(const RegSeqInfo *Untouched, return true; } +static +unsigned getReassignedChan( + const std::vector > &RemapChan, + unsigned Chan) { + for (unsigned j = 0, je = RemapChan.size(); j < je; j++) { + if (RemapChan[j].first == Chan) { + return RemapChan[j].second; + break; + } + } + llvm_unreachable("Chan wasn't reassigned"); +} + MachineInstr *R600VectorRegMerger::RebuildVector( RegSeqInfo *RSI, const RegSeqInfo *BaseRSI, const std::vector > &RemapChan) const { @@ -179,13 +192,8 @@ MachineInstr *R600VectorRegMerger::RebuildVector( unsigned DstReg = MRI->createVirtualRegister(&AMDGPU::R600_Reg128RegClass); unsigned SubReg = (*It).first; unsigned Swizzle = (*It).second; - unsigned Chan = 0xDEADBEEF; - for (unsigned j = 0, je = RemapChan.size(); j < je; j++) { - if (RemapChan[j].first == Swizzle) { - Chan = RemapChan[j].second; - break; - } - } + unsigned Chan = getReassignedChan(RemapChan, Swizzle); + MachineInstr *Tmp = BuildMI(MBB, Pos, DL, TII->get(AMDGPU::INSERT_SUBREG), DstReg) .addReg(SrcVec)