summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorVincent Lejeune <vljn@ovi.com>2013-06-06 23:08:32 +0000
committerVincent Lejeune <vljn@ovi.com>2013-06-06 23:08:32 +0000
commit0030362ed9225ec9081ef836a5ac91b420bee483 (patch)
treeee51f3d0fd2fd1ed0219e8b200d047f4581e9a58 /llvm/lib
parentfd23889e5309881267da5b70e2af89812338f096 (diff)
downloadbcm5719-llvm-0030362ed9225ec9081ef836a5ac91b420bee483.tar.gz
bcm5719-llvm-0030362ed9225ec9081ef836a5ac91b420bee483.zip
R600: Rewrite an awkward loop in R600MachineScheduler
llvm-svn: 183458
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp b/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp
index 7c4aee76dda..b122baef124 100644
--- a/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp
+++ b/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp
@@ -159,6 +159,19 @@ bool R600VectorRegMerger::tryMergeVector(const RegSeqInfo *Untouched,
return true;
}
+static
+unsigned getReassignedChan(
+ const std::vector<std::pair<unsigned, unsigned> > &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<std::pair<unsigned, unsigned> > &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)
OpenPOWER on IntegriCloud