[PATCH] D105104: [AMDGPU] PHI node cost should not be counted for the size and latency.

Alexander via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 29 05:27:39 PDT 2021


alex-t created this revision.
alex-t added reviewers: rampitec, dfukalov.
Herald added subscribers: foad, kerbowa, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, kzhuravl, arsenm.
alex-t requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.

  Details: https://reviews.llvm.org/D96805 changed the GCNTTIImpl::getCFInstrCost to return 1 for the PHI nodes
  for the TTI::TCK_CodeSize and TTI::TCK_SizeAndLatency. This is incorrect because the value moves that are the
  result of the PHI lowering are inserted into the basic block predecessors - not into the block itself.
  As a result of this change LoopRotate and LoopUnroll were broken because of the incorrect Loop header and loop
  body size/cost estimation.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D105104

Files:
  llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
  llvm/test/Analysis/CostModel/AMDGPU/control-flow.ll


Index: llvm/test/Analysis/CostModel/AMDGPU/control-flow.ll
===================================================================
--- llvm/test/Analysis/CostModel/AMDGPU/control-flow.ll
+++ llvm/test/Analysis/CostModel/AMDGPU/control-flow.ll
@@ -4,11 +4,9 @@
 ; ALL-LABEL: 'test_br_cost'
 ; SPEED: estimated cost of 7 for instruction: br i1
 ; SPEED: estimated cost of 4 for instruction: br label
-; SPEED: estimated cost of 1 for instruction: %phi = phi i32 [
 ; SPEED: estimated cost of 10 for instruction: ret void
 ; SIZE: estimated cost of 5 for instruction: br i1
 ; SIZE: estimated cost of 1 for instruction: br label
-; SIZE: estimated cost of 1 for instruction: %phi = phi i32 [
 ; SIZE: estimated cost of 1 for instruction: ret void
 define amdgpu_kernel void @test_br_cost(i32 addrspace(1)* %out, i32 addrspace(1)* %vaddr, i32 %b) #0 {
 bb0:
Index: llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
@@ -837,10 +837,6 @@
   }
   case Instruction::Ret:
     return SCost ? 1 : 10;
-  case Instruction::PHI:
-    // TODO: 1. A prediction phi won't be eliminated?
-    //       2. Estimate data copy instructions in this case.
-    return 1;
   }
   return BaseT::getCFInstrCost(Opcode, CostKind, I);
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D105104.355186.patch
Type: text/x-patch
Size: 1393 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210629/cf0bfd13/attachment.bin>


More information about the llvm-commits mailing list