diff options
author | Vincent Lejeune <vljn@ovi.com> | 2013-04-03 16:49:34 +0000 |
---|---|---|
committer | Vincent Lejeune <vljn@ovi.com> | 2013-04-03 16:49:34 +0000 |
commit | 80031d9fc45f9d647a1462d74a44d8070da672bb (patch) | |
tree | b8ccebb6de14e419919374a470794086f3fa6412 | |
parent | edc03c660cc7d7fd2c45cf3ca5f5c9a8754bef98 (diff) | |
download | bcm5719-llvm-80031d9fc45f9d647a1462d74a44d8070da672bb.tar.gz bcm5719-llvm-80031d9fc45f9d647a1462d74a44d8070da672bb.zip |
R600: Factorize maximum alu per clause in a single location
llvm-svn: 178667
-rw-r--r-- | llvm/lib/Target/R600/R600EmitClauseMarkers.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/R600/R600InstrInfo.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Target/R600/R600InstrInfo.h | 1 | ||||
-rw-r--r-- | llvm/lib/Target/R600/R600MachineScheduler.cpp | 2 |
4 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp b/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp index bda3703af7f..06cf8ac6c42 100644 --- a/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp +++ b/llvm/lib/Target/R600/R600EmitClauseMarkers.cpp @@ -201,7 +201,7 @@ private: !SubstituteKCacheBank(I, KCacheBanks)) break; AluInstCount += OccupiedDwords(I); - if (AluInstCount > 124) + if (AluInstCount > TII->getMaxAlusPerClause()) break; } unsigned Opcode = PushBeforeModifier ? diff --git a/llvm/lib/Target/R600/R600InstrInfo.cpp b/llvm/lib/Target/R600/R600InstrInfo.cpp index 08650980fd5..b232188a264 100644 --- a/llvm/lib/Target/R600/R600InstrInfo.cpp +++ b/llvm/lib/Target/R600/R600InstrInfo.cpp @@ -645,6 +645,9 @@ const TargetRegisterClass *R600InstrInfo::getSuperIndirectRegClass() const { return &AMDGPU::IndirectRegRegClass; } +unsigned R600InstrInfo::getMaxAlusPerClause() const { + return 115; +} MachineInstrBuilder R600InstrInfo::buildDefaultInstruction(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, diff --git a/llvm/lib/Target/R600/R600InstrInfo.h b/llvm/lib/Target/R600/R600InstrInfo.h index bf9569e6598..dbae90013d2 100644 --- a/llvm/lib/Target/R600/R600InstrInfo.h +++ b/llvm/lib/Target/R600/R600InstrInfo.h @@ -145,6 +145,7 @@ namespace llvm { virtual const TargetRegisterClass *getSuperIndirectRegClass() const; + unsigned getMaxAlusPerClause() const; ///buildDefaultInstruction - This function returns a MachineInstr with /// all the instruction modifiers initialized to their default values. diff --git a/llvm/lib/Target/R600/R600MachineScheduler.cpp b/llvm/lib/Target/R600/R600MachineScheduler.cpp index 9074364bb3a..a777142a9e7 100644 --- a/llvm/lib/Target/R600/R600MachineScheduler.cpp +++ b/llvm/lib/Target/R600/R600MachineScheduler.cpp @@ -37,7 +37,7 @@ void R600SchedStrategy::initialize(ScheduleDAGMI *dag) { CurInstKind = IDOther; CurEmitted = 0; OccupedSlotsMask = 15; - InstKindLimit[IDAlu] = 120; // 120 minus 8 for security + InstKindLimit[IDAlu] = TII->getMaxAlusPerClause(); const AMDGPUSubtarget &ST = DAG->TM.getSubtarget<AMDGPUSubtarget>(); |