[AMDGPU] MachineScheduler: schedule execution metric added for the UnclusteredHighRPStage
authorAlexander Timofeev <alexander.timofeev@amd.com>
Wed, 7 Dec 2022 17:36:11 +0000 (18:36 +0100)
committerAlexander Timofeev <alexander.timofeev@amd.com>
Thu, 5 Jan 2023 20:10:56 +0000 (21:10 +0100)
commit6daa983c9dde7608bcaa20b11e4a7d28fab4e003
tree50843c2f63be325720271523777aa26dad40e8e0
parentef47a0a711f12add401394f7af07a0b4d1635b56
[AMDGPU] MachineScheduler: schedule execution metric added for the UnclusteredHighRPStage

Since the divergence-driven ISel was fully enabled we have more VGPRs available.
         MachineScheduler trying to take advantage of that bumps up the occupancy sacrificing
         the hiding of memory access latency.  This really spoils the initially good schedule.
         A new metric that reflects the latency hiding quality of the schedule has been created
         to make it to balance between occupancy and latency. The metric is based on the latency
         model which computes the bubble to working cycles ratio. Then we use this ratio to decide
         if the higher occupancy schedule is profitable as follows:

             Profit = NewOccupancy/OldOccupancy * OldMetric/NewMetric

Reviewed By: rampitec

Differential Revision: https://reviews.llvm.org/D139710
llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
llvm/lib/Target/AMDGPU/GCNSchedStrategy.h
llvm/test/CodeGen/AMDGPU/load-global-i16.ll
llvm/test/CodeGen/AMDGPU/promote-constOffset-to-imm.ll